excel中可按单元格背景色筛选数据:一、用内置“按颜色筛选”功能(仅支持手动填充色);二、用get.cell函数生成颜色索引辅助列(仅windows版);三、用vba函数获取rgb十六进制值;四、将条件格式固化为静态色后再筛选。

如果您在Excel中需要根据单元格背景色对数据进行筛选,但标准筛选功能无法直接识别颜色,说明当前筛选逻辑未启用基于格式的条件。以下是实现按颜色筛选的多种可行方法:
一、使用“按颜色筛选”内置功能(适用于Excel 2007及以上版本)
Excel原生支持基于单元格填充色或字体色的筛选,前提是数据已处于表格区域或至少为普通数据区域且列有标题。该方法不依赖公式,操作快捷,但仅适用于手动设置的颜色,不支持条件格式生成的颜色(除非已转换为静态颜色)。
1、选中数据区域中的任意一个单元格,确保该列包含需按背景色筛选的单元格。
2、点击【开始】选项卡 → 【排序和筛选】→ 【筛选】,使列标题出现下拉箭头。
3、点击目标列标题右侧的筛选箭头 → 将鼠标悬停在【按颜色筛选】上 → 在子菜单中选择【单元格颜色】→ 点击具体颜色方块。
4、Excel将仅显示该背景色所在行的数据,其余行被隐藏。注意:若下拉菜单中未显示颜色选项,请确认所选单元格确为手动填充色,而非条件格式动态生成。
二、通过辅助列+GET.CELL函数(Excel旧版宏表函数,仅适用于Excel for Windows)
此方法可捕获单元格实际背景色索引值,并生成可筛选的数值列。它兼容手动填充色与部分条件格式固化后的颜色,但需启用宏工作表函数且不能在Excel for Mac或新版Microsoft 365网页版中使用。
1、按 Ctrl + F3 打开【名称管理器】→ 点击【新建】。
2、在【名称】栏输入 CellColor,在【引用位置】框中输入:=GET.CELL(63,Sheet1!$A2)(假设数据从A2开始,且工作表名为Sheet1;63代表背景色索引)。
3、在空白辅助列(如Z1)输入标题“颜色代码”,在Z2单元格输入公式:=CellColor,向下填充至数据末行。
4、对该辅助列执行常规数字筛选,输入对应颜色索引值即可定位同类背景色行。重要提示:此函数为易失性函数,编辑任一单元格将触发整列重算;保存文件时需为.xlsm或.xls格式。
三、利用VBA自定义函数获取背景色RGB值
通过编写VBA函数,可返回单元格背景色的RGB十六进制字符串(如“FF0000”表示红色),从而构建可排序、可筛选、可条件匹配的文本列。该方法不受条件格式限制,只要颜色已渲染即能读取,但需启用宏并信任该工作簿。
1、按 Alt + F11 打开VBA编辑器 → 在左侧工程资源管理器中右键工作簿名 → 选择【插入】→ 【模块】。
2、在新模块中粘贴以下代码:
Function GetCellColorHex(rng As Range) As String
Dim clr As Long
clr = rng.Cells(1, 1).Interior.Color
GetCellColorHex = Right("000000" & Hex(clr), 6)
End Function
3、返回Excel,在辅助列首单元格(如AA1)输入标题“颜色HEX”,在AA2输入公式:=GetCellColorHex(A2),向下填充。
4、对该列执行文本筛选,输入如“FF0000”即可筛选所有红色背景单元格。警告:首次使用需启用宏,且每次打开文件时可能弹出安全提示。
四、转换条件格式为静态颜色后使用内置筛选
当目标颜色由条件格式生成时,Excel内置“按颜色筛选”默认不可见该颜色。此时可借助“选择性粘贴”将条件格式结果固化为真实填充色,再调用标准筛选功能。该方法无需编程,但会破坏原始条件格式逻辑,仅适用于一次性分析场景。
1、选中应用了条件格式的目标数据列区域。
2、按 Ctrl + C 复制该区域。
3、右键 → 选择【选择性粘贴】→ 在弹出窗口中勾选【格式】→ 点击【确定】。
4、此时所有满足条件格式规则的单元格已获得永久背景色,原条件格式仍存在但不影响新颜色显示。
5、按方法一操作:启用筛选 → 点击列筛选箭头 → 【按颜色筛选】→ 【单元格颜色】→ 选择对应色块。注意:执行此操作后,修改原始数据不会自动更新颜色,因条件格式已被覆盖。










