在Excel中计算列中的唯一值

在Excel中计算列中的唯一值,excel,unique,Excel,Unique,我有一个.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)) =索引(List

我有一个
.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))
=索引(List,MATCH(最小值)(IF(COUNTIF($B$1:B1,List)=0,1,最大值)(COUNTIF(List,try-
=总和)(IF(频率)(MATCH(COLUMNRANGE,COLUMNRANGE,0),MATCH(COLUMNRANGE,COLUMNRANGE,0))>0,1))

其中COLUMNRANGE=这些值的范围

e、 g.-
=总和(如果(频率(匹配(C12:C26,C12:C26,0),匹配(C12:C26,C12:C26,0))>0,1))


按Ctrl+Shift+Enter将公式设置为数组(否则将无法正确计算)

您可以执行以下步骤:

  • 首先隔离列(通过在要计算唯一值的列之前和/或之后插入空白列(如果存在任何相邻列)

  • 然后选择整列,转到“数据”>“高级筛选”并选中复选框“仅限唯一记录”。这将隐藏所有非唯一记录,以便您可以通过选择整列来计算唯一记录


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

    =SUMPRODUCT((A2:A100“”)/COUNTIF(A2:A100,A2:A100&“”)


    从@to的答案复制到:

    因此,将空白单元格(-)转换为空字符串(“”)需要此&“”。如果要直接使用空白单元格计数,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, ...]
    
    (A1:A100“”),即[1,1,1,1,1,1,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
    
    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/COUNTIF(列表,列表))


    并用CTRL-SHIFT-ENTER确认,计算具有条件的唯一名称。Col
    a
    是ID,使用条件
    ID=32
    ,Col
    B
    是名称,我们正在尝试计算特定ID的唯一名称

    =SUMPRODUCT((B2:B12<>"")*(A2:A12=32)/COUNTIF(B2:B12,B2:B12))
    
    =SUMPRODUCT((B2:B12“”)*(A2:A12=32)/COUNTIF(B2:B12,B2:B12))
    
    我的数据集是D3:D786,D2中的列标题,D1中的函数。公式将忽略空白值

    =总和(如果(频率(如果(小计(3,偏移量(D3,第3行(D3:D786)-第3行(D3),第1)),如果(D3:D786“”,匹配(“~”&D3:D786,D3:D786&“”,第0)),第3行(D3:D786)-第3行(D3)+1))

    输入公式时,按CTRL+SHIFT+ENTER组合键

    我在下面的网站上发现了这一点,如果你对Excel有兴趣的话,还有更多我不理解的解释

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

    如果使用Mac电脑

  • 突出显示栏
  • 抄袭
  • 打开terminal.app
  • 类型
    pbpaste | sort-u | wc-l
  • Linux用户将
    pbpaste
    替换为xclip xsel或类似产品

    Windows用户,这是可能的,但需要一些脚本。。。
    从我刚刚想到的另一个棘手的方法开始(经过测试,它成功了!)

    • 选择列中的数据
    • 在菜单中,选择
      条件格式
      突出显示单元格
      重复值
    • 选择要高亮显示唯一值还是重复值
    • 保存突出显示
    • 选择数据
    • 进入
      数据
      ,然后进入
      过滤器
    基于颜色的过滤器:


    无可否认,这更多的是用于一次性检查数据,而不是您经常使用的电子表格,因为它需要一些格式更改。

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

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

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

    我使用的电子表格标题位于第1行,数据位于第2行及以下

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

    然后我在一个空闲单元格中使用以下公式:
    “=COUNTIF(F:F,1)”
    。这样我就可以确保每个ID都被计数


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

    使用动态数组公式(截至本次发布,仅限Office 365内部人员使用):


    你能不能不使用透视表作为答案?实际上我不想保存答案。我只想检查有多少个唯一值包含该列,因为该文件稍后会导入到
    MySQL
    中,我想看看它是否正确导入。你能接受投票最多的答案吗?我认为最好注意:我再次编辑了-separators由地区设置决定,因此逗号在英国对我有效(在美国也有效),但可能适用于其他地方,例如欧洲大陆。这应该是“更好的”
    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
    
    =SUMPRODUCT((B2:B12<>"")*(A2:A12=32)/COUNTIF(B2:B12,B2:B12))
    
    =COUNTA(UNIQUE(A:A))