求Google Sheets数组公式:按报名日期统计用户累计报名次数
Google Sheets 按日期统计用户累计报名次数(含本次)
问题背景
数据从第4行开始记录,1-3行为固定表头,后续会新增数据或调整排序,要求基于报名日期而非行号,统计每个用户截至本次报名日期的累计报名次数(包含本次)。之前尝试的两个Arrayformula公式均未得到预期结果:
- 公式1:
=Arrayformula({"Number Times Enrolled";if(A4:A="",,countif($A4:A,(Row($A4:A)&"<="&Row($A4:A))))}返回全0 - 公式2:
=Arrayformula({"Number Times Enrolled";if(A4:A="",,countifs(A4:A,A4:A,Row(A4:A),"<="&Row(A4:A)))})结果不符合预期
解决方案
假设A列为用户唯一标识、B列为报名日期,将以下公式放入目标统计列的第4行(比如C4),即可自动计算整列的累计次数:
=Arrayformula(IF(A4:A="","",COUNTIFS(A4:A,A4:A,B4:B,"<="&B4:B)))
如果需要让公式自动适配1-3行的表头结构,可以调整为:
=Arrayformula(IF(ROW(A:A)=3,"累计报名次数",IF(ROW(A:A)<3,"",IF(A4:A="","",COUNTIFS(A4:A,A4:A,B4:B,"<="&B4:B)))))
公式说明
Arrayformula:实现整列自动计算,无需手动下拉公式COUNTIFS的两个核心条件:- 匹配当前行的用户标识(
A4:A,A4:A) - 筛选出该用户报名日期小于等于当前行报名日期的记录(
B4:B,"<="&B4:B),这是基于日期统计的关键,替代了错误的行号判断逻辑
- 匹配当前行的用户标识(
IF嵌套:处理空行和表头区域,避免无效计算
之前公式的问题
- 第一个公式的COUNTIF条件写法错误,将行号拼接成字符串作为匹配规则,无法匹配用户数据,因此返回全0
- 第二个公式用行号判断记录先后,但数据排序后行号和实际报名日期顺序不一致,导致统计结果错误
内容的提问来源于stack exchange,提问作者Charity
相关产品推荐
相关产品推荐

