Excel 2016中如何快速识别已应用筛选的字段并选中对应列
快速定位并选中Excel 2016中已应用筛选的列
嘿,我刚好处理过类似的大型Excel表格筛选需求,给你几个高效的方法,不用逐个表头排查就能找到已应用筛选的列:
方法1:用内置查找功能精准定位筛选箭头
这是最省心的内置操作,完全不用写宏:
- 先选中你的表头行(比如第1行,假设表头在首行)
- 按下
Ctrl+F打开查找对话框,点击「选项」展开更多设置 - 在「查找内容」框旁边点「格式」→ 选「单元格格式」→ 切到「字体」选项卡
- 在「特殊效果」里勾选下划线(仅用于筛选箭头),点确定
- 回到查找框点「查找全部」,下方会列出所有带筛选箭头的表头单元格
- 按下
Ctrl+A选中所有查找结果,接着右键点击任意选中的单元格,选「整列」就能把对应的列全部选中
方法2:定位条件+首行筛选组合操作
如果表格已经开了筛选,还可以这么操作:
- 点击表格里任意一个单元格,确保处于筛选区域内
- 按下
Ctrl+G打开定位对话框,点「定位条件」 - 选「可见单元格」确定,这会选中所有可见单元格,但我们要的是表头
- 切换到「开始」选项卡,点「查找和选择」→「转到特殊」→ 选「当前区域的首行」,确定后就会选中所有可见的表头单元格
- 此时按下
Ctrl+Space就能一键选中这些表头对应的整列,也就是已应用筛选的列
方法3:写个简单VBA宏一键搞定(适合频繁操作)
如果你经常要处理这类大表格,写个宏能省超多时间:
- 按下
Alt+F11打开VBA编辑器,插入新模块 - 粘贴下面这段代码:
Sub SelectFilteredColumns() Dim ws As Worksheet Dim col As Range Set ws = ActiveSheet ' 先检查有没有开筛选 If Not ws.AutoFilterMode Then MsgBox "当前工作表没开自动筛选哦!" Exit Sub End If ' 取消之前的选中状态 ws.Range("A1").Select ' 遍历所有筛选列,判断是否有筛选条件并选中 For Each col In ws.AutoFilter.Range.Columns If ws.AutoFilter.Filters(col.Column - ws.AutoFilter.Range.Column + 1).On Then col.Select False ' 累加选中,不会取消之前的选中 End If Next col MsgBox "搞定!所有带筛选的列已经选中啦~" End Sub
- 保存后回到Excel,按下
Alt+F8运行这个宏,就能一键选中所有已应用筛选的列
注意:运行宏前要确保你的表格已经开启了自动筛选(表头有筛选箭头)哦。
内容的提问来源于stack exchange,提问作者Josh
相关产品推荐
相关产品推荐

