[Excel] Count unique item
2013/10/08 09:14
瀏覽1,387
迴響0
推薦0
引用0
在Excel 中如何計算不重複的項目有幾個呢?
直覺一點, 會先用進階篩選, 把重複的濾掉, 再 count 就 ok 了
但有沒有在原地就可以達成的公式呢?
找了一下, 其實有蠻多方式的, 但有些太複雜了, 方式A比較精簡
* 利用 SUMPRODUCT 矩陣的乘積
ex: =SUMPRODUCT((J4:J300<>"")/COUNTIF(J4:J300,J4:J300&""))
COUNTIF(J4:J300,J4:J300&"") 會傳回每個item在該範圍的個數, 後面是強制設為字串
所以會得到 1/n , 1/m, ..., 1/n, ... 的陣列, 如果出現3次的, 就會是 1/3
所有加起來就是 unique 的個數了
* 既然是陣列, 所以也可以用 SUM 陣列公式
ex: {SUM(1/COUNTIF(A2:A100,A2:A100)) }
* 用FREQUENCY (太複雜了)
=SUM(IF(FREQUENCY(IF(LEN(C3:C25)>0,MATCH(C3:C25,C3:C25,0),""), IF(LEN(C3:C25)>0,MATCH(C3:C25,C3:C25,0),""))>0,1))
=SUM(IF(FREQUENCY(C3:C25, C3:C25)>0,1))
Ref: http://superuser.com/questions/189762/how-to-count-number-of-distinct-values-in-a-range
直覺一點, 會先用進階篩選, 把重複的濾掉, 再 count 就 ok 了
但有沒有在原地就可以達成的公式呢?
找了一下, 其實有蠻多方式的, 但有些太複雜了, 方式A比較精簡
* 利用 SUMPRODUCT 矩陣的乘積
ex: =SUMPRODUCT((J4:J300<>"")/COUNTIF(J4:J300,J4:J300&""))
COUNTIF(J4:J300,J4:J300&"") 會傳回每個item在該範圍的個數, 後面是強制設為字串
所以會得到 1/n , 1/m, ..., 1/n, ... 的陣列, 如果出現3次的, 就會是 1/3
所有加起來就是 unique 的個數了
* 既然是陣列, 所以也可以用 SUM 陣列公式
ex: {SUM(1/COUNTIF(A2:A100,A2:A100)) }
* 用FREQUENCY (太複雜了)
=SUM(IF(FREQUENCY(IF(LEN(C3:C25)>0,MATCH(C3:C25,C3:C25,0),""), IF(LEN(C3:C25)>0,MATCH(C3:C25,C3:C25,0),""))>0,1))
=SUM(IF(FREQUENCY(C3:C25, C3:C25)>0,1))
Ref: http://superuser.com/questions/189762/how-to-count-number-of-distinct-values-in-a-range
你可能會有興趣的文章: