【问题标题】:How do you show/hide rows based on a particular cell value?如何根据特定的单元格值显示/隐藏行?
【发布时间】:2019-07-18 14:46:30
【问题描述】:

我正在尝试根据来自数据验证列表的响应将一些显示/隐藏行逻辑放入 Google 工作表中。

如果用户从单元格 C42 的数据验证列表中选择值“General Account Call”,我想显示第 43 行到第 53 行和第 78 行到第 101 行。此外,如果用户勾选单元格 C40 中的复选框我想显示 C41 行。

我不知道我是否可以使用 onEdit 函数“监控”多个单元格。

我发现了几个类似的(ish)脚本,它们根据同一行中单元格中的值隐藏一行,并尝试修改它们无济于事。然后我尝试回到基础并放置一些东西来监视一个单元格并隐藏不同的行,再次无济于事

function onEdit(e) {
  var ss = SpreadsheetApp.getActive()
  var sheet = SpreadsheetApp.getActiveSheet()
  var cell = sheet.getRange('D39')
  var cellContent = cell.getValue()

  if(cellContent === Y) {
    Sheet.hideRow(40)
  }
}

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    你的代码应该是:

    function onEdit() {
      var ss = SpreadsheetApp.getActive();
      var sheet = ss.getActiveSheet();
      var cell = sheet.getRange('D39');
      var cellContent = cell.getValue();
    
      if(cellContent == 'Y') {
        sheet.hideRows(11); 
    
      }
    }
    

    有一些地方出错了:

    • 即使 sssheet 声明有效,您也得到了 表格来自 SpreadsheetApp 而不是来自 ss,所以 ss 不是 正在使用中。
    • cellContent == 'Y' 是将单元格与字符串进行比较的正确方法,如果删除引号,它会将其解释为不存在的变量 Y。此外,=== 不是必需的,因为它会检查类型和值,而我们只需要值。实际上,即使值相同但不同type,它也会返回false
    • 您写的是Sheet.hideRow 而不是sheet.hiderow。 Javascript 是区分大小写的,所以要小心!
    • 方法hideRow 隐藏了given Range 中的行,所以我们必须使用hideRows,如果您可以使用整数(在本例中为11)来隐藏整行。
    • 你没有放任何分号;

    您没有收到任何这些错误,因为我想您正在测试更改 D39 值的代码。如果您手动执行代码,所有这些都会显示出来。

    因此,为了根据几个单元格隐藏几行,您必须获取事件信息(e),并获取正在编辑的单元格。

    像这样做一个 if:

      var cell = e.range.getA1Notation(); //Gets the Cell you edited
      var cell_value = e.range.getValue(); //Gets the value of the cell
    
      if(cell == 'C42' && cell_value == 'General Account Call'){
        sheet.showRows(43, 10);
        sheet.showRows(78, 23);
    
      }
    
      if (cell == 'C40' && cell_value){ //The checkbox value returns true or false
        sheet.showRows(41);
    }
    

    showRows 中的第二个数字是要显示的行数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-15
      • 2022-10-23
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 2023-01-17
      • 2015-01-17
      相关资源
      最近更新 更多