如果我有 C3:C15 范圍內的值串列,此公式如何計算唯一值?
=SUMPRODUCT((C3:C15<>"")/COUNTIF(C3:C15,C3:C15&""))
| 顧客 |
|---|
| 客戶 1 |
| 客戶 5 |
| 客戶 2 |
| 客戶 4 |
| 客戶 4 |
| 客戶 6 |
| 客戶 1 |
| 客戶 2 |
| 客戶 1 |
| 客戶 3 |
| 客戶 3 |
| 客戶 3 |
| 客戶 4 |
uj5u.com熱心網友回復:
有時最容易將公式分解成各個部分并從那里開始。
=C3:C15<>""
將為任何非空白單元格回傳 TRUE。然后 SUMPRODUCT 將該布林值 TRUE 視為 1。如果回傳 FALSE,則將其視為 0。
=COUNTIF(C3:C15,C3:C15&"")
將回傳在串列中找到該值的次數。通過&""在末尾添加,您可以保證始終回傳至少一個 1,從而消除任何除以零的錯誤。
合并后,您會得到如下所示的內容:
| 來源 | =C3:C15<>"" | =COUNTIF(C3:C15,C3:C15&"") | 列 B / 列 C |
|---|---|---|---|
| 客戶 1 | 1 | 3 | 0.333333 |
| 客戶 5 | 1 | 1 | 1 |
| 客戶 2 | 1 | 2 | 0.5 |
| 客戶 4 | 1 | 3 | 0.333333 |
| 客戶 4 | 1 | 3 | 0.333333 |
| 客戶 6 | 1 | 1 | 1 |
| 客戶 1 | 1 | 3 | 0.333333 |
| 客戶 2 | 1 | 2 | 0.5 |
| 客戶 1 | 1 | 3 | 0.333333 |
| 客戶 3 | 1 | 3 | 0.333333 |
| 客戶 3 | 1 | 3 | 0.333333 |
| 客戶 3 | 1 | 3 | 0.333333 |
| 客戶 4 | 1 | 3 | 0.333333 |
當您對除法列求和時,通過使用 SUMPRODUCT 函式,對于六個唯一值,您總共得到六個。
如果您使用的是 Excel 365 ,您將獲得相同的結果:
=COUNTA(UNIQUE(FILTER(C3:C14,C3:C14<>"")))
uj5u.com熱心網友回復:
a)C3:C15<>""對于所有包含某些內容的單元格,計算結果為 1,對于空白單元格,計算結果為 0。
b)COUNTIF(C3:C15, C3:C15&"")回傳一個陣列,顯示每個數字在范圍內出現的次數。因此,如果范圍中的第一個值也在范圍內的其他地方再次出現,則回傳陣列的第一個值是 2(它出現了兩次)。根據@JodyHighroller 的評論,&""確保將空白單元格計為一個值,以避免在以下步驟中被零除錯誤。c) (a) 除以 (b) 回傳,對于非空值,出現一次的值是 1,出現兩次的值是 1/2,出現 3 次的值是 1/3,以此類推。每個唯一的串列項將被賦予加起來為 1 的值。因為步驟 (a) 對空白單元格的計算結果為 0,因此在此階段所有空白單元格的計算結果為 0(0/1 = 0、0/2 = 0 等)。
d)SUMPRODUCT(...)上面的將它們加在一起,每個唯一值的總和為 1,所以所有這些的總和就是唯一值的數量。(SUM真的會做同樣的事情)
一個更容易理解的做同樣事情的公式是=COUNT(UNIQUE(C3:C15) - IF(COUNTBLANK(C3:C15)>0, 1, 0)(需要第二部分,因為UNIQUE函式回傳 0 來表示空白單元格)。然而,這在一些舊版本的 Excel 中不起作用,獨特的功能是一個相當新的東西。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/371441.html
標籤:擅长
