Cookies帮助我们提供我们的服务。 通过使用我们的服务,您同意我们使用Cookie。
提示:其他语言是Google翻译的。 你可以访问 English 版本。
登录
x
or
x
x
注册账户
x

or

如何计算和统计基于Excel中的背景颜色的单元格?

假设您有一系列具有不同背景颜色的单元格,例如红色,绿色,蓝色等,但现在您需要计算该范围内有多少单元格具有特定背景颜色,并将具有相同特定颜色的彩色单元格相加。 在Excel中,没有直接的公式来计算颜色单元的总和和计数,这里我将向您介绍一些解决此问题的方法。

通过Filter和SUBTOTAL基于特定填充颜色计算和求和单元格

通过GET.CELL函数根据特定填充颜色计数和求和单元格

使用用户定义函数基于特定的填充颜色计算和求和单元格

使用Kutools for Excel基于特定填充颜色(或条件格式颜色)计算和求和单元格

单击以在Excel中计算,求和和平均彩色单元格

随着优秀 按颜色计数 的特点 Kutools for Excel,只需在Excel中单击一下,即可按指定的填充颜色或字体颜色快速计算,求和和平均单元格。 此外,此功能还将通过填充颜色或字体颜色找出单元格的最大值和最小值。 全功能免费试用60天!
广告按颜色计算2


通过Filter和SUBTOTAL计算和求和单元格

假设我们有一个水果销售表,如下面的屏幕截图所示,我们将对Amount列中的彩色单元格进行计数或求和。 在这种情况下,我们可以按颜色过滤Amount列,然后在Excel中通过SUBTOTAL函数对过滤的彩色单元格进行计数或求和。

1。 选择空白单元格以进入SUBTOTAL功能。

  1. 要计算具有相同背景颜色的所有单元格,请输入公式 = SUBTOTAL(102,E2:E20);
  2. 要对具有相同背景颜色的所有单元格求和,请输入公式 = SUBTOTAL(109,E2:E20);


注意:在两个公式中,E2:E20是包含彩色单元格的Amount列,您可以根据需要更改它们。

2。 选择表格的标题,然后单击 数据 > 筛选。 看截图:

3。 单击“过滤器”图标 在Amount列的标题单元格中,单击 通过彩色滤光片 和您将连续计算的指定颜色。 看截图:

过滤后,两个SUBTOTAL公式都会自动计算和计算Amount列中所有已过滤的颜色单元格。 看截图:

注意:此方法要求您将计算或总和的彩色单元格位于同一列中。


通过GET.CELL函数对彩色单元格进行计数或求和

在这个方法中,我们将使用GET.CELL函数创建一个命名范围,获取单元格的颜色代码,然后在Excel中轻松地按颜色代码计算或求和。 请做如下:

1。 点击 公式 > 定义名称。 看截图:

2。 在New Name对话框中,请按以下屏幕截图显示:
(1)在“名称”框中键入名称;
(2)输入公式 = GET.CELL(38,Sheet4!$ E2) 在参考框中(注意: 在公式, 38 表示返回单元格代码,和 Sheet4!$ E2 是Amount列中的第一个单元格,除了您需要根据表数据更改的列标题。)
(3)点击 OK 按钮。

3。 现在将新的Color列添加到原始表的右侧。 接下来输入公式 = NUM​​COLOR ,并拖动自动填充处理以将公式应用于“颜色”列中的其他单元格。 看截图:
注意: 在公式, NUMCOLOR 是我们在第一个2步骤中指定的命名范围。 您需要将其更改为您设置的指定名称。

现在,“数量”列中每个单元格的颜色代码将在“颜色”列中返回。 看截图:

4。 复制并列出活动工作表中空白范围内的填充颜色,并在其旁边键入公式,如下面的屏幕截图所示:
A.要按颜色计算单元格,请输入公式 = COUNTIF($ F $ 2:$ F $ 20,NUMCOLOR);
B.要按颜色对单元格求和,请输入公式 = SUMIF($ F $ 2:$ F $ 20,NUMCOLOR,$ E $ 2:$ E $ 20).

注意:在两个公式中, $ F $ 2:$ F $ 20 是Color列, NUMCOLOR 是指定的命名范围, $ E $ 2:$ E $ 20 是金额列,您可以根据需要更改它们。

现在,您将看到Amount列中的单元格已计数,并按填充颜色求和。


使用用户定义函数基于特定的填充颜色计算和求和单元格


假设有色单元在如下面的屏幕截图所示的范围内散布,上述两种方法都不能对彩色单元格进行计数或求和。 这里,这个方法将引入一个VBA来解决这个问题。

1。 按住 ALT + F11 键,然后打开 Microsoft Visual Basic for Applications 窗口。

2。 点击 插页 > 模块,并将以下代码粘贴到模块窗口中。

VBA:根据背景颜色计算和求和单元格:

Function ColorFunction(rColor As Range, rRange As Range, Optional SUM As Boolean)
Dim rCell As Range
Dim lCol As Long
Dim vResult
lCol = rColor.Interior.ColorIndex
If SUM = True Then
For Each rCell In rRange
If rCell.Interior.ColorIndex = lCol Then
vResult = WorksheetFunction.SUM(rCell, vResult)
End If
Next rCell
Else
For Each rCell In rRange
If rCell.Interior.ColorIndex = lCol Then
vResult = 1 + vResult
End If
Next rCell
End If
ColorFunction = vResult
End Function

