在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确认,计算具有条件的唯一名称。Cola
是ID,使用条件ID=32
,ColB
是名称,我们正在尝试计算特定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))