[英]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.