用 Excel countif 统计重复值,对天发誓公式没错,但结果错,咋整?

文摘   科技   2024-10-07 11:00   上海  

公众号平台最新的推送规则对技术类文章不太友善,如果不想错过干货,请务必 “设为星标”哦!!!


点击上方蓝字 --> 点击“...”--> 选择“设为星标


统计重复值,经常会用到 countif 函数,但是最近有读者在使用这个函数的时候结果却出错了,而公式明明是对的。


案例:


下图 1 是每个客户编号对应的最终销售,每个客户可能在不同的销售间转手多次,但最终的销售只有一位。


请查找出客户编号有重复的所有单元格,在 C 列中显示 dup,效果如下图 2 所示。


解决方案:


1. 选中 C2:C12 区域 --> 输入以下公式 --> 按 Ctrl+Enter:

=IF(COUNTIF($A$2:$A$12,A2)>1,"dup","")


公式释义:

  • COUNTIF($A$2:$A$12,A2)>1:计算 $A$2:$A$12 这个固定区域中,每一个单元格的出现次数是否 >1 次;

  • IF(...,"dup",""):如果单元格出现次数 >1 则显示“dup”,否则留空


* 请注意:$A$2:$A$12 需要绝对引用。


但是结果有点让人意外,所有结果都是“dup”,也就是说每个客户编号都有重复?明明没有啊。要了解出错原因,就要从 countif 函数的特性说起。


从图上可以明显看出,客户编号列的格式是文本,因为这么长的数值,只有改成文本格式才能完整显示。


而 countif 在计算时,会将文本型数值识别为数值,再进行计算。问题恰恰就在这里,Excel 最多只能显示 15 位数值,超过的部分全部自动变为 0。这样的话,countif 统计出所有编号当然都是重复的。


那是不是在这种情况下就要摒弃 countif,而另辟蹊径?非也,还是用上面的的公式,只要稍微作一点点修改。


2. 选中 C2 单元格 --> 在原公式的基础上,在 A2 后面加上 &"*" --> 下拉复制公式:

=IF(COUNTIF($A$2:$A$12,A2&"*")>1,"dup","")


公式释义:

  • 这个公式与原来的区别只是在 countif 的第二个参数后面加了通配符 &"*",它的作用是将单元格强制识别为文本进行计算,从而得出正确结果。


类似的参数变通用法,在 vlookup 中也可以举一反三,详情可参阅 Excel vlookup 函数的几种高难度错误及解决方案



转发、点赞、在看也是爱!

Excel学习世界
你遇到的所有 Excel 坑,我都帮你趟过了。
 最新文章