我有一个带ID的列,我只需要计算唯一ID。问题是并非所有行都有唯一的ID,因此这些行的垃圾代码为99999.有时ID中也会有文本,看起来像这样:D-00000
现在为了得到一个粗略的总数,我计算整个列表并减去99999s的数量,但原始计数中有正常的重复数,而不是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语句来忽略99999但是复制其他任何内容,然后对该列进行唯一的项目计数,但我真的很想知道这是否可行只需一个公式,因为它是一个强大的工具(一个公式,然后可以在任何需要的任何时间在任何工作表上使用),并不会像我的工作表中的隐藏列那样危险。同时解构一张工作表以在中间添加一列然后重建它同时确保不破坏其他所有内容是一件非常令人头疼的问题,特别是因为这个列表超过了10k行......
非常感谢任何想在这个难题上花些时间的人。 :)
答案 0 :(得分:3)
假设您的专栏是A列,其中ID为A2-A26行,在A28上请尝试以下公式:
=SUMPRODUCT((A2:A26<>"")/COUNTIF(A2:A26,A2:A26&""))
它适用于我的其他项目。它不需要创建另一个列或表。
答案 1 :(得分:1)
您可以尝试将数据透视表,并将ID放在ROWS字段下。然后,您可以使用counta()
来计算您将拥有多少个唯一ID。
答案 2 :(得分:0)
假设列表中没有空格,请尝试以下数组公式。使用 ctrl+shift+enter
输入公式。如果您正确执行此操作,Excel将在公式周围放置大括号 {...}
=SUM(1/COUNTIF(IDs,IDs))-(COUNTIF(IDs,99999)>0)
ID是包含您的ID号的范围。 EG A2:A26