跳至主要内容

Kutools for Office — 一套工具,五种功能。事半功倍。

如何在Excel中按多种颜色筛选数据?

Author Xiaoyang Last modified

在常规的Excel使用中,当处理单一颜色时,基于单元格颜色应用筛选是直接明了的。然而,如果你需要同时筛选包含多个特定颜色的行该怎么办呢?例如,假设你有一个数据列表,其中几个类别用不同的填充颜色进行了高亮显示,而你需要仅查看包含两个或多个选定颜色的行。由于内置筛选功能一次只允许选择一种颜色,因此这种场景无法通过Excel的标准筛选功能直接处理。本文介绍了有效解决该问题的方法,并解释了它们的实用价值以及在某些情况下可能更倾向于一种方法的原因。

下面你会找到最初提出的VBA代码解决方案,以及一些额外的提示和注意事项,帮助你获得最佳结果。此外,为了方便起见,还提供了两种替代方法(使用带有公式的辅助列和Kutools for Excel插件)链接:

使用VBA代码按多种颜色筛选数据

手动分类并按多种颜色筛选Excel中的数据


arrow blue right bubble 使用VBA代码按多种颜色筛选数据

当前,Excel并未提供原生方式来根据多个单元格背景色同时筛选行。当你需要仅显示匹配几种特定颜色的行时,可以求助于自定义的VBA解决方案。以下方法演示了如何使用用户自定义函数将颜色索引号提取到相邻的辅助列中。在以这种方式识别颜色后,你可以根据需要使用Excel的内置筛选工具进行筛选。此方法最适合中小型数据集,特别是如果你对使用宏感到得心应手的话。

1. 按住ALT + F11键打开Microsoft Visual Basic for Applications窗口。如果你想在工作簿中保存代码以便将来使用,请将文件另存为启用宏的工作簿(.xlsm)或其他支持宏的格式,因为普通Excel文件(.xlsx)无法存储VBA代码。

2. 单击插入 > 模块,并将以下代码粘贴到打开的模块窗口中。

VBA代码:提取颜色索引号:

Function GetColor(x As Range) As Integer
GetColor = x.Interior.ColorIndex
End Function

在继续之前,请确保已保存你的工作。在某些情况下,使用VBA会触发安全警告,因此如果出现提示,请启用宏。

3. 返回到你的工作表。在数据旁边选择一个空白单元格(例如,如果你的带颜色单元格位于A列且你的第一行数据是第2行,则使用B2),并输入公式:=Getcolor(A2)。这里,A2指的是你想要分析的第一个带颜色单元格。此函数会将颜色索引作为数字返回到辅助列中。参见截图:

apply a formula to get the color index

4. 使用填充柄将此公式复制到数据范围的下方,使得每一行现在都显示该行的颜色索引。如果你的表格较大,可以双击填充柄自动填充列以匹配你的数据。所有行现在都会显示一个颜色索引号,如下所示:

drag the formula to other cells

提示:如果单元格没有任何背景色,函数将返回-4142。如果你想排除没有颜色的行,可以以此作为参考。

5. 现在每一行都与特定的颜色索引关联,你可以筛选数据以仅显示具有所需颜色的行。为此,选择你的辅助列,转到“数据”选项卡,单击筛选,然后单击辅助列顶部的箭头。在筛选下拉列表中,勾选与你希望显示的颜色对应的所有颜色索引号的复选框,如下所示:

click Data > Filter, select the color index number that to filter

6. 单击确定以应用筛选。现在,只有具有所选背景颜色的行才会显示在你的数据范围内。如果你想进一步分析或复制结果,可以选择筛选后的行。参见截图:

the selected colors are filtered out

7. 最后,如果你不再需要可见的辅助列,可以安全地隐藏或删除它。请注意,在筛选后删除该列将移除其颜色引用,如果你尝试重新筛选,最好隐藏它,除非你已完成此分析。

如果你在输入公式后遇到#NAME?错误,很可能是因为VBA代码未正确插入,或者未启用宏。请仔细检查你的VBA模块和宏安全设置。

此解决方案的一个优点是,它允许你结合基于颜色的筛选与其他类型的条件(如文本或值筛选),使用Excel的原生筛选控件。然而,一个限制是,如果你应用新主题或从其他来源复制数据,单元格颜色代码可能会更改,这可能需要你刷新或重新应用VBA函数。


