Validation 如何基于单元格值显示隐藏行?

Validation 如何基于单元格值显示隐藏行?,validation,if-statement,google-apps-script,google-sheets,dropdown,Validation,If Statement,Google Apps Script,Google Sheets,Dropdown,我已经创建了一个工作表,其中有一个下拉列表,单元格B23中的值为“Select One:“Push”“Pull”。我希望默认情况下隐藏第24行。从下拉列表中选择值“Pull”后,我希望取消隐藏第24行 如果单元格B23中的选择=拉动,是否有办法取消隐藏第24行? [![在此处输入图像描述][1][1]使用此脚本: function onEdit(e) { var ss=SpreadsheetApp.getActiveSpreadsheet(); var sh=ss.getSheetBy

我已经创建了一个工作表,其中有一个下拉列表,单元格B23中的值为“Select One:“Push”“Pull”。我希望默认情况下隐藏第24行。从下拉列表中选择值“Pull”后,我希望取消隐藏第24行

如果单元格B23中的选择=拉动,是否有办法取消隐藏第24行? [![在此处输入图像描述][1][1]

使用此脚本:

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:
    }
  }
}
函数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();
对于(var i=0;i您希望:

  • 如果
    B23
    中的下拉菜单设置为
    Pull
    ,则显示第24行
  • 在任何其他情况下隐藏第24行
如果是这种情况,您可以将此简单的
onEdit
触发器复制到脚本中(在本示例中,包含数据的工作表称为
Sheet1
,如果不是这种情况,请相应更改):

函数onEdit(e){
var ss=SpreadsheetApp.getActive();
var sheet=ss.getSheetByName(“Sheet1”);//请相应更改
var下拉列表=sheet.getRange(“B23”).getValue();
var行=24;
如果(下拉==“拉动”)工作表。显示行(行);
else表。隐藏窗口(行);
}
如您所见,无需使用
for
循环,这将降低执行速度(特别是考虑到每次编辑文件时都会运行该循环)

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

开启功能(e){
onEdit(e)
}
参考:

我希望这能有所帮助。

嗨,拉姆利库斯,谢谢你的回复。当我在脚本编辑器中执行脚本时,我得到了null的“TypeError:cannotcallmethod”getRange。(第4行,文件“showRow”)“。我对google sheets了解不够,不知道我是否正确连接了脚本,也不知道如何进一步排除错误。有什么建议吗?@JamesKrueger这很可能是因为代码中的工作表名称(在我提供的示例中称为
Sheet1
)与实际工作表名称不匹配。请检查。@JamesKrueger注意错误说明。无法调用null的方法
getRange
。从变量
sheet
调用
getRange
。因此
sheet
为null。这意味着
ss.getSheetByName(“Sheet1”)
返回null。这意味着您的电子表格中没有名为
Sheet1
的工作表。Hmm。我将工作表重命名为“Sheet1”,以尽可能接近您的脚本。我不相信此错误是由于工作表名引起的。已解决。这是单个工作表名(左下)。而不是电子表格标题(左上角。现在效果很好,谢谢你的努力!