Excel中按填充颜色求和需用SUBTOTAL筛选、GET.CELL辅助列(仅Windows旧版)或VBA自定义ColorSum函数,因原生SUMIF不支持颜色条件。

如果您在Excel中需要根据单元格的填充颜色对数值进行求和,但发现SUMIF等常规函数无法识别颜色,这是因为Excel原生函数不支持基于颜色的条件计算。以下是实现按颜色求和的多种可行方法:
本文运行环境:MacBook Air,macOS Sequoia。
一、使用SUBTOTAL配合筛选功能
该方法通过将具有相同填充色的单元格手动筛选出来,再利用SUBTOTAL函数对可见单元格求和,无需编写代码,适用于临时快速汇总。
1、选中数据区域(含标题行),点击「数据」选项卡 → 「筛选」启用自动筛选。
2、点击列标题下拉箭头 → 选择「按颜色筛选」→ 选择目标填充色。
3、在空白单元格中输入公式:=SUBTOTAL(109,数值列区域),其中109代表对可见单元格求和(忽略隐藏行)。
二、创建辅助列配合GET.CELL定义名称(仅限Windows Excel旧版本)
此方法利用Excel 4.0宏表函数GET.CELL获取单元格背景色索引值,并通过定义名称将其映射为可引用的动态值,适用于Excel 2010–2019(不支持Microsoft 365或macOS版)。
1、按Ctrl+F3打开「名称管理器」→ 点击「新建」。
2、在「名称」栏输入ColorIndex,在「引用位置」输入:=GET.CELL(63,Sheet1!$B2)(假设数值在B列,首行为第2行,需按实际工作表名和列调整)。
3、在C2单元格输入公式:=ColorIndex,向下填充,生成对应的颜色编号列。
4、使用SUMIF函数按颜色编号求和,例如:=SUMIF(C:C,6, B:B)(6为黄色对应索引值)。
三、使用VBA自定义函数ColorSum
该方法通过编写VBA函数直接读取单元格Interior.Color属性,返回指定颜色单元格的数值总和,兼容Windows与macOS平台上的Excel(macOS需启用宏并确认安全性设置)。
1、按Alt+F11打开VBA编辑器(macOS为Option+F11)→ 插入 → 模块。
2、粘贴以下代码:
Function ColorSum(colorCell As Range, sumRange As Range) As Double
Dim i As Long, total As Double
total = 0
For i = 1 To sumRange.Cells.Count
If sumRange.Cells(i).Interior.Color = colorCell.Interior.Color Then
total = total + sumRange.Cells(i).Value
End If
Next i
ColorSum = total
End Function
3、返回Excel,在任意单元格输入:=ColorSum(A1,B1:B100),其中A1为带目标颜色的参照单元格,B1:B100为待求和区域。










