Google Sheets QUERY函数:多WHERE条件实现列求和
Google Sheets QUERY函数实现同一列双条件求和(单月+12个月)
问题解决思路
由于需要对同一列(F列)应用不同的WHERE筛选条件分别计算求和,单个QUERY无法实现双条件独立筛选,因此采用拆分两个独立QUERY计算后合并结果的方案,完全保留QUERY函数的使用逻辑。
具体实现公式
假设数据集范围为A:F,单元格K2是日期选择器的控制参数,可使用以下数组公式生成报表:
纵向排列结果(单月/12个月各占一行)
={ "单月求和", QUERY(A:F, "SELECT SUM(F) WHERE F = date '"&TEXT(K2,"yyyy-MM-dd")&"' LABEL SUM(F) ''", 1); "12个月求和", QUERY(A:F, "SELECT SUM(F) WHERE F >= date '"&TEXT(EOMONTH(K2,-11),"yyyy-MM-dd")&"' AND F <= date '"&TEXT(K2,"yyyy-MM-dd")&"' LABEL SUM(F) ''", 1) }
横向排列结果(单月/12个月在同一行)
={ QUERY(A:F, "SELECT SUM(F) WHERE F = date '"&TEXT(K2,"yyyy-MM-dd")&"' LABEL SUM(F) ''", 1), QUERY(A:F, "SELECT SUM(F) WHERE F >= date '"&TEXT(EOMONTH(K2,-11),"yyyy-MM-dd")&"' AND F <= date '"&TEXT(K2,"yyyy-MM-dd")&"' LABEL SUM(F) ''", 1) }
公式细节说明
单月求和逻辑:
- 利用
F = date '"&TEXT(K2,"yyyy-MM-dd")&"'精准匹配K2指定日期(因数据集每月仅10日有记录,直接等于即可) LABEL SUM(F) ''移除QUERY默认生成的sum F列标题,让结果更贴合报表需求
- 利用
12个月求和逻辑:
EOMONTH(K2,-11)计算K2日期向前推11个月的月末日期,确保筛选范围为完整12个月周期- 通过
F >= ... AND F <= ...锁定过去12个月的所有记录后求和
数组合并:使用
{}将两个QUERY结果按指定方向(纵向用;,横向用,)组合,生成符合要求的报表结构
注意事项
- 确认F列的日期是Google Sheets可识别的日期格式,而非纯文本,否则QUERY无法正确筛选
- 如果数据集表头不是第一行,需调整每个QUERY函数的最后一个参数(当前为
1,代表表头行数)
内容的提问来源于stack exchange,提问作者D.W.
相关产品推荐
相关产品推荐

