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

您可以执行以下步骤:

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

  2. 然后select整个列,进入“数据”>“高级筛选”,然后选中“仅限唯一logging”checkbox。 这将隐藏所有非唯一的logging,所以你可以通过select整个列来计数唯一的logging。

另一个棘手的方式,刚刚发生在我身上(testing,它的工作!)。

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

根据颜色过滤:

Excel  -  2013至少 - 让你过滤颜色。甜!

不可否认的是,对于数据的一次性检查而言,这比经常使用的电子表格更为重要,因为这需要进行一些格式更改。

如果使用Mac

  1. 高亮栏
  2. 复制
  3. 打开terminal.app
  4. 键入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的解释,我不明白,如果你是这样的事情。

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

我复制并粘贴我的数据集到不同的工作表来validation它,这对我有用。