You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Sheets QUERY函数无匹配结果时返回0值的问题咨询

问题原因说明

  1. 第一个QUERY语句没有在SELECT中返回经销商名称列作为匹配依据,且仅返回当月有订单的经销商,自然和B列全量经销商列表顺序无法对齐,无订单的经销商会直接被过滤
  2. 第二个QUERY直接拼接B2:B整列范围作为查询条件,语法不合法,无法匹配到任何有效结果

解决方案

方案1:单单元格下拉(易理解易调整)

适合需要灵活修改单行逻辑的场景,在对应1月统计的首个单元格(假设B列首行经销商是B2,对应统计从C2开始)输入以下公式,下拉填充即可:

=IFERROR(QUERY('2021ContractsData'!A:V,
"Select COUNT(J),SUM(J),AVG(J)
 WHERE MONTH(A)+1=1
 AND H='"&B2&"'
 LABEL COUNT(J) '',SUM(J) '',AVG(J) ''",0),{0,0,0})
  • 把原公式的范围引用B2:B改为当前行单个单元格B2,逐行匹配对应经销商
  • 去掉Group By H语句,已经限定唯一经销商名称,无需分组
  • LABEL字段设为空值,隐藏QUERY默认返回的表头
  • 外层套IFERROR,匹配不到订单时直接返回{0,0,0},对应合同数、总金额、平均值三个统计项的0值
  • 需要统计其他月份时,仅需修改MONTH(A)+1=1中的数字为对应月份即可

方案2:数组溢出公式(无需下拉,一次输入自动生成全量结果)

仅需在C2单元格输入一次公式,自动匹配B列所有经销商,批量生成所有行的统计结果:

=MAP(B2:B,LAMBDA(d,
 IF(d="","",
  IFERROR(QUERY('2021ContractsData'!A:V,
   "Select COUNT(J),SUM(J),AVG(J)
    WHERE MONTH(A)+1=1
    AND H='"&d&"'
    LABEL COUNT(J) '',SUM(J) '',AVG(J) ''",0),
  {0,0,0})
 )
))
  • 用MAP遍历B列所有非空的经销商名称,逐行传入查询逻辑
  • B列为空时直接返回空值,避免无意义计算

方案3:大数据量优化版(查询效率更高)

如果订单数据量超过1000行,推荐用这个方案,仅执行一次QUERY查询,后续全为内存匹配,运行速度更快:

=LET(
  // 先一次性查询所有1月有订单的经销商统计结果
  stats,QUERY('2021ContractsData'!A:V,
    "SELECT H,COUNT(J),SUM(J),AVG(J)
     WHERE MONTH(A)+1=1 AND YEAR(A)=2021
     GROUP BY H
     LABEL H '',COUNT(J) '',SUM(J) '',AVG(J) ''",0),
  // 批量匹配B列经销商
  MAP(B2:B,LAMBDA(d,
    IF(d="","",IFERROR(INDEX(stats,XMATCH(d,INDEX(stats,0,1)),{2,3,4}),{0,0,0}))
  ))
)

注意事项

  • 如果经销商名称包含单引号',需要把查询条件里的'"&B2&"'替换为'"&SUBSTITUTE(B2,"'","''")&"',避免QUERY语法报错
  • 如果有多年度数据,建议在WHERE条件中加YEAR(A)=2021限定年份,避免统计到其他年份同月份的订单

内容的提问来源于stack exchange,提问作者geneavone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 05:57:04