如何修改Google Apps Script实现多工作表行过滤及下拉联动?
解决方案:适配活动工作表的自动行过滤脚本
1. 核心代码实现
按下拉列表值过滤行
function filterRowsByDropdown() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const activeSheet = ss.getActiveSheet(); // 获取当前活动工作表 const dropdownCell = activeSheet.getRange("A1"); // 替换为你的下拉列表所在单元格,比如A1 const targetValue = dropdownCell.getValue(); const startRow = 2; // 假设表头在第1行,数据从第2行开始 // 先重置显示所有行,避免重复隐藏导致的逻辑混乱 activeSheet.showRows(startRow, activeSheet.getMaxRows() - startRow + 1); // 遍历数据行,隐藏不匹配目标值的行 for (let i = startRow; i <= activeSheet.getLastRow(); i++) { const cellValue = activeSheet.getRange(i, 38).getValue(); // 第38列(AL列) if (cellValue !== targetValue && targetValue !== "") { activeSheet.hideRows(i); } } }
一键显示所有行
function showAllRows() { const activeSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const startRow = 2; // 数据起始行,根据实际表头位置调整 activeSheet.showRows(startRow, activeSheet.getMaxRows() - startRow + 1); }
2. 配置步骤
- 下拉列表设置:在目标单元格(示例中为A1)添加数据验证,选择「列表」类型,输入需要的过滤选项(留空时会自动显示所有行)。
- 触发方式:
- 手动触发:插入绘图按钮(插入→绘图),右键按钮分别绑定
filterRowsByDropdown和showAllRows函数,点击即可执行。 - 自动触发:打开脚本编辑器,点击「编辑→当前项目的触发器」,添加
onChange触发器,选择filterRowsByDropdown函数,事件类型选「更改」,下拉值变化时自动执行过滤。
- 手动触发:插入绘图按钮(插入→绘图),右键按钮分别绑定
- 参数调整:
- 修改
dropdownCell的单元格地址为实际下拉列表位置。 - 修改
startRow为你的数据起始行(若表头不在第1行)。 - 修改
getRange(i, 38)中的38为目标列的列号(若不是AL列)。
- 修改
关键改进点
- 自动适配当前活动工作表,切换工作表后无需修改代码即可生效。
- 移除IF公式依赖,直接通过下拉选中值与目标列值对比完成过滤,逻辑更简洁高效。
内容的提问来源于stack exchange,提问作者Kostas
相关产品推荐
相关产品推荐

