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

如何用单单元格数组公式按唯一名称汇总多列日期对应数值?

解决方案

核心公式(适用于Excel 365/2021)

假设原始数据位于A1:XFD100(A列为名称,B列及以后为各日期数值),在空白单元格输入以下单个数组公式即可生成汇总表格:

=HSTACK(UNIQUE(A2:A100), MMULT(N(A2:A100=TRANSPOSE(UNIQUE(A2:A100))), B2:XFD100))

公式说明

  • UNIQUE(A2:A100):提取A列中所有不重复的名称,作为汇总表格的第一列。
  • N(A2:A100=TRANSPOSE(UNIQUE(A2:A100))):生成一个0-1匹配矩阵——每行对应原始数据的一条记录,每列对应一个唯一名称,名称匹配时标记为1,不匹配为0。
  • MMULT(...):通过矩阵乘法,将0-1矩阵与数值区域相乘,一次性计算出每个唯一名称对应各日期列的求和结果(矩阵乘法的本质是对匹配行的数值进行累加)。
  • HSTACK(...):将唯一名称列和汇总数值列横向合并,输出完整的汇总表格。

适配动态列数的优化版本

如果日期列的数量不固定,可以用动态范围替代固定区域,避免手动调整公式:

=LET(
    name_range, A2:INDEX(A:A, COUNTA(A:A)),
    value_range, B2:INDEX(2:2, COUNTA(1:1)),
    unique_names, UNIQUE(name_range),
    HSTACK(unique_names, MMULT(N(name_range=TRANSPOSE(unique_names)), value_range))
)

用LET函数定义中间变量,让公式更易读,同时自动识别有数据的名称行和数值列。

为什么之前的方法失效

  • 直接用SUMIF(names, UNIQUE(names), values)时,SUMIF仅支持对单列数值求和,当values是多列区域时,无法返回对应每个唯一名称的多列汇总结果。
  • 嵌套BYROW/BYCOL+SUMIF时,若数据量过大(数百行列),容易触发Excel的数组输出限制或导致计算效率低下,而矩阵乘法的计算逻辑更高效,且能规避输出限制问题。

内容的提问来源于stack exchange,提问作者Paulo Jose de Camargo Neto

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 02:17:25