如何计算范围内不同值的数量?

Tor*_*uun 36 worksheet-function microsoft-excel

我有一个已经使用过滤器等组织的大表。我想在某些列下添加一个摘要,其中包含该列中不同值的数量。

没有功能=COUNTDISTINCT(A2:A100),我该怎么办?(Excel 2003)

我不能完全使用这个类似问题的答案,因为我不想修改表格或过滤。我需要一个除了工作表,而不是修改

Lan*_*rts 35

=SUMPRODUCT((A2:A100 <> "")/COUNTIF(A2:A100,A2:A100 & ""))
Run Code Online (Sandbox Code Playgroud)

无需使用数组公式即可完成。

  • @RBarryYoung,SUMPRODUCT 就像一个数组函数而不是一个函数。虽然它可以做的比这里使用的要多得多,但在这里它只是检查列的每个实例,并根据列中的迭代次数为每个不同的值提供一个缩放值。所以如果有两个 'a' 实例,它会加上 1/2 和 1/2 来得到 1。所以对于每个不同的值,你会在总和上加一个。 (5认同)
  • 这如何/为什么有效??? (4认同)
  • 如果输入包含空白条目,这将失败。[youtube](http://www.youtube.com/watch?v=0QNznFt0El4) 上演示的简单修复是这样的:`=SUMPRODUCT((A2:A100&lt;&gt;"")/COUNTIF(A2:A100,A2: A100&amp;""))`。它确保 `COUNTIF` 永远不会为空行返回 0,这会导致 `DIV/0` 错误。 (4认同)

Tor*_*uun 8

我在这里找到了一个解决方案,这似乎是一种令人难以置信的迂回方式来解决它。但是,嘿,它有效......

=SUM(IF(COUNTIF(A2:A100,A2:A100)=0, "", 1/COUNTIF(A2:A100,A2:A100)))

然后按Ctrl+ Shift+ Enter。只按Enter会给出错误的结果。

  • @dkusleika IF 似乎是为了防止除以零错误。如上面链接的页面所述,如果范围包含空白单元格,则需要这样做,否则您可以将 IF 排除在外。 (2认同)