3。 然后保存代码,并应用以下公式:
A.计算有色单元格: ColorFunction的=(A,B:C,FALSE)
B.总和有色细胞: ColorFunction的=(A,B:C,TRUE)

注意:在上面的公式中, A 是您想要计算计数和总和的特定背景颜色的单元格 公元前 是要计算计数和总和的单元格范围。

4。 以下面的截图为例,输入公式ColorFunction的=(A1,A1:D11,FALSE) 数黄色的细胞。 并使用公式 ColorFunction的=(A1,A1:D11,TRUE) 总结黄色细胞。 看截图:

5。 如果您想对其他颜色的单元格进行计数和求和,请重复步骤4。 然后你会得到以下结果:


使用Kutools for Excel根据特定填充颜色计算和求和单元格

使用上述的用户自定义功能,需要逐个输入公式,如果颜色很多,这种方法将是繁琐耗时的。 但是,如果你有 Kutools for Excel按颜色计数 实用程序,您可以快速生成彩色单元格的报告。 您不但可以对有色单元进行计数和求和,还可以得到有色域的平均值,最大值和最小值。

1。 选择要使用的范围,然后单击 Kutools Plus > 按颜色计数,看截图:

2。 和在 按颜色计数 对话框,请按以下屏幕截图显示:
(1)选择 标准格式 来自 色彩方法 下拉列表;
(2)选择 背景 来自 计数类型 下拉列表。
(3)单击“生成报告”按钮。

Kutools for Excel - 包括300以上的便捷Excel工具。 全功能免费试用60天,无需信用卡! 立即获取!

注意:要按特定的条件格式颜色对彩色单元格进行计数和求和,请选择 条件格式 来自 色彩方法 在上面的对话框中下拉列表,或选择 标准和条件格式 从下拉列表中计算由指定颜色填充的所有单元格。

现在,您将获得包含统计信息的新工作簿。 看截图:


相关文章:

如何根据Excel中的字体颜色计算/求和单元格?


演示:基于背景计算和求和的单元格,条件格式化颜色:

在这个视频中, Kutools 标签和 Kutools Plus 标签是通过添加 Kutools for Excel。 如果需要,请点击 点击此处。 有一个60天的免费试用没有限制!



推荐的生产力工具

Office Tab

金星1 带上方便的选项卡到Excel和其他Office软件,就像Chrome浏览器,Firefox和新的Internet Explorer。

Kutools for Excel

金星1 惊人! 提高您在5分钟的生产力。 不需要任何特殊技能,每天保存两个小时!

金星1 300 Excel的新功能,让Excel变得简单而强大:

  • 合并单元格/行/列而不丢失数据。
  • 合并和合并多个工作表和工作簿。
  • 比较范围,复制多个范围,将文本转换为日期,单位和货币转换。
  • 按颜色计算,分页小计,高级分类和超级筛选,
  • 更多选择/插入/删除/文本/格式/链接/评论/工作簿/工作表工具...

Excel的Kutools屏幕截图

Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Mori · 18 hours ago
    I copied and paste but calculation result is "0" why?? I am using Office 2016.
  • To post as a guest, your comment is unpublished.
    Troy Havard · 27 days ago
    I've copied and pasted as stated and have used this formula for over a year but recently saved the workbook to a new name and now the function doesn't work! I can't figure out what the deal is and I'm losing hair and sleep over it! Loading the original workbook, the formula works like a charm but going back to the new one, it doesn't! I've loaded VBA and tried re-creating the function but it doesn't work. Using Office 2019 - any help appreciated.
    • To post as a guest, your comment is unpublished.
      Jku · 11 days ago
      #NAME clearly indicates some keyword is not used in 2019, say, Interior.ColorIndex. Try to figure out changing the code from minimum lines to the full by adding one by one or search for the keywords in Excel/VBA in 2019
    • To post as a guest, your comment is unpublished.
      Troy Havard · 27 days ago
      I should probably have also noted that I get a #NAME? error in the cell in which I try to use the function.
  • To post as a guest, your comment is unpublished.
    Karolin · 2 months ago
    works fine, except it does not update the value in the totals when i change a cell to a diffrent colour. i have to click in the totals cell again to trigger a recount. Any Ideas how to fix this?
    • To post as a guest, your comment is unpublished.
      Arnier Hamz · 1 months ago
      Same here, i tried Ctrl+Alt+F9 or Ctrl+Shift+Alt+F9 to recalculate all formula and it works
  • To post as a guest, your comment is unpublished.
    Aaron · 3 months ago
    This doesn't work at all. It's total BS.
  • To post as a guest, your comment is unpublished.
    Schmingy · 5 months ago
    I was experiencing issues when attempting to use this function as-is to count/sum the lighter (pastel?) colors, at least in Excel 2016. Some debugging led me to realize that the range of "ColorIndex" values is quite limited, and the function above fails to distinguish between light yellow and light orange, reading both as ColorIndex = 19.

    Using the "Color" attribute, instead (as in "lCol = rColor.Interior.Color" and the two instances of "If rCell.Interior.Color = lCol Then", per the sample code above), resolved the issue.