如何计算Excel中的所有多个单元格

时间:2018-02-12 10:44:33

标签: excel

我正在尝试计算在Excel列中为一个项目分配的所有多种颜色。我尝试了以下公式,但它计算了我要求的唯一值。 =COUNTIFS(C10:C17, G19, E10:E17, H19)

**Project List      Colors**
Project a           Black 
Project b           Brown 
Project c           Red 
Project d           Orange 
Project a           Yellow 
Project b           Brown 
Project c           Red 
Project e           Black 
Project f           Green

在上表中,如果选中的单元格包含项目a,则应显示1个黑色和1个黄色。如果选中一个单元格包含项目b,它应该显示2棕色。

编辑:颜色是值,而不是实际颜色或背景颜色。

2 个答案:

答案 0 :(得分:0)

您可以使用UDF

Function modifiedCountif(Rng1 As Range, Criteria1 As Range, Rng2 As Range)
Dim i As Long
Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")
Dim Result As String

Result = ""
For i = 1 To Rng1.Count
    If Rng1.Cells(i, 1) = Criteria1 Then
    On Error Resume Next
        dict.Add Rng2.Cells(i, 1).Value, Application.WorksheetFunction.CountIfs(Rng1, Criteria1, Rng2, Rng2.Cells(i, 1))
    End If
Next

Dim key As Variant
For Each key In dict.Keys
    Result = Result & dict(key) & " " & key & ", "
Next key

modifiedCountif = Left(Result, Len(Result) - 2)
dict.RemoveAll
End Function

Rng1项目列表

的范围

Criteria1是您要搜索的项目。

Rng2颜色的范围

答案 1 :(得分:0)

我不确定您的实际数据范围,因此以下是我的测试设置。

  • 项目列表的范围为C10:C18

  • 颜色列表在E10:E18范围内。

  • 包含Project b之类单个值的输入单元格为I2

然后公式将(在编辑模式下同时按 CTRL + SHIFT + ENTER 提交。如果应用正确,则Excel将通过{})包装公式。

=IFERROR(INDEX($E$10:$E$18,SMALL(IF($C$10:$C$18=$I$2,IF(MATCH($C$10:$C$18&$E$10:$E$18,$C$10:$C$18&$E$10:$E$18,0)=(ROW($E$10:$E$18)-9),ROW($E$10:$E$18),2097153),2097153),ROWS($A$1:A1))-9),"")

您必须调整范围以适应。必须注意使用数字9,因为数据从第10行开始。应该总是(n-1),假设n是数据开始的行!