Excel:忽略垃圾重复项的唯一项数

我有一个ID列,我只需要计数的唯一ID。 问题是不是所有的行都有唯一的ID,所以这些行的垃圾代码是99999.有时候ID中也可能有文本,它看起来像这样:D-00000

现在得到一个粗略的总数我计算整个列表,减去99999的计数出来,但原来的计数有定期重复,不是99999代码,所以我的计数太高。

我不能只是从总数中减去重复计数,因为99999s会被标准重复计数。

以下是一个例子的前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,但复制其他任何东西,然后在该列上做一个独特的项目计数,但我真的很想知道这是可能的只有单公式,因为它是一个强大的工具(一个单一的公式,可以随时在任何需要的任何地方使用),并不会像我的工作表中隐藏的列一样危险。 还解构一张表,在中间添加一列,然后重build它,同时确保不会破坏其他所有内容,这是一个巨大的令人头疼的问题,尤其是因为这个列表超过了10k行。

感谢所有想在这个难题上花费一些时间的人。 🙂

假设你的列是A行,A2行A26的ID,在A28上试试这个公式:

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

它为我的另一个项目工作。 它不需要创build另一个列或表。

您可以尝试透视表数据并将ID放在ROWS字段下。 然后你可以使用counta()来计算你将拥有多less个唯一的ID。

假设列表中没有空格,请尝试下面的数组公式。 用ctrl+shift+enter Enterinput公式。 如果你正确地做到这一点,Excel将围绕公式放置大括号{...}

 =SUM(1/COUNTIF(IDs,IDs))-(COUNTIF(IDs,99999)>0) 

ID是包含您的ID号码的范围。 EG A2:A26