如何根据特定的单元格值显示/隐藏行?

时间:2019-07-18 14:46:30

标签: google-apps-script google-sheets

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

如果用户从单元格C42的数据验证列表中选择值“常规帐户呼叫”,我想显示第43至53行以及第78至101行。同样,如果用户在单元格C40中勾选了一个复选框我想显示C41行。

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

我发现了几个类似的脚本,它们基于同一行中单元格中的值来隐藏一行,并试图对其进行修改而无济于事。然后,我尝试回到基础知识,并放一些东西来监视单元格并隐藏另一行,再次无济于事

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

1 个答案:

答案 0 :(得分:0)

您的代码应为:

ul li

有些错误:

  • 即使ul li:first-child:not(.sub-menu li)function onEdit(e) { var ss = SpreadsheetApp.getActive(); var sheet = ss.getActiveSheet(); var cell = sheet.getRange('D39'); var cellContent = cell.getValue(); if(cellContent == 'Y') { sheet.hideRows(11); } } 声明有效,您仍然可以 SpreadsheetApp中的工作表,而非ss中的工作表,因此sheet不是 被使用。
  • ss是将单元格与字符串进行比较的正确方法,如果删除引号,它将把它解释为不存在的变量Y。另外,ss并不是必需的,因为它会检查类型和值,我们只需要该值。实际上,即使值相同但不同的type
  • ,它也会返回false。
  • 您写的是cellContent == 'Y'而不是===。 Javascript区分大小写,因此请小心!
  • 方法Sheet.hideRow隐藏given Range中的行,因此我们必须使用sheet.hiderow,否则您可以使用整数(在这种情况下为11)隐藏整个行。
  • 您没有输入任何分号hideRow

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

因此,要根据几个单元格隐藏几行,必须获取事件信息hideRows,并获取正在编辑的单元格。

执行以下操作:

;

(e)中的第二个数字是将显示的行数。