You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 02:52:12