含IF语句的Excel多工单聚合及去重后带图工单统计需求
我完全懂你的困扰——用Excel自带的Remove Duplicates功能处理工单数据时,它只会保留每个工单的第一行内容,这就导致像ABC1027这种同一工单有多行记录、其中一行H列是图片状态的情况,被错误地标记成了无图片(因为取了顶部的miscellaneous值),根本没法完成准确的统计需求。
下面给你一套用IF语句和聚合函数实现的解决方案,不用手动去重就能精准统计:
步骤1:标记每个工单是否存在图片记录
先插入一个辅助列(比如I列),在I2单元格输入以下公式,然后下拉填充到所有数据行:
=IF(COUNTIFS(A:A,A2,H:H,"图片")>0,"有图片","无图片")
这个公式的逻辑很简单:针对当前行的工单编号A2,统计整个A列中相同编号且H列是"图片"的记录数。只要数量大于0,就说明这个工单至少有一行带图片,直接标记为「有图片」,否则标记「无图片」。
步骤2:统计唯一工单总数
用这个公式可以直接算出A列的唯一工单数量(如果有表头,记得把范围改成A2:Axxx,比如A2:A1000):
=SUMPRODUCT(1/COUNTIF(A:A,A:A))
步骤3:统计有图片的唯一工单数量
方法一:用辅助列统计
基于刚才的I列标记,用下面的公式就能得到有图片的唯一工单总数:
=SUMPRODUCT((I:I="有图片")/COUNTIF(A:A,A:A))
它会先筛选出所有标记为「有图片」的行,然后对每个唯一工单只计数一次,避免重复统计同一工单的多行记录。
方法二:不用辅助列,直接嵌套公式
如果不想加辅助列,也可以用这个一站式公式:
=SUMPRODUCT(--(COUNTIFS(A:A,A:A,H:H,"图片")>0)/COUNTIF(A:A,A:A))
这里的COUNTIFS(A:A,A:A,H:H,"图片")>0会生成一个布尔数组,判断每个工单是否存在图片记录;--把布尔值转成1或0,再除以每个工单的出现次数,确保每个唯一工单只被计算一次,最后求和得到结果。
这些公式的核心优势是自动聚合每个工单的图片状态,完全不会像手动去重那样丢失关键信息——哪怕工单ABC1027有N行记录,只要其中一行带图片,就会被正确统计进有图片的工单总数里。
内容的提问来源于stack exchange,提问作者George

