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

Excel单单元格数组公式实现多列动态聚合(含MAP等函数)

适配多列的动态数组聚合方案

针对你的需求,这里提供一个完全动态适配列数、无需硬编码列索引的公式方案,基于LET、BYROW、BYCOL等Office 365原生动态数组函数实现,单个单元格输入后自动溢出完整结果:

=LET(
    源表, TAB,
    分组列, CHOOSECOLS(源表, 1),
    唯一分组值, UNIQUE(分组列),
    待聚合列, CHOOSECOLS(源表, SEQUENCE(COLUMNS(源表)-1, 1, 2)),
    聚合列标题, CHOOSECOLS(源表[#Headers], SEQUENCE(COLUMNS(源表)-1, 1, 2)),
    分组聚合行, BYROW(唯一分组值, LAMBDA(当前分组,
        HSTACK(
            当前分组,
            BYCOL(待聚合列, LAMBDA(当前列,
                TEXTJOIN(" / ", TRUE, UNIQUE(FILTER(当前列, 分组列=当前分组)))
            ))
        )
    )),
    VSTACK(HSTACK(CHOOSECOLS(源表[#Headers], 1), 聚合列标题), 分组聚合行)
)

方案说明

  1. 动态适配列数:

    • 通过SEQUENCE(COLUMNS(源表)-1,1,2)自动获取从第2列到最后一列的索引,无需手动指定列位置,列名或列数变更时公式自动适配
    • 自动提取待聚合列的表头,最终结果保留完整表头结构
  2. 核心逻辑:

    • 先提取分组列(首列)的唯一值作为分组依据
    • 对每个唯一分组值,遍历所有待聚合列:筛选该分组下的列值→去重→用TEXTJOIN以/分隔拼接
    • 所有聚合结果通过HSTACK横向拼接,与分组值组成一行,最终通过VSTACK拼接表头和所有聚合行
  3. 细节优化:

    • 若某分组下某列无有效数据,TEXTJOIN会返回空文本,符合预期
    • 如需排除空值,可将FILTER(当前列, 分组列=当前分组)修改为FILTER(当前列, (分组列=当前分组)*(当前列<>""))

版本兼容性

你的Office 365版本(2406 Build 16.0.17726.20206)完全支持公式中用到的LET、BYROW、BYCOL、UNIQUE、TEXTJOIN等函数,无需依赖后期推出的GROUPBY函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 14:22:41