不重復唯一值,這是在 Excel 里處理數據經常能遇到的問題。例如,統計不重復數量、篩選不重復值、刪除重復值、提取重復值等。今天我們來學習,寫統計不重復數量的公式。
問題描述
如何統計一區域中以不重復項的數量?

思路分析
1. 使用 COUNTIF 函數,在生源地列中,分別統計每一行生源地在整列中出現的次數,並以數組形式返回出現次數。
公式為:=COUNTIF(生源地,生源地)
2. 針對某一個生源地,假設它出現了 n 次,那么在返回的出現次數數組中占用 n 個位置,並且每個位置的值為 n。
例如數據列為 A, B, C, C, A, A,則返回的數組為,{3, 1, 2, 2, 3, 3},即 A 出現在3 個位置,每個位置的值為 3。
3.一個生源地無論出現多少次,都應只記一次。根據上述描述,如果將返回的出現次數數組里的每一項被一除並相加,剛好的到不重復項的數量。
例如,{3, 1, 2, 2, 3, 3} → 1/3 + 1/1 + 1/2 + 1/2 + 1/3 + 1/3 = 3 。
方法步驟
1. 輸入 SUMPRODUCT函數:
= SUMPRODUCT(
2. 接着輸入SUMPRODUCT 函數的參數,被一除的 COUNTIF 函數:
=SUMPRODUCT(1/COUNTIF(
3. 最后輸入 COUNTIF 函數的參數,統計區域為生源地列,統計條件為所有的生源地。最后回車完成輸入公式。
=SUMPRODUCT(1/COUNTIF(B:B,B2:B19))

可能出現的錯誤
當區域中含有空白單元格時,公式會出現 #DIV/0 錯誤。這是因為在 COUNTIF函數中,空白單元格在其兩個參數表示不同的含義。
當空白單元格在統計區域參數時,被當做空字符 "";當在判斷條件參數時,被當做零。因此當 COUNTIF 函數判斷條件引用空白單元格時,其表示零,統計值為零。如果將其被一除,則返回 #DIV/0 錯誤。

為了避免錯誤的產生,可以將判斷條件連接一空字符,這樣有內容的單元格不受影響,空白單元格則變成空字符,與統計區域保持一致。這種情況,空白單元格也計算為一個不重復項。
=SUMPRODUCT(1/COUNTIF(B2:B19,B2:B19&""))
總結
你可能已經有疑問了,如何想到用 1 除?這個嚴格來說不是 Excel 問題,是算法問題。Excel 用兩個函數巧妙的實現了該算法,最后得到目標值。建議記住該算法,在 Excel 很多問題上,會用到「1 除」概念,可以快速解決一些復雜的問題。
作者:懶人Excel
鏈接:https://www.jianshu.com/p/45016c1c1bce
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。