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

如何用SUMIF结合数组参数实现无辅助列的多条件唯一值求和?

解决方案

核心思路

先筛选出term+desc拼接不重复的行,再对这些行按mod的唯一值分组求和num列,全程无需辅助列。

可用公式(R1C1格式,适配你的数据结构)

=LET(
    数据源, R2C1:R6C4,  // 对应num列(C1)、term列(C2)、desc列(C3)、mod列(C4)的范围
    唯一组合, UNIQUE(CHOOSECOLS(数据源,2,3)),  // 获取term和desc的唯一配对
    去重后数据, FILTER(数据源, BYROW(CHOOSECOLS(数据源,2,3), LAMBDA(行, COUNTIFS(唯一组合, 行)=1))),  // 筛选term+desc不重复的行
    唯一mod值, UNIQUE(CHOOSECOLS(数据源,4)),  // 获取mod列的所有唯一值
    SUMIFS(CHOOSECOLS(去重后数据,1), CHOOSECOLS(去重后数据,4), 唯一mod值)
)

原方法报错原因

你直接将INDEX(R2C4:R6C4;XMATCH(R2C8:R5C8;R2C2:R6C2 & " - " & R2C3:R6C3);1)替换到SUMIF的第一个参数时,因数组维度不匹配触发#VALUE!错误:

  • XMATCH的查找值R2C8:R5C8是横向区域,生成的INDEX结果为横向溢出数组
  • SUMIF要求第一个参数为纵向区域/数组,横向数组无法匹配导致报错

简化嵌套版(无需LET,可读性稍弱)

如果不想用LET整理逻辑,可直接嵌套公式:

=SUMIFS(
    FILTER(R2C1:R6C1, BYROW(R2C2:R6C2&" - "&R2C3:R6C3, LAMBDA(x, COUNTIF(R2C2:R6C2&" - "&R2C3:R6C3, x)=1))),
    FILTER(R2C4:R6C4, BYROW(R2C2:R6C2&" - "&R2C3:R6C3, LAMBDA(x, COUNTIF(R2C2:R6C2&" - "&R2C3:R6C3, x)=1))),
    UNIQUE(R2C4:R6C4)
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 19:40:58