在Excel中按颜色过滤

过滤数据是许多 Excel 用户日常工作的常见任务。
Excel 已经具有完善的筛选功能,允许您根据许多条件进行筛选,例如文本、数字或日期。
没有多少人知道 Excel 还具有内置的按颜色过滤功能,您可以根据数据集中任何预先存在的单元格颜色或字体颜色轻松过滤数据集。
在本教程中,我将向您展示如何使用内置过滤器功能在 Excel 中快速按颜色过滤。 我还将介绍如何使用简单的 VBA 技巧基于多种颜色进行过滤。
笔记:Excel 允许您根据单元格颜色以及单元格中文本/数字的字体颜色过滤数据集。 我将在本教程中介绍这两个方面。
推荐:修复Windows 11更新错误0x800f0922
使用过滤器下拉菜单按颜色过滤
按颜色过滤数据集的最佳方法是对数据应用过滤器,然后使用标题中的下拉列表按颜色过滤单元格。
下面我有一个数据集,其中一些行以绿色突出显示,我想过滤这些记录。

按单元格颜色过滤
以下是执行此操作的步骤:
- 选择数据(或数据集中的任何单元格)
- 单击数据选项卡

- 单击排序和过滤组中的过滤器图标。 这会将过滤器应用到数据集中的第一行。

您还可以使用键盘快捷键 Control + Shift + L 应用过滤器。
- 单击单元格带有颜色的列中的“过滤器”图标。 在这种情况下,由于整行已被覆盖,因此您可以单击任何列的过滤器图标。

- 将光标悬停在“按颜色过滤”选项上。 这将进一步显示“按单元格颜色过滤”选项的子菜单。

- 选择要根据其过滤此数据集的颜色。 在此示例中,由于我们只有一种颜色,因此选项中仅显示一种颜色。 如果您有多种颜色,所有颜色都会显示在这里。

上述步骤将立即过滤您的数据集,您只会看到单元格中填充指定颜色的记录。

此方法的一个限制是您只能根据一种颜色进行过滤。 与文本或数字过滤器不同,按颜色过滤功能不允许您基于多种颜色进行过滤
Also read: How to Count Filtered Rows in Excel?
按字体颜色过滤
您还可以按照相同的步骤根据字体颜色而不是单元格颜色来过滤数据集。
下面我有一个数据集,其中有一些红色字体的记录,我想过滤所有这些记录

以下是执行此操作的步骤:
- 选择数据(或数据集中的任何单元格)
- 单击数据选项卡
- 单击排序和过滤组中的过滤器图标。

- 单击带有颜色单元格的列中的过滤器图标。

- 将光标悬停在“按颜色过滤”选项上。 这将进一步显示“按字体颜色过滤”选项的子菜单。
- 选择要根据其过滤此数据集的字体颜色。 在此示例中,我们只有一种字体颜色。 如果您的数据集有更多,所有颜色都会显示。

上述步骤将过滤数据,我们将仅保留那些具有所选字体颜色的可见记录。

取下过滤器
如果要移除滤色片,请按照以下步骤操作:
- 单击应用了过滤器的列标题中的过滤器图标。 当图标从简单的下拉图标变为过滤器图标时,您还可以直观地看到哪一列应用了过滤器。
- 选择“从…清除过滤器”选项。

使用右键菜单按颜色过滤
按颜色过滤的另一种快速方法是使用右键单击具有颜色的单元格时出现的过滤器选项。
让我向您展示它是如何工作的。
按单元格颜色过滤
下面我有相同的数据集,其中有一些要过滤的彩色单元格。

以下是使用右键菜单过滤颜色的步骤:
- 右键单击具有要根据其过滤数据的颜色的任何单元格

- 将光标悬停在“过滤器”选项上。
- 在出现的其他选项中,单击“按选定单元格的颜色过滤”选项。

就是这样! 您的数据集将立即根据您右键单击的单元格进行过滤。
此方法具有相同的限制,即无法基于多种颜色进行过滤。 您只能根据一种颜色进行过滤。
按字体颜色过滤
同样,您也可以根据字体颜色快速过滤,只需右键单击单元格,然后选择正确的过滤选项即可。
下面我有一个数据集,其中有一些红色字体的单元格,我想过滤这些记录。

