【发布时间】:2020-01-15 22:25:08
【问题描述】:
我创建了一个工作表,其中包含值“选择一个:”“推”“拉”在单元格 B23 中的下拉列表。我希望默认情况下隐藏第 24 行。从下拉列表中选择值“Pull”后,我希望取消隐藏第 24 行。
如果单元格 B23 中的选择 = Pull,有没有办法取消隐藏第 24 行?
【问题讨论】:
标签: validation if-statement google-apps-script google-sheets dropdown
我创建了一个工作表,其中包含值“选择一个:”“推”“拉”在单元格 B23 中的下拉列表。我希望默认情况下隐藏第 24 行。从下拉列表中选择值“Pull”后,我希望取消隐藏第 24 行。
如果单元格 B23 中的选择 = Pull,有没有办法取消隐藏第 24 行?
【问题讨论】:
标签: validation if-statement google-apps-script google-sheets dropdown
你想:
B23 中的下拉菜单设置为Pull,则显示第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)
}
希望对你有帮助。
【讨论】:
Sheet1)与实际工作表名称不匹配。请检查一下。
getRange。你从哪里打电话给getRange?来自变量sheet。所以sheet 为空。这意味着 ss.getSheetByName("Sheet1") 返回 null。这意味着您的电子表格中没有名为 Sheet1 的工作表。
使用这个脚本:
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:
}
}
}
【讨论】: