Excel独特的计数与许多条件

ABCDEFGHI 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”列中“A”列中唯一条目的数量:我通过以下方法实现了这一点:

 =SUM(IF(FREQUENCY(A2:A76,A2:A76)>0,(I2:I76=3)*1,0)) 

如果我需要添加更多的条件,如“哪列”我等于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)。 (我想你已经知道,考虑你的函数在这个问题上返回一个值)

根据我的经验,这些types的公式往往变得过于复杂,而对于其他公式则完全不可理解。 为了创造出正确的结果, 保持整个公式的可理解性,我通常把它分成几个中间列。

在你的情况下,你可以:

  • 添加一列,如果我等于3,则表示X有1,否则表示0
  • 如果C等于11,则添加一列,如果Y有1,则为0
  • 添加一个“总计”列,确定是否全部为真= X * Y
  • 然后做你的总和

这可以根据您的喜好进行扩展,并保持整个过程的可追溯性。 如果它是重要的,你总是可以隐藏中间列从视图

我知道你并没有要求VBA,有没有办法解决这个问题,但是我真的觉得VBA在这种情况下是非常出色的,因为代码很容易pipe理,你可以很容易地添加/删除计数条件。

 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 

它是如何工作的 :首先它find列A中的最后一个单元格。然后将整个单元格范围转储到一个variables数组中,因为它们真的很快就可以使用。 然后它循环遍历每个colmumn A值并查看第9行(I)和第3行(C)中的值,如果它们与您的条件匹配,则将来自“A”的条目添加到dicitonary对象。 由于字典只能保存每个独特的项目之一,它会自动得到你唯一的计数! 然后我只是显示一个消息框告诉你结果。

请检查一下 – 我希望我不是唯一一个认识到VBA是如何轻松地改变和改变的人。 顺便说一句,在你发布的列表中有5个唯一的条目,其中我是3,C是11。