41

我有一个.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))

返回 在此处输入图像描述

4

12 回答 12

109

要计算 A2:A100 中不同值的数量(不计算空白):

=SUMPRODUCT((A2:A100<>"")/COUNTIF(A2:A100,A2:A100&""))


从@Ulli Schmid的回答中复制到这个 COUNTIF() 公式在做什么?

=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", "", "", "", "", "", ...]

所以需要这个&""将空白单元格 (-) 转换为空字符串 ("")。如果您要直接使用空白单元格计数,则 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。由于不允许除以零,我们会抛出一个错误。

于 2013-09-03T09:03:05.517 回答
15

尝试 -=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 使公式成为数组(否则将无法正确计算)

于 2013-09-03T08:31:38.140 回答
11

这是获取唯一值计数以及获取唯一值的另一种快速方法。将您关心的列复制到另一个工作表中,然后选择整个列。单击数据-> 删除重复项-> 确定。这将删除所有重复的值。

于 2013-09-03T21:24:05.533 回答
10

这是一个优雅的数组公式(我在这里找到http://www.excel-easy.com/examples/count-unique-values.html)可以很好地解决问题:

类型

=SUM(1/COUNTIF(列表,列表))

并使用 CTRL-SHIFT-ENTER 确认

于 2014-03-19T16:37:08.913 回答
3

计数唯一的条件。ColA是 ID 和使用条件ID=32, ColB是 Name 并且我们正在尝试计算特定 ID 的唯一名称

=SUMPRODUCT((B2:B12<>"")*(A2:A12=32)/COUNTIF(B2:B12,B2:B12))
于 2014-04-14T12:15:17.743 回答
2

我刚刚想到的另一种棘手的方法(经过测试并且有效!)。

  • 选择列中的数据
  • 在菜单中,选择Conditional Formatting, Highlight Cells,Duplicate Values
  • 选择是否要突出显示唯一值或重复值。
  • 保存亮点
  • 选择数据
  • 转到Data然后Filter

基于颜色的过滤器:

Excel——至少 2013 年——允许您过滤颜色。 甜的!

诚然,这比您经常使用的电子表格更适合一次性检查数据,因为它需要进行一些格式更改。

于 2015-06-30T20:46:05.147 回答
1

您可以执行以下步骤:

  1. 首先隔离列(如果有任何相邻列,则通过在要计算唯一值的列之前和/或之后插入空白列;

  2. 然后选择整个列,转到“数据”>“高级过滤器”并选中“仅唯一记录”复选框。这将隐藏所有非唯一记录,因此您可以通过选择整个列来计算唯一记录。

于 2013-09-03T08:36:32.280 回答
1

如果使用 Mac

  1. 高亮列
  2. 复制
  3. 打开终端.app
  4. 类型pbpaste|sort -u|wc -l

Linux 用户替换pbpaste为 xclip xsel 或类似的

Windows 用户,这是可能的,但需要一些脚本......从http://brianreiter.org/2010/09/03/copy-and-paste-with-clipboard-from-powershell/开始

于 2015-06-05T16:20:12.820 回答
0

您可以为唯一记录计数添加新公式

=IF(COUNTIF($A$2:A2,A2)>1,0,1)

现在您可以使用数据透视表并获得SUM唯一记录数。如果您有两行或多行存在相同值,但您希望数据透视表报告唯一计数,则此解决方案效果最佳。

于 2015-08-28T07:09:00.263 回答
0

我正在使用第 1 行带有标题的电子表格,数据在第 2 行及以下。

ID 在 A 列中。为了计算有多少不同的值,我将这个公式从第 2 行放到第一个可用列 [F 在我的例子中] 的电子表格的末尾:"=IF(A2=A1,F1+1,1)"

然后我在空闲单元格中使用以下公式:"=COUNTIF(F:F,1)". 通过这种方式,我确信每个 ID 都被计算在内。

请注意,必须对 ID 进行排序,否则它们将被计算多次……但与数组公式不同,即使使用150000行的电子表格,它也非常快。

于 2016-01-19T08:36:32.663 回答
0

使用动态数组公式(截至本帖仅适用于 Office 365 预览体验成员):

=COUNTA(UNIQUE(A:A))
于 2019-10-17T17:12:52.903 回答
-1

我的数据集是 D3:D786,D2 中的列标题,D1 中的函数。公式将忽略空白值。

=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))

输入公式时,CTRL + SHIFT + ENTER

我在下面的网站上找到了这个,如果你喜欢那种东西,那里有更多关于 Excel 的解释,我不明白。

http://www.mrexcel.com/forum/excel-questions/553903-count-unique-values-filtered-column.html#post2735467

我将我的数据集复制并粘贴到另一张表中以验证它,它对我有用。

于 2014-11-18T23:46:52.567 回答