在Excel中的列中计算唯一值
我有一个包含一些数据的列的.xls
文件。 我如何计算包含此列的唯一值的数量?
我search了很多选项,但是他们给出的公式总是给我错误。 例如,
=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))
回报
要计算A2:A100中的不同值的数量(不计空白):
=SUMPRODUCT((A2:A100<>"")/COUNTIF(A2:A100,A2:A100&""))
从@ Ulli Schmid的答案复制到这个COUNTIF()公式是做什么的? :
=SUMPRODUCT((A1:A100<>"")/COUNTIF(A1:A100,A1:A100&""))
计算A1:A100中的唯一单元格 , 不包括空白单元格和空string(“”)。
它是如何做到的? 例:
A1:A100 = [1, 1, 2, "apple", "peach", "apple", "", "", -, -, -, ...] then: A1:A100&"" = ["1", "1", "2", "apple", "peach", "apple", "", "", "", "", "", ...]
所以这个&“”是需要将空白单元格( – )变成空string(“”)。 如果直接使用空白单元格计数,则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&“”),并且总结这些值。
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。 由于被零除是不允许的,我们会抛出一个错误。
try – =SUM(IF(FREQUENCY(MATCH(COLUMNRANGE,COLUMNRANGE,0),MATCH(COLUMNRANGE,COLUMNRANGE,0))>0,1))
其中COLUMNRANGE =你有这些值的范围。
例如 – =SUM(IF(FREQUENCY(MATCH(C12:C26,C12:C26,0),MATCH(C12:C26,C12:C26,0))>0,1))
按下Ctrl + Shift + Enter使公式成为一个数组(否则不会正确计算)
这里有另一种快速的方法来获得唯一的值计数,以及获得独特的价值。 将您关心的列复制到另一个工作表中,然后select整个列。 点击Data – > Remove Duplicates – > OK。 这将删除所有重复的值。
这里有一个优雅的数组公式(这里我发现http://www.excel-easy.com/examples/count-unique-values.html )很好地做了这个技巧:
types
= SUM(1 / COUNTIF(列表,列表))
并用CTRL-SHIFT-ENTER确认
计数独特的条件。 Col A
是ID,使用条件ID=32
,Col B
是Name,我们正在计算特定ID的唯一名称
=SUMPRODUCT((B2:B12<>"")*(A2:A12=32)/COUNTIF(B2:B12,B2:B12))
您可以执行以下步骤:
-
首先隔离列(如果存在任何相邻的列,则通过在列的前面和/或后面插入空列来计算唯一值;
-
然后select整个列,进入“数据”>“高级筛选”,然后选中“仅限唯一logging”checkbox。 这将隐藏所有非唯一的logging,所以你可以通过select整个列来计数唯一的logging。
另一个棘手的方式,刚刚发生在我身上(testing,它的工作!)。
- select列中的数据
- 在菜单中,select“
Conditional Formatting
,“Highlight Cells
,“Duplicate Values
- select是否要突出显示唯一或重复的值。
- 保存高亮显示
- select数据
- 转到
Data
,然后Filter
根据颜色过滤:
不可否认的是,对于数据的一次性检查而言,这比经常使用的电子表格更为重要,因为这需要进行一些格式更改。
如果使用Mac
- 高亮栏
- 复制
- 打开terminal.app
- 键入
pbpaste|sort -u|wc -l
Linux用户用xclip xsel或类似软件replacepbpaste
Windows用户,这是可能的,但会采取一些脚本…从http://brianreiter.org/2010/09/03/copy-and-paste-with-clipboard-from-powershell/
您可以为唯一logging计数添加新的公式
=IF(COUNTIF($A$2:A2,A2)>1,0,1)
现在,您可以使用数据透视表并获取唯一logging计数的总和。 如果存在相同值的两行或更多行,但是您希望数据透视表报告唯一计数,则此解决scheme效果最佳。
我正在使用第1行标题的电子表格,数据在第2行和下面。
ID在列A中。为了计算有多less个不同的值,我把这个公式从第2行到第一个可用列[F在我的情况]的电子表格的末尾: "=IF(A2=A1,F1+1,1)"
。
然后我在空闲单元格中使用下面的公式: "=COUNTIF(F:F,1)"
。 通过这种方式,我确信每个ID都被计算在内。
请注意,必须对ID进行sorting,否则它们将被计入多次…但与数组公式不同,即使使用150000行电子表格也是如此。
我的数据集是D3:D786,D2中的列标题,D1中的function。 公式将忽略空白值。
= SUM(IF(频率(IF(小计(3,OFFSET(D3,ROW(D3:D786)-ROW(D3),, 1)),IF(D3:D786 <> “”,MATCH( “〜” &D3 :D786,D3:D786& “”,0))),ROW(D3:D786)-ROW(D3)1),1))
input公式时,按住CTRL + SHIFT + ENTER
我在下面的网站find了这个,那里有更多关于Excel的解释,我不明白,如果你是这样的事情。
我复制并粘贴我的数据集到不同的工作表来validation它,这对我有用。