小伙伴們好啊,今天和大家一起說說COUNTIF函數(shù)的那些事兒。 這個函數(shù)用于在一個指定區(qū)域內(nèi)統(tǒng)計符合條件的個數(shù)。 函數(shù)的用法非常簡單: =COUNTIF(數(shù)據(jù)區(qū)域,指定的條件) 第一參數(shù)是數(shù)據(jù)范圍,第二參數(shù)是指定的統(tǒng)計條件。以下幾個都是常用的寫法: =COUNTIF(A:A,6) 在A列中統(tǒng)計有多少個6。 =COUNTIF(A:A,'>6') 在A列中統(tǒng)計大于6的數(shù)值個數(shù)。 =COUNTIF(A:A,B1) 在A列中統(tǒng)計與B1內(nèi)容相同的單元格個數(shù)。 =COUNTIF(A:A,'>'&B1) 在A列中統(tǒng)計大于B1的單元格個數(shù)。 注意這里的條件寫法,如果是和存放在單元格里的數(shù)值進行比較,需要先在一對英文引號中寫上比較符號,然后用&與單元格地址連接才行。 另外,這個函數(shù)的第二參數(shù)還支持使用通配符,例如: =COUNTIF(A:A,'*老師') 就是統(tǒng)計A列中,最后兩個字是“老師”的個數(shù),不管王老師、張老師還是蒼老師,只要最后兩個字是“老師”就算一個。 除了這些基礎(chǔ)的用法,再和大家分享COUNTIF函數(shù)幾個高能的應(yīng)用,一起領(lǐng)略COUNTIF函數(shù)的魅力。 特別說明一下,后面的內(nèi)容難度系數(shù)高了一些,有小伙伴看到最后可能會出現(xiàn)頭暈?zāi)X脹以及騰云駕霧等不良反應(yīng)了,哈哈。 不過看不懂也沒關(guān)系,一口吃不成胖子,一天也減不成瘦子,先收藏一下備用,循序漸進慢慢學(xué)~~ 一、不一樣的序號 如下圖所示,要在A列按部門輸入序號,不同部門的序號從1開始。 在A2單元格輸入公式,向下復(fù)制: =COUNTIF(B$2:B2,B2) COUNTIF函數(shù)的統(tǒng)計區(qū)域是B$2:B2,第一個B2是行絕對引用,第二個B2,是相對引用。當公式向下復(fù)制時,就會變成B$2:B3、B$2:B4……一個不斷擴展的區(qū)域,從這個動態(tài)區(qū)域中統(tǒng)計B列部門的個數(shù)。 二、計算不重復(fù)的人數(shù) 如下圖所示,要計算C列不重復(fù)的人數(shù)。 公式為: =SUMPRODUCT(1/COUNTIF(C2:C14,C2:C14)) 這是一個十分常用的統(tǒng)計不重復(fù)數(shù)據(jù)個數(shù)的公式。 其中包含了一個簡單的數(shù)學(xué)邏輯: 任意一個數(shù)據(jù)重復(fù)出現(xiàn)N次,N個1/N相加,結(jié)果就是為1。 公式中“COUNTIF(C2:C14,C2:C14)”部分是數(shù)組計算,作用是分別統(tǒng)計C2:C14單元格區(qū)域中每個元素出現(xiàn)的次數(shù)。 運算過程相當于: =COUNTIF(C2:C14,C2) =COUNTIF(C2:C14,C3) …… =COUNTIF(C2:C14,C14) 返回內(nèi)存數(shù)組結(jié)果為: {1;1;1;2;1;3;2;1;3;1;1;1;3} 再使用1除以返回的內(nèi)存數(shù)組,得到以下結(jié)果: {1;1;1;0.5;1;0.33333;0.5;1;0.33333;1;1;1;0.33333} 用1除,即相當于計算COUNTIF函數(shù)所返回內(nèi)存數(shù)組的倒數(shù)。 為便于理解,把這一步的結(jié)果中的小數(shù)部分使用分數(shù)代替,結(jié)果為: {1;1;1;1/2;1;1/3;0.5;1;1/3;1;1;1;1/3} 如果單元格的值在區(qū)域中是唯一值,這一步的結(jié)果是1。 如果重復(fù)出現(xiàn)兩次,這一步的結(jié)果就有兩個1/2。 如果單元格的值在區(qū)域中重復(fù)出現(xiàn)3次,結(jié)果就有3個1/3… 即每個元素對應(yīng)的倒數(shù)合計起來結(jié)果仍是1。 最后用SUMPRODUCT函數(shù)求和,得出不重復(fù)的人員總數(shù)。 三、提取不重復(fù)名單 如下圖所示,要提取C列不重復(fù)的名單。 公式為: =INDEX(C:C,1 MATCH(,COUNTIF(E$1:E1,C$2:C$15),))&'' 注意是數(shù)組公式,編輯完成后,要按Ctrl Shift 回車。 首先利用COUNTIF函數(shù),在公式所在位置上方的單元格區(qū)域中,分別查找C$2:C$15單元格區(qū)域每個數(shù)據(jù)的個數(shù)。 公式返回一個由0和1構(gòu)成的數(shù)組,如果C$2:C$15單元格區(qū)域的元素在公式上方出現(xiàn)過,結(jié)果就是1;如果沒出現(xiàn),結(jié)果就是0。 和第一個例子里一樣,COUNTIF函數(shù)的第一參數(shù)是一個擴展的區(qū)域,公式的提取結(jié)果會被重復(fù)利用。 再利用MATCH函數(shù),在COUNTIF函數(shù)返回的數(shù)組中查找第一個0的位置,也就是查找首次出現(xiàn)的數(shù)據(jù)所在的位置。 由于數(shù)據(jù)表的標題行占了1行,將這個數(shù)字加1,就是需要提取的不重復(fù)數(shù)據(jù)在數(shù)據(jù)表中列的位置。 再利用INDEX函數(shù),以MATCH函數(shù)的計算結(jié)果作為索引值,提取C列對應(yīng)位置上的數(shù)據(jù)。 這個公式從最后開始往上看,比較容易理解一些。 作者:祝洪忠 |
|
來自: wzawxt > 《軟件應(yīng)用》