以下是执行此操作的步骤:
- 右键单击具有要过滤的字体颜色的任何单元格
- 将光标悬停在“过滤器”选项上。
- 在出现的其他选项中,单击“按选定单元格的字体颜色过滤”选项。

取下过滤器
以下是删除单元格颜色或字体颜色过滤器的步骤:
- 右键单击已过滤的列中的任意单元格
- 将光标悬停在“过滤器”选项上
- 选择“从…清除过滤器”选项。

使用 VBA 按颜色过滤
虽然上述两种方法既快速又简单,但一个很大的限制是您只能根据一种单一颜色过滤数据集。
但是,如果您的数据集中有多种颜色,并且您想要过滤数据以获得以两种或多种颜色突出显示的记录,该怎么办?
让我向您展示一个非常简单的 VBA 代码和执行此操作的智能技术。
下面,我有一个数据集,其中单元格以两种颜色(绿色和橙色)突出显示,并且我想过滤所有具有绿色和橙色的记录。

因为我无法使用常规方法来做到这一点 按颜色过滤 在 Excel 功能中,我将添加一个辅助列,然后提取该辅助列中每个单元格颜色的颜色索引值。
一旦我在辅助列中拥有这些值,我就可以使用多个颜色索引值轻松地根据多种颜色进行过滤。
第一步是在 VBA 中创建一个自定义函数,然后在工作表中使用该函数来获取每个单元格的颜色索引。
以下是在 Excel 中创建自定义函数的步骤:
- 单击“开发人员”选项卡,然后单击“Visual Basic”图标。 这将打开 VB 编辑器。 您还可以使用快捷键 ALT + F11(按住 ALT 键,然后按 F11 键)

- 单击菜单中的“插入”选项
- 单击模块选项。 这将为我们的工作簿插入一个新模块

- 将以下代码复制并粘贴到模块代码窗口。
'Code developed by Sumit Bansal from
Function GetCellColor(cell As Range) As Integer
GetCellColor = cell.Interior.ColorIndex
End Function
'Code developed by Sumit Bansal from
Function GetCellFontColor(cell As Range) As Integer
GetCellFontColor = cell.Font.ColorIndex
End Function

- 关闭 VB 编辑器
通过上述步骤,我们使用 VBA 创建了两个函数,现在可以将它们作为常规函数在工作表中使用。
这 获取单元格颜色 函数将以单元格引用作为输入,并为我们提供表示该单元格颜色索引的数值。
还有 获取单元格字体颜色 函数将单元格引用作为输入,并为我们提供单元格字体颜色索引值。
现在让我们看看如何在工作表中使用这些函数来按颜色过滤数据。
- 在单元格 C1 中,输入文本“ColorIndex”。 我们这样做是因为我们的帮助列需要一个标题。 您可以编写任何您想要的文字。

- 在单元格 C2 中输入以下文本,然后将其复制到该列中的所有单元格。
=GetCellColor(B2)

您在辅助列中看到的数值表示左侧每个单元格的颜色索引值。 因此,15 代表数据集中的绿色,40 代表橙色,-4142 代表无颜色。
现在我们已经有了所有数据,我们将了解如何根据多种颜色过滤该数据集。
- 选择整个数据集。
- 单击数据选项卡
- 单击过滤器图标。 这会将过滤器应用于整个第一行,包括辅助列的标题。

- 单击帮助列中的过滤器图标。

- 取消选中您不想过滤的选项,并保留要过滤数据的颜色的数字。 在我们的示例中,我们将选中 15 和 40(并取消选中所有其他选项)。

- 单击“确定”
上述步骤将根据所选颜色过滤我们的数据集。

完成后,如果您不需要,可以隐藏或删除辅助列。
注意:如果您想根据单元格字体颜色过滤数据集,请使用 获取单元格字体颜色 第 8 步中的函数。
这些是您可以在 Excel 中按颜色进行筛选的方法。 如果您只想按一种单元格颜色或字体颜色进行过滤,则可以使用右键单击技术或应用过滤器,然后使用过滤器下拉列表中的选项(分别如方法 2 和方法 1 所示) 。
如果您需要基于多种颜色进行过滤,则必须使用 VBA 创建一个用户定义函数,然后在工作表中使用该函数来获取颜色索引,然后可以使用该索引来应用过滤器。