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

如何使用Google Apps Script过滤Google Sheets单列中的所有值

解决方案

以下分别提供Excel和Google Sheets两个场景下的可用脚本,均可实现H列数值变动时自动重新筛选,仅保留指定值、隐藏其他所有内容的需求。

Excel 端VBA脚本

操作步骤

  1. 按下Alt+F11打开VBA编辑器
  2. 在左侧项目面板双击你需要生效的对应工作表
  3. 将下方代码粘贴到代码编辑区,修改targetValue为你需要保留的指定值后保存,将文件另存为.xlsm启用宏的格式即可生效
Private Sub Worksheet_Change(ByVal Target As Range)
    ' 仅H列内容变更时触发逻辑
    If Not Intersect(Target, Me.Columns("H")) Is Nothing Then
        Dim ws As Worksheet
        Set ws = Me
        ' 替换为你需要保留的指定值
        Const targetValue As String = "你要保留的内容"
        
        ' 清除原有筛选避免冲突
        If ws.AutoFilterMode Then
            ws.AutoFilterMode = False
        End If
        
        ' 应用筛选仅保留指定值
        ws.Range("H:H").AutoFilter Field:=1, Criteria1:=targetValue
    End If
End Sub

Google Sheets端Apps Script脚本

操作步骤

  1. 打开目标表格,点击顶部菜单「扩展程序」>「Apps Script」
  2. 清空默认代码,粘贴下方代码,修改targetValue为你需要保留的指定值后保存项目
  3. 刷新表格即可生效
function onEdit(e) {
  const activeSheet = e.source.getActiveSheet();
  const editedCol = e.range.getColumn();
  // 仅H列(第8列)内容变更时触发逻辑
  if (editedCol !== 8) return;

  // 替换为你需要保留的指定值
  const targetValue = "你要保留的内容";
  const lastRow = activeSheet.getLastRow();

  // 清除原有筛选
  if (activeSheet.getFilter()) {
    activeSheet.getFilter().remove();
  }

  // 新建全H列筛选规则
  const filterRange = activeSheet.getRange(1, 8, lastRow, 1);
  const newFilter = filterRange.createFilter();
  const filterRule = SpreadsheetApp.newFilterCriteria()
    .whenTextEqualTo(targetValue)
    .build();
  newFilter.setColumnFilterCriteria(1, filterRule);
}

注意事项

  • 如果你的表格带表头,可自行调整代码中筛选范围的起始行,避免表头被筛选隐藏
  • 如果需要支持大小写不敏感匹配,可修改对应筛选规则的匹配逻辑即可

内容的提问来源于stack exchange,提问作者Nagaram92

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:36:07