Excel技巧:Excel如何統計單元格中不重複的數字個數?
看看下面這個問題,一看就是一個高難度的問題,一個彩票號碼中不重複的個數,B2為啥是5?A1單元格的彩票號9376343,除了3重複之外,9,7,6,4都不重複,在加上3,一共是五個數字。
場景:彩票分析,重複項統計、數據分析等的辦公人士。
問題:Excel如何統計單元格中不重複的數字個數?
解答:利用count+find函數嵌套搞定
具體操作如下:直接在下圖C4單元格,輸入如下公式:=COUNT(FIND(ROW($A$1:$A$11)-1,B4))注意公式中A1:A11的範圍正好是1-11這個數值範圍。為甚麼呢?過會給大家解釋。
輸入該公式後,需要按住Ctrl+Shift,然後在敲擊“Enter回車鍵”即可。(Ctrl+Shift+enter是數組公式的錄入按鍵),敲擊完成後,注意公式會前後兩段加上大括號{}。(下圖箭頭處)大括號是說明該公式為數組公式。
輸入完畢後,雙擊C4單元格右下角的數據填充柄(上圖箭頭1所示),即可完成公式複製,算出每行B列彩票的不重複的數字個數。大家可以驗證一下這個數值是否正確。
我們需要搞清楚這個公式的用意,才能做到舉一反三。
=COUNT(FIND(ROW($A$1:$A$11)-1,B4))
上面這個公式用了三個函數,先來看看ROW函數。ROW返回單元格所在的行數,舉例如下,求B25單元格所在的行數,那肯定是25。
那ROW($A$1:$A$11)是甚麼鬼?如果你輸入進去試試,你會發現行數為1.效果如下圖:
也就是說ROW正常情況下只取第一個單元格的行數,那為甚麼要選擇區域呢?主要為了數組公式配合。那是數值公式,簡單的講就是按數據區域(面)來進行統計的方式。如果按照數組的思路,那麼ROW(A1:A11),就能統計出A1到A11單元格每一行的行數,即1,2,3,4,5,6,7,8,9,10,11。
那ROW($A$1:$A$11)-1,是甚麼就是每一行都減去1行,就變成0,1,2,3,4,5,6,7,8,9,10。其實這個函數主要為了產生1-10的一個數字。接下來學習一下FIND函數。FIND函數主要是取得某個數在某個單元格的開始位置。舉例如下:比如要找6這個數字在B4單元格中數值的位置,返回是4。表明6在9376343這個數字的從左往右數是第四個。
FIND(ROW($A$1:$A$11)-1,B4)那麼把ROW嵌套到FIND裡面,無非就是為了告訴FIND,要找0,1,2,3,4,5,6,7,8,9,10在單元格中的位置。如果這個數字有,就會返回一個位置數字。
=COUNT(FIND(ROW($A$1:$A$11)-1,B4))而在外面在套一個count函數,就是對有位置的數字進行計數統計,從而算出不重複的數字的個數。牛閃閃用“公式求值功”能來追蹤一下,選中下圖C4單元格,點擊“公式—公式求值”,在新彈窗口中點擊“求值”,就可以進行逐步運算。
看,分別尋找0-10,在B4中的位置,分別返回位置數。
在繼續點求值,就會出下下圖效果,可以看到0,1,2在9376343中沒有,所以是#value!(錯誤值)。3在9376343中為第二位,所以返回是2,4在在9376343中為第六位,所以是6,以此類推算出能在9376343找到的數字的位數。
最後利用count函數的特性,只統計數字的個數,自動忽略錯誤值,所以算出不重複的數字的個數。如下圖所示:
如果你理解的話,你會發現上面的公式寫得不是那麼完美,其實只要判斷0-9的數字就可以了,幹嘛要到10呢。所以把公式改改:把A1:A11改成A1:A10也是可以的,記住將光標停在編輯欄,在按Ctrl+Shift+enter鍵進行公式錄入,才有效。
甚至可以直接改成數組的寫法,記得用大括號括起來,這樣直接敲回車enter就可以錄入公式。
總結:這個案例是不是有點小難度,但如果你理解數組其實按區域面積進行統計後,你就會發現其實想象中那麼難。通常簡單函數的“高端”用法就是數組思路解決問題。希望對大家有所幫助。
該技巧Excel2007版本及以上有效。