我有一张电子表格,其中有3张不同的纸张,每张纸张都标有A列“价格(买入价)”和B栏“价格(卖出)”。
我想用函数计算“Price(sell)”列,但我找不到将其扩展到新行的方法。
我已尝试使用ArrayFormula但无法让它向函数发送新行,并且每次只返回相同的结果。下面是我尝试过的ArrayFormula之一。
=ArrayFormula(iferror(if(A:A="";;if(row(B:B)=1;"Price (sell)";if(isblank(A:A)=False;sell_price($A2))))))
但是,无论A列的价格如何,每行只返回20个。
有关如何运作的示例:
该功能会有所不同,所以这仅仅是为了举例。
function sell_price(price) {
return price + 10;
}
有没有办法让这个工作在所有3张不同的纸张上并自动扩展到3张纸张中添加的新行?如果有任何不同,这些信息将通过API来自脚本。
答案 0 :(得分:2)
似乎你的公式中有一个小小的错误,而不是引用整个列,你只引用单元格$A2
。
如果您将$A2
更改为A:A
,则应该有效。 :)
修改强>
为了补充这一点,似乎您的sell_price()
函数目前无法处理多个单元格。你可以做的是为它编写一个包装函数,它循环你输入的范围内的每个单元格,并为它们进行计算。以下示例。
function wrapper(values) {
// creates an empty array
var returnValue = [];
// loops over every value in values in order
for (var index = 0; index < values.length; index = index + 1) {
// applies the formula
returnValue[index] = sell_price(values[index][0]);
}
// outputs the scores of all the cells
return returnValue;
}
function sell_price(value) {
return value + 10;
}
然后你可以简单地在电子表格中调用包装函数而不是sell_price()
,它应该可以正常工作,即wrapper(A:A)
。