我想将参数传递给两种方式的函数,就像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 *)
任何帮助将不胜感激。
感谢。
答案 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 *)
没有(当然!)这些数组可以是二维的。