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

Excel M365中非循环实现多维动态数组按条件部分求和

Excel M365 多维动态数组指定列求和方案

假设你的动态数组(DataTable)第一行为类别标题,下方为数据行,以下两种非循环方案可实现仅对类别A、B对应列求和,同时保留原行结构:

方案一:BYROW + 索引匹配求和

逻辑直观,遍历每一行提取目标列并求和:

=BYROW(DataTable, LAMBDA(row, SUM(INDEX(row, , ISNUMBER(MATCH(INDEX(DataTable,1, ), {"A","B"}, 0))))))

拆解逻辑:

  • INDEX(DataTable,1, ) 提取第一行的全部类别标题
  • MATCH(..., {"A","B"}, 0) 定位类别A、B所在的列位置,非目标类别返回错误值
  • ISNUMBER(...) 将匹配结果转为布尔数组(TRUE对应目标列)
  • INDEX(row, , ...) 从当前行中筛选出目标列的数据
  • SUM(...) 对筛选出的列数据求和
  • BYROW 遍历动态数组的每一行,重复上述求和操作

方案二:MMULT矩阵乘法求和

适合数据量较大的场景,计算效率更高:

=MMULT(DataTable, TRANSPOSE(--(INDEX(DataTable,1, )={"A","B"})))

拆解逻辑:

  • --(INDEX(DataTable,1, )={"A","B"}) 生成权重数组:目标类别A、B对应位置为1,其余为0
  • TRANSPOSE(...) 将权重数组转置为列向量,满足矩阵乘法的维度要求
  • MMULT 通过矩阵乘法实现每行数据与权重数组的加权求和,本质就是对A、B列数据求和

注意事项

  • 若你的DataTable是动态生成的(比如FILTER、UNIQUE返回的数组),直接替换公式中的DataTable即可
  • 若类别标题不在第一行,调整INDEX(DataTable,1, )中的行号为实际标题行号

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 21:32:13