【问题标题】:How do I reveal a hidden row based on a cell value?如何根据单元格值显示隐藏行?
【发布时间】:2020-01-15 22:25:08
【问题描述】:

我创建了一个工作表,其中包含值“选择一个:”“推”“拉”在单元格 B23 中的下拉列表。我希望默认情况下隐藏第 24 行。从下拉列表中选择值“Pull”后,我希望取消隐藏第 24 行。

如果单元格 B23 中的选择 = Pull,有没有办法取消隐藏第 24 行?

【问题讨论】:

    标签: validation if-statement google-apps-script google-sheets dropdown


    【解决方案1】:

    你想:

    • 如果B23 中的下拉菜单设置为Pull,则显示第24 行。
    • 在其他情况下隐藏第 24 行。

    如果是这种情况,您可以将这个简单的onEdit 触发器复制到脚本bound to your spreadsheet(在此示例中,包含数据的工作表称为Sheet1,如果不是这种情况,请相应地更改此设置):

    function onEdit(e) {
      var ss = SpreadsheetApp.getActive();
      var sheet = ss.getSheetByName("Sheet1"); // Please change accordingly
      var dropdown = sheet.getRange("B23").getValue();
      var row = 24;
      if (dropdown == "Pull") sheet.showRows(row);
      else sheet.hideRows(row);
    }
    

    如您所见,不需要使用for 循环,这会减慢执行速度(特别考虑到每次编辑文件时都会运行)。

    为了确保第 24 行在您第一次打开文件时被隐藏或显示,您可以将onOpen 触发器附加到函数,如下所示:

    function onOpen(e) {
      onEdit(e)
    }
    

    参考:

    希望对你有帮助。

    【讨论】:

    • 您好 lamlichus,感谢您的回复。当我在脚本编辑器中执行脚本时,我收到“TypeError:无法调用 null 的方法“getRange”。(第 4 行,文件“showRow”。我对谷歌工作表的了解不够,不知道我是否不是正确连接脚本或如何进一步解决错误。有什么建议吗?
    • @JamesKrueger 这很可能是因为代码中的工作表名称(在我提供的示例中称为Sheet1)与实际工作表名称不匹配。请检查一下。
    • @JamesKrueger 注意错误在说什么。无法调用 null 的方法 getRange。你从哪里打电话给getRange?来自变量sheet。所以sheet 为空。这意味着 ss.getSheetByName("Sheet1") 返回 null。这意味着您的电子表格中没有名为 Sheet1 的工作表。
    • 嗯。我将工作表重命名为“Sheet1”以尽可能接近地模仿您的脚本。我不相信这个错误是由于工作表名称造成的。
    • 已解决。这是单个工作表名称(左下角)。不是电子表格标题(左上角。现在效果很好,感谢您的努力!
    【解决方案2】:

    使用这个脚本:

    function onEdit(e) 
    {
      var ss=SpreadsheetApp.getActiveSpreadsheet();
      var sh=ss.getSheetByName("Sheet1");
      var rg=sh.getDataRange();
      var vA=rg.getValues();
      var xx=sh.getRange("B23").getValue();
      for(var i=0;i<vA.length;i++)
      {
        var row=i+1;
        switch(xx)
        {
          case 'Pull':
            if(row=24){sh.showRows(row);}
            break;
          case 'Select One:':
            if(row=24){sh.hideRows(row);}
            break;
          case 'Push':
            if(row=24){sh.hideRows(row);}
            break;
          default:
        }
      }
    }
    

    【讨论】:

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