如何在Excel中按颜色对单元格求和

虽然不是内置的 Excel 功能,但我们可以创建自己的函数来按颜色轻松对单元格求和。
内容:
如何使用用户定义的函数
下面的两个示例将使用“用户定义函数”。就像 SUM 和 COUNT 被视为函数一样,我们可以使用 VBA 创建自己的函数。
这与使用宏的过程相同,但我们可以调用我们的函数,而不是运行宏,类似于在公式中调用内置函数的方式(通过键入“=”后跟函数名称)。
使用用户定义函数的第一步是获取VBA代码片段,并将其放入工作簿中。为此,请按 alt + F11 或转到 Visual Basic >开发人员选项卡打开 VBA 编辑器:

接下来,我们需要创建一个模块来放置自定义函数。在左侧菜单中,右键单击您的工作簿名称,然后选择插入>模块。在此模块中输入的任何代码都可以在工作簿中的任何位置使用。

然后,您所要做的就是将函数代码拖放到该菜单右侧的空白区域中,您将能够在工作簿中的任何单元格中按其名称调用自定义函数。

如何对范围内的所有彩色单元格求和
要对范围内的所有彩色单元格或给定范围内没有空白背景的任何单元格求和,我们可以使用用户定义的函数,我们称之为“SumAllColoredCells”。
此函数将在给定范围内搜索任何彩色单元格并将它们求和。
Function SumAllColoredCells(eval_range As Range) As Double Dim cell As Range Dim total_sum As Double totalSum = 0 For Each cell In eval_range If cell.Interior.ColorIndex <> xlNone Then If IsNumeric(cell.Value) Then total_sum = total_sum + cell.Value End If End If Next cell SumAllColoredCells = total_sum End Function
例如,这里有一个工作簿,其中有几种不同的颜色表示不同的结果。如果我们想知道这个范围内有多少单元格是着色的,我们可以使用此公式(在我们将函数放入模块之后):
= SumAllColoredCells(cell_range)
= SumAllColoredCells(B3:B12)

通过使用“SumAllColoredCells”函数并选择要求和的范围,我们可以使用自定义函数返回所有彩色单元格的总和(忽略空白单元格)。

如何对与特定颜色匹配的区域中的单元格求和
与其对区域中所有彩色单元格求和,不如对区域中与特定颜色匹配的单元格求和呢?
例如,我们可以使用上面的相同示例,但创建一个 SUMIF,其中我们的公式将汇总具有与参考单元格颜色匹配的背景颜色的单元格。
Function SumByColor(eval_range As Range, cell_reference As Range) As Double Dim cell As Range Dim reference_color As Long Dim total_sum As Long reference_color = cell_reference.Interior.Color total_sum = 0 For Each cell In eval_range If cell.Interior.Color = reference_color Then If IsNumeric(cell.Value) Then total_sum = total_sum + cell.Value End If End If Next cell SumByColor = total_sum End Function
要使用此功能,我们将使用略有不同的结构,通过定义要评估的范围以及包含我们要求和的颜色的单元格。
= SumByColor(cell_range, reference_cell)
= SumByColor(B3:B12,D3)

在这里,我们的函数是查看 D3 的颜色,并对 B3:B12 范围内与该颜色匹配的单元格求和。通过复制这个公式,我们可以查看每种颜色的总和,绿色、黄色和红色。
