说明网
电脑网络 1 个回答

Excel中如何统计A列同一人员对应B列不同时间的去重次数并显示在C列?

VBS 提问者

发布于 2026-10-24

问题补充

在Excel中统计A列同一人员在B列的不同时间去重次数,可使用SUMPRODUCT与COUNTIFS组合公式实现。若使用Office 365或Excel 2021及以上版本,也可借助UNIQUE函数简化计算。

1 个回答

按发布时间排序
绯村剑心 回答者

回答于 2026-10-24

在C2单元格输入以下公式,然后向下填充即可:

方法一:通用公式(适用于Excel 2010及以上版本)

=SUMPRODUCT((A$2:A$100=A2)*(B$2:B$100<>"")/COUNTIFS(A$2:A$100,A$2:A$100,B$2:B$100,B$2:B$100))

该公式的原理是:COUNTIFS对A列相同姓名且B列相同时间的记录进行计数,取倒数后通过SUMPRODUCT求和,从而实现按人员分组并对时间去重计数的效果。

方法二:动态数组公式(适用于Microsoft 365或Excel 2021及以上版本)

=ROWS(UNIQUE(FILTER(B$2:B$100, A$2:A$100=A2)))

此公式先用FILTER筛选出当前人员对应的所有时间,再用UNIQUE去除重复时间,最后用ROWS计算去重后的行数。

操作步骤:

  1. 假设数据从第2行开始,A列为人员姓名,B列为到访时间,C列用于显示结果。
  2. 在C2单元格输入上述任一公式。
  3. 根据实际数据行数调整公式中的范围(如将A$100改为实际最大行号)。
  4. 选中C2单元格,向下拖动填充柄将公式应用到其他行。

判断依据:

  • 去重的核心在于同时满足“A列值相同”且“B列值相同”才视为重复记录。
  • 公式中使用绝对引用($符号)锁定数据区域,确保下拉填充时统计范围不变。

适用条件:

  • 方法一兼容性广,但数据量极大(如数万行)时计算速度较慢。
  • 方法二计算效率高、公式简洁,但仅限支持动态数组的新版Excel。

常见误区:

  1. 未排除空值:若B列存在空白单元格,可能导致计数异常。方法一中加入B$2:B$100<>""条件可避免此问题;方法二中FILTER默认会保留空值,可视情况嵌套处理。
  2. 引用方式错误:数据区域的行列号必须使用绝对引用(如A$2:A$100),而等号右侧的条件单元格应使用相对引用(如A2),否则下拉后结果全部相同。
  3. 整列引用导致性能下降:尽量避免使用A:A这种整列引用,应指定具体的数据起止行号以提升运算效率。

内容由网友提供,仅供参考。