Google Sheets QUERY按Cost值及日期范围拆分# Allotted列咨询
Google Sheets 按条件拆分# Allotted列的实现方案
核心逻辑
无需分别编写两个QUERY语句,直接使用单条QUERY的条件聚合功能,以Customer为分组依据合并计算结果,从根源避免两个查询结果匹配错位的问题。
可用公式
在输出结果的起始单元格输入以下公式,即可直接生成包含Customer、Free Trial、Purchased三列的完整结果:
=QUERY(A:F,"SELECT B, SUM(IF(C=0,F,0)), SUM(IF(C>0,F,0)) WHERE A IS NOT NULL GROUP BY B LABEL SUM(IF(C=0,F,0)) 'Free Trial', SUM(IF(C>0,F,0)) 'Purchased'",1)
参数说明
- 上述公式默认数据源范围为A:F,你可根据自己的实际数据范围调整
IF(C=0,F,0):判断Cost列(C列)数值为0时取# Allotted列(F列)的数值,否则取0,再通过SUM聚合同一客户的所有符合条件的数值WHERE A IS NOT NULL:过滤数据源中的空行,避免输出冗余结果GROUP BY B:以Customer列(B列)为分组依据,保证每个客户仅对应一行结果,不会出现匹配错位LABEL段:自定义输出的列名,可根据你的需求修改命名
带日期范围筛选的扩展公式
如果你需要额外限定查询的日期范围,可参考以下公式调整日期参数即可:
=QUERY(A:F,"SELECT B, SUM(IF(C=0,F,0)), SUM(IF(C>0,F,0)) WHERE A >= date '2024-01-01' AND A <= date '2024-01-31' GROUP BY B LABEL SUM(IF(C=0,F,0)) 'Free Trial', SUM(IF(C>0,F,0)) 'Purchased'",1)
注意:公式中的日期格式必须为
年-月-日的格式,且需要加date前缀才能被QUERY识别
其他场景适配
如果你不需要按客户聚合,要保留每行原始数据的其他维度,可删除聚合函数和GROUP BY子句,公式调整为:
=QUERY(A:F,"SELECT B, IF(C=0,F,0), IF(C>0,F,0) WHERE A IS NOT NULL LABEL IF(C=0,F,0) 'Free Trial', IF(C>0,F,0) 'Purchased'",1)
内容的提问来源于stack exchange,提问作者allison
相关产品推荐
相关产品推荐

