【发布时间】:2015-06-06 09:09:07
【问题描述】:
我有一个包含 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 语句忽略 99999 但复制其他任何内容来做到这一点,然后对该列进行唯一项目计数,但我真的很想知道这是否可能只有一个公式,因为它是一个强大的工具(一个公式,可以在任何需要的任何时间在任何工作表上使用),并且不会像我工作表中的隐藏列那样危险。同样解构一张表以在中间添加一列,然后在确保不破坏其他所有内容的同时重建它是一个非常令人头疼的问题,特别是因为这个列表超过 10k 行......
非常感谢任何愿意花时间在这个谜题上的人。 :)
【问题讨论】:
-
我只是有个想法...如果我使用常规重复计数和 IF 语句,如果检测到 99999 重复会减去额外的 1...这可能比我的要容易得多最初的想法...... Buuuuuut 我不知道我整个星期都在写公式,当我试图想象这一点时,我的大脑正式返回#NO。 -_- 无论如何,有没有人认为这可能会起作用?
-
我测试了 Wisely 的解决方案,效果很好,但我不理解公式的逻辑。试一试。
-
@Corinne 你的想法是我在我的解决方案中所做的——计算所有重复项,如果存在
99999,则减去一个。我的是单细胞溶液。但是您可以使用带有公式的额外隐藏列;而且您不需要将列放在中间——它可以很容易地放在最后。 -
Ming,是的,我尝试了并将它与 Ron 所说的配对,现在它可以工作了。 :) =IF(COUNTIF($G17:G2000,99999)>0,SUMPRODUCT(($G17:G2000"")/COUNTIF($G17:G2000,$G17:G2000&""))-1,SUMPRODUCT( ($G17:G2000"")/COUNTIF($G17:G2000,$G17:G2000&""))) 我同意虽然我希望我了解重复公式的工作原理,但至少它在IF语句让我很高兴。 ^_^
标签: excel count duplicates