0

我想以两种方式将参数传递给函数,就像 Excel 中的 Sum 函数一样。例如。= SUM (A1, B1, C1) 或 SUM (A1: C1)。

无论哪种方式,分开,我知道。

1) Calc (双 fstNum, 双 secNum, 双 thdNum, 双 fthNum)

2) 计算 (xl_array p_array *)

任何帮助将不胜感激。

谢谢。

4

2 回答 2

0

一种可能的方法是使用 xloper12 类型并检查参数是否为数组、单值或空类型。

*calc (xloper12* arg1, xloper12* arg2, xloper12* arg3){

double sum = 0;

// check first arg if empty
if (!(arg1->xltype & (arg1| xltypeNil))){   

    // check if arg is array
    if ( arg1->xltype == xltypeMulti){
        // for loop - summing the array values 
    } 
    // single value
    else {
        sum += arg1->val.num;
    }
}    
// check next arg and do the same
...
于 2016-07-01T23:12:47.443 回答
-1

将 SUM(...) 视为对单元格范围进行操作可能会有所帮助:

总和(Rg1,Rg2,Rg3,...)

那么您的两个示例是:(a)3 个范围,每个范围 1 个单元格,(b)1 个范围,每个范围 3 个单元格。

[回应未评论的反对票。]

尝试

3) 计算 (xl_array p_array1 *, xl_array p_array2 *, xl_array p_array3 *, xl_array p_array4 *)

没有什么(当然!)这些数组可以是二维的。

于 2014-09-03T00:06:45.413 回答