Validation 如何基于单元格值显示隐藏行?
我已经创建了一个工作表,其中有一个下拉列表,单元格B23中的值为“Select One:“Push”“Pull”。我希望默认情况下隐藏第24行。从下拉列表中选择值“Pull”后,我希望取消隐藏第24行 如果单元格B23中的选择=拉动,是否有办法取消隐藏第24行? [![在此处输入图像描述][1][1]使用此脚本: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
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”,以尽可能接近您的脚本。我不相信此错误是由于工作表名引起的。已解决。这是单个工作表名(左下)。而不是电子表格标题(左上角。现在效果很好,谢谢你的努力!