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