This example demonstrates how to iterate over array inputs.
// Function: MySum
// Returns: double
// Description: Returns the sum of numeric cells in the input range
//{{XLP_SRC(MySum)
// NOTE - the FunctionWizard will add and remove mapping code here.
// DO NOT EDIT what you see in these blocks of generated code!
IMPLEMENT_XLLFN2(MySum, "BP", "MySum", "Input", "User Defined",
"Returns the sum of numeric cells in the input range",
"Input range\000", "\0", 1)
extern "C" __declspec( dllexport )
double MySum(const COper* lpopInput)
{
//}}XLP_SRC
// Initialise total
double dSum = 0.0;
// Get the size of the array
unsigned short cRows, cCols;
lpopInput->GetDims(cRows, cCols);
// Iterate through array, summing the values of cells
for ( unsigned short i = 0; i < cRows; i++ )
{
for ( unsigned short j = 0; j < cCols; j++ )
{
const COper& opItem = lpopInput->Cell(i, j);
if ( opItem.IsDouble() )
dSum += opItem.ToDouble();
}
}
return dSum;
}
COper::GetDims | COper::Cell | COper::IsDouble | COper::ToDouble