首页 > 解决方案 > 基于单元格值运行宏的条件

问题描述

我正在尝试提出一个 IF 语句,该语句将触发我的宏基于一个单元格中的特定值运行。我的电子表格有很多标签。这是一个预测模板。

这是我想出的,但我的想法已经不多了..

function Sum_Calcs() {
   var spreadsheet = SpreadsheetApp.getActive();
   spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Integrity Check'), true);
   spreadsheet.getRange(K20).getValue(getActiveRange(), true);

if(activeRange === "1") {
}

//然后我的脚本位于下方//

任何帮助深表感谢!

标签: javascriptif-statementgoogle-sheetstriggersgoogle-sheets-macros

解决方案


你需要

  • 每次更改“K20”中的值时,实现一个onEdit函数以重新评估 if 语句(请注意,只有当值已由人工手动更改时,它才会自动工作)
  • if如果满足您的条件,将在语句中调用第二个函数(宏)

根据您上面的代码片段,您需要更改一些内容:

  1. 当您使用方法getValue()检索单元格的值时 - 不要()在方法的括号内指定任何参数。相反,将此方法的返回值分配给一个变量
  2. 如果要在某个工作表中检索单元格值(或执行任何其他操作),请使用getSheetByName()而不是setActiveSheet
  3. 要在if语句中将实际值与整数(数字)进行比较,请使用if(activeRange == 1)
  4. 请注意,在获取 A1 表示法的范围时,您需要使用引号 ("")

根据您的情况的示例代码:

function myForecastMacro(){
  // specify here what shall happen if your "if" statement is fulfilled

function onEdit() {
   var spreadsheet = SpreadsheetApp.getActive();
   var sheet = spreadsheet.getSheetByName('Integrity Check');
   var activeRange=sheet.getRange("K20").getValue();
   if(activeRange == 1) {
     myForecastMacro();
  }
}

推荐阅读