我如何一次传递一个单元格,例如(A1; B1; C1)或数组(A1:C1)与Excel的XLL文件的C函数相同?

时间:2014-04-24 15:28:55

标签: excel function parameters xll

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

无论哪种方式,我都知道。

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

2)Calc(xl_array p_array *)

任何帮助将不胜感激。

感谢。

2 个答案:

答案 0 :(得分:0)

一种可能的方法是使用xloper12类型并检查参数是否为array,single值或empty类型。

*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
...

答案 1 :(得分:-1)

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

SUM(Rg1,Rg2,Rg3,...)

然后你的两个例子是:(a)3个范围,每个1个细胞,和(b)1个范围的3个细胞。

[回应未注释的downvote。 ]

尝试

3)Calc(xl_array p_array1 *,xl_array p_array2 *,xl_array p_array3 *,xl_array p_array4 *)

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