如何简化Google Sheets中包含多个COUNTAs的重复公式?
Google Sheets批量统计多URL符合条件唯一条目数的简化方案
你之前用这个公式统计单个URL(A4单元格)对应的符合条件唯一条目数:
=COUNTA(IFNA(UNIQUE(FILTER('Sessions data - BQ'!A2:A,'Sessions data - BQ'!B2:B=A4,VALUE('Sessions data - BQ'!C2:C)>=VALUE(B4-B1),VALUE('Sessions data - BQ'!C2:C)<=VALUE(B4-1))),))
后续要统计A5、A6等更多URL时,只能叠加多个相同结构的公式,每次新增URL都要手动添加公式片段,效率很低。这里提供两种简化方案,只需一个公式就能批量处理所有URL:
方案一:用COUNTUNIQUEIFS+ARRAYFORMULA(推荐)
这个方法直接利用Google Sheets的COUNTUNIQUEIFS函数统计唯一值数量,配合ARRAYFORMULA实现批量计算,无需重复写公式:
=ARRAYFORMULA(IF(A4:A="",,COUNTUNIQUEIFS('Sessions data - BQ'!A2:A,'Sessions data - BQ'!B2:B,A4:A,'Sessions data - BQ'!C2:C,">="&VALUE(B4-B1),'Sessions data - BQ'!C2:C,"<="&VALUE(B4-1))))
公式说明:
ARRAYFORMULA:让公式批量作用于A4:A列的所有单元格IF(A4:A="",, ...):仅当A列单元格有URL内容时才计算,空单元格返回空值COUNTUNIQUEIFS:一次性统计同时满足以下条件的唯一值数量:- 数据源B列('Sessions data - BQ'!B2:B)等于当前行A列的URL
- 数据源C列日期值大于等于
B4-B1转换后的数值 - 数据源C列日期值小于等于
B4-1转换后的数值
如果你的数据源C列已经是数值型日期(不是文本格式),可以去掉VALUE转换,简化公式:
=ARRAYFORMULA(IF(A4:A="",,COUNTUNIQUEIFS('Sessions data - BQ'!A2:A,'Sessions data - BQ'!B2:B,A4:A,'Sessions data - BQ'!C2:C,">="&B4-B1,'Sessions data - BQ'!C2:C,"<="&B4-1)))
方案二:用QUERY函数实现
如果更习惯用QUERY语法,也可以用这个公式批量计算:
=ARRAYFORMULA(IF(A4:A="",,QUERY('Sessions data - BQ'!A2:C,"SELECT COUNT(DISTINCT A) WHERE B='"&A4:A&"' AND C >= "&VALUE(B4-B1)&" AND C <= "&VALUE(B4-1)&" LABEL COUNT(DISTINCT A) ''",0)))
注意事项:
如果你的URL包含单引号,需要用SUBSTITUTE函数转义,比如把B='"&A4:A&"'改成B='"&SUBSTITUTE(A4:A,"'","''")&"',避免公式报错。
内容的提问来源于stack exchange,提问作者Damien
相关产品推荐
相关产品推荐

