如何计算一个范围内的不同值的数量?
我有一个大表,已经用过滤器等组织起来了。我想在某些列的下面添加一个摘要,其中包含该列中不同值的数量。
没有函数=COUNTDISTINCT(A2:A100)
,那么我可以用什么来代替呢? (Excel 2003)
我不能完全使用这个类似问题的答案,因为我不想修改表格或过滤。我需要的是在工作表中进行添加,而不是修改。
我有一个大表,已经用过滤器等组织起来了。我想在某些列的下面添加一个摘要,其中包含该列中不同值的数量。
没有函数=COUNTDISTINCT(A2:A100)
,那么我可以用什么来代替呢? (Excel 2003)
我不能完全使用这个类似问题的答案,因为我不想修改表格或过滤。我需要的是在工作表中进行添加,而不是修改。
=SUMPRODUCT((A2:A100 <> "")/COUNTIF(A2:A100,A2:A100 & ""))
就可以了,不必使用数组公式。
我发现了一个这里的解决方案这似乎是一个不可思议的迂回方式来解决它。但是,嘿,它的工作原理是…
=SUM(IF(COUNTIF(A2:A100,A2:A100)=0, “”, 1/COUNTIF(A2:A100,A2:A100)))
,然后按Ctrl+Shift+Enter。只按Enter键会得到错误的结果。
=SUM(1/COUNTIF(A2:A100;A2:A100))
用Ctrl+Shift+Enter确认
对于每个单元格,它计算它出现的次数,并将所有这些值的反比相加。假设某个字符串或数字出现了5次。它的倒数是0.2,5次相加,所以加1。最后,它给出了不同值的数量。
注意:当出现空白时不适用!。
为你找到了两个资源。 http://www.excelforum.com/excel-worksheet-functions/365877-count-distinct-values.html
和 http://www.cpearson.com/excel/Duplicates.aspx
你应该能从那里找到一个可行的解决方案。
本文显示了文本值的情况。
=SUM(IF(FREQUENCY(IF(LEN(C3:C25)>0,MATCH(C3:C25,C3:C25,0),""), IF(LEN(C3:C25)>0,MATCH(C3:C25,C3:C25,0),""))>0,1))
对于数字值则是这样。
=SUM(IF(FREQUENCY(C3:C25, C3:C25)>0,1))
本文 显示了类似的公式,但也显示了一个使用过滤器的方法。
使用过滤器计算唯一值的数量
你可以使用高级过滤器从一列数据中提取唯一值,并将它们粘贴到一个新的位置。然后你可以使用ROWS函数来计算新范围内的项目数。
- 确保列中的第一行有一个列头。
- 在 “数据 "菜单上,指向 "过滤",然后单击 "高级过滤"。 3.在 "高级过滤器 "对话框中,单击 "复制到其他位置"。
- 如果您要统计的范围尚未选定,请删除 "列表范围 "框中的任何信息,然后单击包含数据的列(或选择范围)。 5.在 "复制到 "框中,删除框中的任何信息或在框中单击,然后单击您要复制唯一值的空白列。
- 选择 "仅唯一记录 "复选框,然后单击 "确定"。
7.在范围内最后一个单元格下面的空白单元格中,输入ROWS函数。使用刚才复制的唯一值范围作为参数。例如,如果唯一值的范围是B1:B45,那么输入。
=ROWS(B1:B45)
试试这个链接。这显示了如何计算列表中的唯一值,省略了空白单元格。 http://www.functioninexcel.com/lists-arrays/count-unique-values-in-a-list/
= sum( if( frequency( match( List , List , 0 ) , match( List , List , 0 )) > 0 , 1 ))
其中 “List "是您的单元格范围,例如:
List = $A$2:$A$12 OR- List = offset($A$1,,,match( rept("z”,255) , $A:$A )) -OR- List = offset($A$1,,,match( value(rept(“9”,255)) , $A:$A ))