我想以两种方式将参数传递给函数,就像 Excel 中的 Sum 函数一样。例如。= SUM (A1, B1, C1) 或 SUM (A1: C1)。
无论哪种方式,分开,我知道。
1) Calc (双 fstNum, 双 secNum, 双 thdNum, 双 fthNum)
2) 计算 (xl_array p_array *)
任何帮助将不胜感激。
谢谢。
我想以两种方式将参数传递给函数,就像 Excel 中的 Sum 函数一样。例如。= SUM (A1, B1, C1) 或 SUM (A1: C1)。
无论哪种方式,分开,我知道。
1) Calc (双 fstNum, 双 secNum, 双 thdNum, 双 fthNum)
2) 计算 (xl_array p_array *)
任何帮助将不胜感激。
谢谢。
一种可能的方法是使用 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
...
将 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 *)
没有什么(当然!)这些数组可以是二维的。