例如,当使用 = DOUBLE(A1:B1)
时,<$ c $
$ b 在确认 input
是数组后,需要计算它。上面反映的修改如下。
From:
return input * 2;
收件人:
return Array.isArray(input)? input.map(function(e){return e.map(function(f){return f * 2})}):input * 2;
注意:
示例使用if和for循环编写,如下所示。
if(Array.isArray(input) ){
var result = [];
for(var i = 0; i< input.length; i ++){
var temp = []; (var j = 0; j< input [i] .length; j ++){
temp.push(input [i] [j] * 2)的
;
}
result.push(temp);
}
返回结果;
} else {
return input * 2;
}
如果我误解了您的问题,我很抱歉。
i followed the posthttps://developers.google.com/apps-script/guides/sheets/functions
function DOUBLE(input) {
return input * 2;
}
and copied the very simple DOUBLE function into my app-script.
=double(A1)
is working and double my integer in 'A1'But when i filled column A with values, like
A1 = 2
A2 = 3
A3 = 4
....
And in B1 cell, i run
=arrayformula(double(A1:A))
it returned error "Result was not a number", #NUM!
I am not sure what goes wrong. Could any app-script gurus helps?
Thanks
解决方案
How about this answer?
- For example, when
=DOUBLE(A1)
is used, the value of input
of DOUBLE(input)
is retrieved as a number or a string (in your case, it's a number.). - For example, when
=DOUBLE(A1:B1)
is used, the values of input
of DOUBLE(input)
are retrieved as 2 dimensional array.
It is required to calculate after it confirmed whether input
is array. The modification which reflected above is as follows.
From :
return input * 2;
To :
return Array.isArray(input) ? input.map(function(e){return e.map(function(f){return f * 2})}) : input * 2;
Note :
When the above modified sample is written using "if" and "for loop", it becomes as follows.
if (Array.isArray(input)) {
var result = [];
for (var i = 0; i < input.length; i++) {
var temp = [];
for (var j = 0; j < input[i].length; j++) {
temp.push(input[i][j] * 2);
}
result.push(temp);
}
return result;
} else {
return input * 2;
}
If I misunderstand your question, I'm sorry.
这篇关于自定义函数不适用于ArrayFormula的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!