[英]Excel distinct count with many conditions
A B C D E F G H I
115492 2009 10 42 5 90160624 15-Oct-09 WH 5
115492 2009 10 42 5 90160624 15-Oct-09 WH 5
115492 2009 10 42 5 90160624 15-Oct-09 WH 5
115492 2009 10 42 5 90160624 15-Oct-09 WH 5
115481 2009 10 44 6 90170587 30-Oct-09 WH 3
115481 2009 10 44 6 90170587 30-Oct-09 WH 3
115481 2009 10 44 6 90170587 30-Oct-09 WH 3
115481 2009 10 44 6 90170587 30-Oct-09 WH 3
115481 2009 10 44 6 90170587 30-Oct-09 WH 3
115481 2009 10 44 6 90170587 30-Oct-09 WH 3
115481 2009 10 44 6 90170587 30-Oct-09 WH 3
115481 2009 10 44 6 90170587 30-Oct-09 WH 3
115481 2009 10 44 6 90170587 30-Oct-09 WH 3
115520 2009 11 45 5 90174693 5-Nov-09 WH 3
115520 2009 11 45 5 90174693 5-Nov-09 WH 3
115520 2009 11 45 5 90174693 5-Nov-09 WH 3
115520 2009 11 45 5 90174693 5-Nov-09 WH 3
115502 2009 11 46 6 90179821 13-Nov-09 WH 3
115502 2009 11 46 6 90179821 13-Nov-09 WH 3
115502 2009 11 46 6 90179821 13-Nov-09 WH 3
115502 2009 11 46 6 90179821 13-Nov-09 WH 3
115502 2009 11 46 6 90179821 13-Nov-09 WH 3
115502 2009 11 46 6 90179821 13-Nov-09 WH 3
115502 2009 11 46 6 90179821 13-Nov-09 WH 3
115502 2009 11 46 6 90179821 13-Nov-09 WH 3
115502 2009 11 46 6 90179821 13-Nov-09 WH 3
123057 2009 11 46 3 90182107 17-Nov-09 WH 3
123057 2009 11 46 3 90182107 17-Nov-09 WH 3
123057 2009 11 46 3 90182107 17-Nov-09 WH 3
123057 2009 11 46 3 90182107 17-Nov-09 WH 3
123056 2009 11 47 3 90186948 24-Nov-09 WH 3
123056 2009 11 47 3 90186948 24-Nov-09 WH 3
123056 2009 11 47 3 90186948 24-Nov-09 WH 3
123056 2009 11 47 3 90186948 24-Nov-09 WH 3
115506 2009 11 47 3 90186673 24-Nov-09 WH 5
115506 2009 11 47 3 90186673 24-Nov-09 WH 5
115506 2009 11 47 3 90186673 24-Nov-09 WH 5
115506 2009 11 47 3 90186673 24-Nov-09 WH 5
115506 2009 11 47 3 90186673 24-Nov-09 WH 5
115506 2009 11 47 3 90186673 24-Nov-09 WH 5
115506 2009 11 47 3 90186673 24-Nov-09 WH 5
115506 2009 11 47 3 90186673 24-Nov-09 WH 5
115496 2009 11 47 4 90187409 25-Nov-09 WH 3
115496 2009 11 47 4 90187409 25-Nov-09 WH 3
115496 2009 11 47 4 90187409 25-Nov-09 WH 3
115496 2009 11 47 4 90187409 25-Nov-09 WH 3
123058 2009 12 50 5 90198449 10-Dec-09 WH 3
123058 2009 12 50 5 90198449 10-Dec-09 WH 3
123058 2009 12 50 5 90198449 10-Dec-09 WH 3
123058 2009 12 50 5 90198449 10-Dec-09 WH 3
115522 2009 12 50 7 90200094 12-Dec-09 WH 7
115522 2009 12 50 7 90200094 12-Dec-09 WH 7
115522 2009 12 50 7 90200094 12-Dec-09 WH 7
115522 2009 12 50 7 90200094 12-Dec-09 WH 7
115522 2009 12 50 7 90200094 12-Dec-09 WH 7
123059 2009 12 51 6 90203897 18-Dec-09 WH 4
123059 2009 12 51 6 90203897 18-Dec-09 WH 4
123059 2009 12 51 6 90203897 18-Dec-09 WH 4
123059 2009 12 51 6 90203897 18-Dec-09 WH 4
115539 2009 12 51 7 90204074 19-Dec-09 WH 5
115539 2009 12 51 7 90204074 19-Dec-09 WH 5
115539 2009 12 51 7 90204074 19-Dec-09 WH 5
115539 2009 12 51 7 90204074 19-Dec-09 WH 5
115539 2009 12 51 7 90204074 19-Dec-09 WH 5
115539 2009 12 51 7 90204074 19-Dec-09 WH 5
115541 2009 12 51 7 90204389 19-Dec-09 WH 4
115541 2009 12 51 7 90204389 19-Dec-09 WH 4
115541 2009 12 51 7 90204389 19-Dec-09 WH 4
115541 2009 12 51 7 90204389 19-Dec-09 WH 4
115534 2009 12 52 2 90209074 28-Dec-09 WH 5
115534 2009 12 52 2 90209074 28-Dec-09 WH 5
115534 2009 12 52 2 90209074 28-Dec-09 WH 5
115534 2009 12 52 2 90209074 28-Dec-09 WH 5
115534 2009 12 52 2 90209074 28-Dec-09 WH 5
115534 2009 12 52 2 90209074 28-Dec-09 WH 5
我需要计算“ A”列中唯一条目的数量,其中“ I”列等于3:我是通过以下方式实现的:
=SUM(IF(FREQUENCY(A2:A76,A2:A76)>0,(I2:I76=3)*1,0))
如果我需要添加更多条件,例如“列'I'等于3,列'C'等于11”怎么办?
我尝试了这个:
=SUM(IF(FREQUENCY(A2:A76,A2:A76)>0,(AND(I2:I76=3, C2:C76 = 11))*1,0))
但是,这个公式不能给我正确的数字。 正确的公式是什么?
这样乘以条件:
=SUM(IF(FREQUENCY(A2:A76,A2:A76)>0,(I2:I76=3)*(C2:C76=11)*1,0))
这必须是一个数组公式(输入公式后按Ctrl + Shift + Enter)。 (我想您已经知道考虑问题中的函数返回了一个值)
根据我的经验,这些类型的公式往往变得过于复杂,而其他人则完全无法理解。 要创建正确的结果,并保持整个公式可以理解的,我通常把它分解成几个中间列。
在您的情况下,您可以:
可以将其扩展到您希望的程度,并使整个过程可追溯。 并且,如果有任何重要意义,您始终可以从视图中隐藏中间列
我知道您没有要求VBA,没有它也可以解决此问题,但是我真的觉得VBA在这种情况下很出色,因为代码是如此易于管理,并且您可以轻松添加/删除计数条件。
Sub SpecialCount()
Dim vArray As Variant
Dim lastRow As Long
Dim i As Long
Dim dict As Object
Set dict = CreateObject("scripting.dictionary")
lastRow = range("A" & Rows.count).End(xlUp).Row
vArray = range("A1", "I" & lastRow).Value
On Error Resume Next
For i = 1 To UBound(vArray, 1)
'Condition 1
If vArray(i, 9) = 3 Then
'Condition 2
If vArray(i, 3) = 11 Then
dict.Add vArray(i, 1), 1
End If
End If
Next
MsgBox dict.count & " unique entries found."
End Sub
工作原理 :首先,它在列n中找到最后一个单元。然后,我将整个范围的单元都转储到变量数组中,因为它们的处理速度非常快。 然后,它仅循环浏览每个库仑A值,并查看第9行(I)和第3行(C)中的值,如果它们符合您的条件,则将“ A”中的条目添加到一个数字对象中。 由于词典只能容纳每个唯一项,因此它会自动为您获得唯一计数! 然后,我只显示一个消息框,告诉您结果。
请检查一下-我希望我不是唯一一个欣赏VBA漫画和改动多么容易的人。 顺便说一句,您发布的列表中有5个唯一条目,其中I为3,C为11。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.