我试图在Google Spreadsheets中创建函数时尝试使用If语句。
我提供了一个我想要实现的目标的例子。据我所知,此代码中的If语句只检查单元格A4的值是否等于4,如果是,那么它将输入数字乘以1.5?但是,当我尝试运行该函数时,它总是返回0(或者我开始分配价格变量的任何值)。
非常感谢任何帮助。
非常感谢
function calculatePrice(inNum) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var price = 0;
if (sheet.getRange(1, 4).getValue() == 4) {
price = inNum * 1.5;
}
return price;
}
答案 0 :(得分:1)
你走了。 你错过了getDataRange,之后就可以获得单元格了。
function calculatePrice(inNum) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var price = 0;
if (sheet.getDataRange().getCell(row, col).getValue() == 4) {
price = inNum * 1.5;
}
return price;
}
的演示
答案 1 :(得分:1)
正如T.J.Crowder所发现的,接受的答案有一个关键的弱点。自定义函数取决于A4
中的值,但在更改该值时不会自动更新。
为什么呢?作为优化步骤,Sheets将仅刷新它确定受编辑影响的单元格。但是,它不会分析自定义函数的内部结构,而是依赖于电子表格公式中的范围引用参数。
如果您的函数响应A4
中的更改很重要,那么最好将其实现为接受importantFactor
作为参数,因此:
function calculatePrice(importantFactor,inNum) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var price = 0;
if (importantFactor == 4) {
price = inNum * 1.5;
}
return price;
}
要像这样使用,假设inNum
是G6
中的值:
=calculatePrice($A$4,G6)
更好的是,你可以在没有脚本的情况下实现这一目标:
=IF($A$4=4, G6 * 1.5, 0)
无论哪种方式,对A4
内容的更改都会触发重新计算包含公式的单元格。