手动分类并按多种颜色筛选Excel中的数据

如果由于工作簿安全策略或用户偏好而不适合使用VBA,一种实用的解决方法是在辅助列中手动编码颜色类别,然后基于这些类别进行筛选。此解决方案适用于不同颜色数量可控且颜色代码调整不频繁的情况。

你可以在数据旁边创建一个辅助列(例如,“颜色类别”),并根据其填充颜色手动为每一行分配一个标签(例如,“红色”,“绿色”,“黄色”)。然后,使用筛选功能仅显示你希望看到的类别。

步骤:在你的辅助列中,根据颜色输入简单的文本标识符(例如,对于蓝色填充的行输入“蓝色”,对于无填充的行输入“无”)。完成后,选择辅助列并使用数据 > 筛选选择任何组合的彩色行进行显示。

这种方法自动化程度较低,但如果你的数据集较小或颜色定义容易变化,它能提供更多灵活性。如果你的数据动态变化或由不同用户使用,手动维护可能会效率较低。

对于大型数据集或频繁更新,请考虑使用VBA自动化此过程或使用如下介绍的专用Excel插件。


a screenshot of kutools for excel ai

使用 Kutools AI 解锁 Excel 魔法

  • 智能执行:执行单元格操作、分析数据和创建图表——所有这些都由简单命令驱动。
  • 自定义公式:生成量身定制的公式,优化您的工作流程。
  • VBA 编码:轻松编写和实现 VBA 代码。
  • 公式解释:轻松理解复杂公式。
  • 文本翻译:打破电子表格中的语言障碍。
通过人工智能驱动的工具增强您的 Excel 能力。立即下载,体验前所未有的高效!

相关文章:

如何在Excel中筛选逗号分隔的数据?

如何在Excel中筛选精确文本?

最佳Office办公效率工具

🤖 Kutools AI 助手:以智能执行为基础,彻底革新数据分析 |代码生成 |自定义公式创建|数据分析与图表生成 |调用Kutools函数……
热门功能:查找、选中项的背景色或标记重复项 | 删除空行 | 合并列或单元格且不丢失数据 | 四舍五入……
高级LOOKUP多条件VLookup|多值VLookup|多表查找|模糊查找……
高级下拉列表快速创建下拉列表 |依赖下拉列表 | 多选下拉列表……
列管理器添加指定数量的列 | 移动列 | 切换隐藏列的可见状态 | 比较区域与列……
特色功能网格聚焦 |设计视图 | 增强编辑栏 | 工作簿及工作表管理器 | 资源库(自动文本) | 日期提取 | 合并数据 | 加密/解密单元格 | 按名单发送电子邮件 | 超级筛选 | 特殊筛选(筛选粗体/倾斜/删除线等)……
15大工具集12项 文本工具添加文本删除特定字符等)|50+种 图表 类型甘特图等)|40+实用 公式基于生日计算年龄等)|19项 插入工具插入二维码从路径插入图片等)|12项 转换工具小写金额转大写汇率转换等)|7项 合并与分割工具高级合并行分割单元格等)| ……
Kutools支持多种语言——可选择英语、西班牙语、德语、法语、中文等40多种语言!

通过Kutools for Excel提升您的Excel技能,体验前所未有的高效办公。 Kutools for Excel提供300多项高级功能,助您提升效率并节省时间。 点击此处获取您最需要的功能……


Office Tab为Office带来多标签界面,让您的工作更加轻松

  • 支持在Word、Excel、PowerPoint中进行多标签编辑与阅读
  • 在同一个窗口的新标签页中打开和创建多个文档,而不是分多个窗口。
  • 可提升50%的工作效率,每天为您减少数百次鼠标点击!

所有Kutools加载项,一键安装

Kutools for Office套件包含Excel、Word、Outlook和PowerPoint的插件,以及Office Tab Pro,非常适合跨Office应用团队使用。

Excel Word Outlook Tabs PowerPoint
  • 全能套装——Excel、Word、Outlook和PowerPoint插件+Office Tab Pro
  • 单一安装包、单一授权——数分钟即可完成设置(支持MSI)
  • 协同更高效——提升Office应用间的整体工作效率
  • 30天全功能试用——无需注册,无需信用卡
  • 超高性价比——比单独购买更实惠