countif函式多條件計數(多條件不重複計數函式)
通常情況下,要實現多條件查詢首先想到的會是LOOKUP函式、要實現多條件求和首先會想到SUMIIFS函式或者DSUM函式、要實現多條件計數首先會想到COUNTIFS函式或者DCOUNT函式、要實現不重複計數首先會想到刪除重複項在計數。接下來為朋友們分享一個可以實現上述所有功能的函式(SUMPRODUCT函式)。
一.SUMPRODUCT函式的本質功能:返回相應陣列或區域乘積的和,每個引數的陣列或區域大小必須一致。
二.SUMPRODUCT函式實現多條件查詢。
在下面這個例項中查詢品牌為蘋果,型號為iphone6的手機的銷量。在銷量下方的單元格輸入公式=SUMPRODUCT((A2:A13=D2)*1,(B2:B13=E2)*1,C2:C13)。
說明:
1.公式中的(A2:A13=D2)返回一個由邏輯值組成的陣列,當A2:A13的單元格內容等於D2單元格內容時返回邏輯值TRUE;否則,返回邏輯值FALSE。最終返回的是一個由{FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;TRUE;TRUE;FALSE;FALSE;FALSE;TRUE}組成的陣列。
2.邏輯值乘數字1會把邏輯值TRUE轉化成數字1,把邏輯值FALSE轉化為數字0。公式中的(A2:A13=D2)*1返回一個由數字0和1組成的陣列,當A2:A13的單元格內容等於D2單元格內容時返回邏輯值1;否則,返回邏輯值0。最終返回的是一個由{0;0;0;0;1;0;1;1;0;0;0;1}組成的陣列。
3.公式中的(B2:B13=E2)*1的部分和(B2:B13=E2)原理同上。
4.選擇公式中的部分內容摁住鍵盤上的F9鍵可以檢視計算結果,例如選中(A2:A13=D2)*1摁下F9會顯示{0;0;0;0;1;0;1;1;0;0;0;1}。
三.SUMPRODUCT函式實現多條件計數。
在下面這個例項中統計三年二班語文成績大於90的學生的人數。在人數下方的單元格輸入公式=SUMPRODUCT((B2:B83=H2)*1,(C2:C83>90)*1)。
說明:
1.公式中(C2:C83>90)當C2:C83的單元格內容大於90時返回邏輯值TRUE;否則,返回邏輯值FALSE。最終返回的是一個由邏輯值組成的陣列。
2.其他解釋與多條件查詢類似,這裡不再贅述。
四.SUMPRODUCT函式實現多條件求和。
在下面這個例項中統計品牌為蘋果、銷量大於1800的銷量總和。在總和下方的單元格輸入公式=SUMPRODUCT((A2:A13=D2)*1,(C2:C13>1800)*1,C2:C13)。
說明:
1.公式解釋與多條件查詢和多條件計數類似,這裡不在贅述。
2.配合上述所講的多條件計數可以計算平均值(兩個公式相除即可)。
五.SUMPRODUCT函式實現不重複計數。
在下面這個例項中統計所有排名的個數(不統計重複出現)。在不重複個數下方的單元格輸入公式=SUMPRODUCT(1/COUNTIF($A$2:$A$13,$A$2:$A$13))。
說明:
1.公式中COUNTIF($A$2:$A$13,$A$2:$A$13)返回的是A2:A13單元格中內容出現次數的陣列,最終返回的是一個由{4;4;5;4;3;5;5;3;4;5;5;3}組成的陣列。
2.公式中1/COUNTIF($A$2:$A$13,$A$2:$A$13)返回的上一個陣列的倒陣列成的陣列,最終是由{0.25;0.25;0.2;0.25;0.333333333333333;0.2;0.2;0.333333333333333;0.25;0.2;0.2;0.333333333333333}組成的陣列。這個陣列的構造完成之後可以確保每一個品牌所對應的陣列的元素的和正好等於1,配合SUMPRODUCT函式就可以實現不重複計數。