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

Google Sheets中ArrayFormula+SUMIF用比较运算符返回0求助

问题分析与解决方案

原公式失效原因

你把产品、门店、销量条件拼接成单个字符串B3:B&T2&">0"传给SUMIF的criteria,这是核心语法错误:

  • SUMIF的criteria如果是比较运算符(如>0),需要对应数值范围做逻辑判断,而不是作为字符串的一部分和其他文本条件拼接。
  • 拼接后的字符串是"产品+门店+>0",而DATOS表中拼接的是"产品+门店+具体销量数值",两者是完全不同的文本,自然无法匹配,结果为0。

正确实现方案

结合你的需求(按产品、月份汇总正销量,支持门店切换),推荐两种可行写法:

方法1:SUMIFS + ARRAYFORMULA(简洁高效)

在L2单元格输入以下公式,可自动覆盖L2:N4区域:

=ARRAYFORMULA(
  IF(
    LEN(B2:B4)=0,,
    SUMIFS(
      DATOS!G:G,
      DATOS!B:B, B2:B4,
      DATOS!A:A, L1:N1,
      DATOS!S:S, IF(I9="全部", DATOS!S:S, I9),
      DATOS!G:G, ">0"
    )
  )
)
  • 逻辑说明:
    1. LEN(B2:B4)=0:空产品行返回空值
    2. SUMIFS同时匹配4个条件:
      • 产品匹配B列对应行
      • 月份匹配表头L1:N1对应列
      • 门店匹配I9(选"全部"时,DATOS!S:S=DATOS!S:S始终成立,即包含所有门店)
      • 销量必须大于0

方法2:BYROW/BYCOL + FILTER + SUM(灵活适配动态范围)

如果产品或月份数量可能变化,用BYROW/BYCOL迭代更灵活:

=ARRAYFORMULA(
  IF(
    LEN(B2:B4)=0,,
    BYROW(B2:B4, LAMBDA(prod,
      BYCOL(L1:N1, LAMBDA(month,
        SUM(FILTER(DATOS!G:G,
          DATOS!B:B=prod,
          DATOS!A:A=month,
          I9="全部" OR DATOS!S:S=I9,
          DATOS!G:G>0
        ))
      ))
    ))
  )
)
  • 逻辑说明:
    • BYROW遍历每个产品,BYCOL遍历每个月份
    • FILTER筛选符合条件的销量,再用SUM汇总
    • I9="全部" OR DATOS!S:S=I9直接处理门店切换逻辑,可读性更强

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 09:37:51