3

我正在尝试在 Google 电子表格中创建函数时如何使用 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;
     }
4

2 回答 2

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;
}

电子表格演示

于 2013-10-02T17:24:46.027 回答
1

正如 TJCrowder 所发现的,公认的答案有一个严重的弱点。自定义函数依赖于 中的值A4,但它不会在该值更改时自动更新。

为什么?作为优化步骤,表格将仅刷新它确定受编辑影响的单元格。但是,它不分析自定义函数的内部结构,而是依赖电子表格公式中的范围引用参数。

如果您的函数响应 中的更改很重要,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都会触发重新计算包含公式的单元格。

于 2013-11-28T22:24:09.853 回答