我有一个.xls
文件,其中包含一些包含一些数据的列。如何计算包含此列的唯一值的数量?
我搜索了很多选项,但是他们给出的公式总是给我错误。例如,
=INDEX(List, MATCH(MIN(IF(COUNTIF($B$1:B1, List)=0, 1, MAX((COUNTIF(List, "<"&List)+1)*2))*(COUNTIF(List, "<"&List)+1)), COUNTIF(List, "<"&List)+1, 0))
返回
答案 0 :(得分:105)
要计算A2中不同值的数量:A100(不计算空白):
=SUMPRODUCT((A2:A100<>"")/COUNTIF(A2:A100,A2:A100&""))
从@ Ulli Schmid的答案复制到What is this COUNTIF() formula doing?:
=SUMPRODUCT((A1:A100<>"")/COUNTIF(A1:A100,A1:A100&""))
计算A1:A100中的唯一单元格,排除空白单元格和空字符串(“”)。
它是如何做到的?示例:
A1:A100 = [1, 1, 2, "apple", "peach", "apple", "", "", -, -, -, ...]
then:
A1:A100&"" = ["1", "1", "2", "apple", "peach", "apple", "", "", "", "", "", ...]
因此需要将&amp;“”将空白单元格( - )转换为空字符串(“”)。如果您直接使用空白单元格计数,COUNTIF()将返回0.使用该技巧,“”和 - 都计为相同:
COUNTIF(A1:A100,A1:A100) = [2, 2, 1, 2, 1, 2, 94, 94, 0, 0, 0, ...]
but:
COUNTIF(A1:A100,A1:A100&"") = [2, 2, 1, 2, 1, 2, 94, 94, 94, 94, 94, ...]
如果我们现在想要得到所有唯一单元格的数量,不包括空格和“”,我们可以划分
(A1:A100<>""), which is [1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, ...]
通过我们的中间结果COUNTIF(A1:A100,A1:A100&amp;“”),并对这些值进行总结。
SUMPRODUCT((A1:A100<>"")/COUNTIF(A1:A100,A1:A100&""))
= (1/2 + 1/2 + 1/1 + 1/2 + 1/1 + 1/2 + 0/94 + 0/94 + 0/94 + 0/94 + 0/94 + ...)
= 4
如果我们使用COUNTIF(A1:A100,A1:A100)
而不是COUNTIF(A1:A100,A1:A100&"")
,则其中一些0/94将为0/0。由于不允许除零,我们会抛出错误。
答案 1 :(得分:15)
尝试 - =SUM(IF(FREQUENCY(MATCH(COLUMNRANGE,COLUMNRANGE,0),MATCH(COLUMNRANGE,COLUMNRANGE,0))>0,1))
其中 COLUMNRANGE =您拥有这些值的范围。
e.g。 - =SUM(IF(FREQUENCY(MATCH(C12:C26,C12:C26,0),MATCH(C12:C26,C12:C26,0))>0,1))
按Ctrl + Shift + Enter使公式成为一个数组(否则将无法正确计算)
答案 2 :(得分:11)
这是获取唯一值计数以及获取唯一值的另一种快捷方式。将您关心的列复制到另一个工作表中,然后选择整个列。点击数据 - &gt;删除重复项 - &gt;好。这将删除所有重复的值。
答案 3 :(得分:9)
这是一个优雅的数组公式(我在这里找到http://www.excel-easy.com/examples/count-unique-values.html)可以很好地完成这个工作:
类型
= SUM(1 / COUNTIF(列表,列表))
并使用CTRL-SHIFT-ENTER
确认答案 4 :(得分:3)
根据条件计算唯一。 Col A
是ID并使用条件ID=32
,Col B
是Name,我们正在尝试计算特定ID的唯一名称
=SUMPRODUCT((B2:B12<>"")*(A2:A12=32)/COUNTIF(B2:B12,B2:B12))
答案 5 :(得分:2)
刚刚发生在我身上的另一种棘手的方式(测试过并且有效!)。
Conditional Formatting
,Highlight Cells
,Duplicate Values
Data
,然后转到Filter
根据颜色过滤:
不可否认,对于一次性的数据检查,这比您经常使用的电子表格要多,因为它需要进行一些格式更改。
答案 6 :(得分:1)
您可以执行以下步骤:
首先隔离色谱柱(如果有任何相邻的色谱柱,在色谱柱之前和/或之后插入一个空白色谱柱;
然后选择整栏,转到'数据'&gt; “高级过滤器”并选中“仅限唯一记录”复选框。这将隐藏所有非唯一记录,以便您可以通过选择整列来计算唯一记录。
答案 7 :(得分:1)
如果使用Mac
pbpaste|sort -u|wc -l
Linux用户将pbpaste
替换为xclip xsel或类似的
Windows用户,它可能但需要一些脚本...... 以http://brianreiter.org/2010/09/03/copy-and-paste-with-clipboard-from-powershell/
开头答案 8 :(得分:0)
您可以为唯一记录计数添加新公式
=IF(COUNTIF($A$2:A2,A2)>1,0,1)
现在,您可以使用数据透视表并获得SUM
唯一记录计数。
如果您有两行或更多行存在相同的值,但您希望数据透视表报告唯一计数,则此解决方案效果最佳。
答案 9 :(得分:0)
我正在使用第1行包含标题的电子表格,数据位于第2行及以下。
ID位于A列。要计算有多少不同的值,我将此公式从第2行放到第一个可用列的电子表格末尾[在我的情况下为F]:"=IF(A2=A1,F1+1,1)"
。
然后我在免费单元格中使用以下公式:"=COUNTIF(F:F,1)"
。通过这种方式,我确信每个ID都会被计算在内。
请注意,必须对ID进行排序,否则它们将被计算多次...但与数组公式不同,即使使用 150000 行电子表格也非常快。
答案 10 :(得分:0)
使用动态数组公式(自此发布起,仅适用于Office 365内部人员):
=COUNTA(UNIQUE(A:A))
答案 11 :(得分:-1)
我的数据集是D3:D786,D2中的列标题,D1中的功能。公式将忽略空白值。
= SUM(IF(频率(IF(小计(3,OFFSET(D3,ROW(D3:D786)-ROW(D3),, 1)),IF(D3:D786&LT;&GT;&#34;& #34;,MATCH(&#34;〜&#34;&安培; D3:D786,D3:D786&安培;&#34;&#34;,0))),ROW(D3:D786)-ROW(D3) 1),1))
输入公式时,按CTRL + SHIFT + ENTER
我在下面的网站上找到了这个,有关于Excel的更多解释,我不明白,如果你进入那种事情。
我将我的数据集复制并粘贴到另一张表格中以验证它并且它对我有效。