Excel:忽略垃圾重复项的独特项目计数

Excel: Count of unique items while ignoring junk duplicates

我有一列 ID,我只需要计算唯一 ID。问题是并非所有行都有唯一的 ID,因此这些行的垃圾代码为 99999。有时 ID 中可能会有文本,看起来像这样:D-00000

现在为了得到一个粗略的总数,我计算了整个列表并减去 99999 的计数,但是原始计数中有规律的重复,不是 99999 代码,所以我的计数太高了。

我不能只从总数中减去重复计数,因为 99999 将与标准重复计数。

以下是示例的前 25 个值:

50658 48762 8536 99999 D-33667 99999 50659 50660 3684 898 34157 99999 D-52412 52439 99999 99999 99999 45216 31718 31718 50664 50665 99999 99999 34171

在这 25 个中,有 8 个 99999。在剩下的 17 个中,有一个重复(31718 在那里两次)意味着唯一计数为 16。

我很确定我可以通过创建一个额外的列并使用 IF 语句忽略 99999s 但复制任何其他内容,然后对该列进行唯一项目计数来做到这一点,但我真的很想知道这是否仅使用单个公式是可能的,因为它将是一个强大的工具(一个单一的公式,然后可以在任何需要的任何地方在任何 sheet 上使用)并且不会像我的隐藏列那样危险sheet。还要解构一个 sheet 以在中间添加一列,然后在确保不破坏其他所有内容的同时重建它是一个非常令人头疼的问题,尤其是因为这个列表超过 10k 行...

非常感谢任何想花时间解决这个难题的人。 :)

您可以尝试旋转 table 数据并将 ID 放在 ROWS 字段下。然后您可以使用 counta() 来计算您将拥有多少个唯一 ID。

假设您的列是 A 列,其 ID 来自 A2-A26 行,在 A28 上试试这个公式:

=SUMPRODUCT((A2:A26<>"")/COUNTIF(A2:A26,A2:A26&""))

它适用于我的其他项目。它不需要创建另一列或 table。

假设您的列表中没有空白,请尝试以下 array 公式。输入公式ctrl+shift+enter。如果你这样做正确,Excel 将在公式

周围放置大括号 {...}
=SUM(1/COUNTIF(IDs,IDs))-(COUNTIF(IDs,99999)>0)

IDs 是包含您的身份证号码的范围。 EG A2:A26