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

Excel如何按指定列分组将同组值拼接合并到单个单元格

按列分组拼接同组文本值的实现方案

普通数据透视表默认仅支持数值类聚合计算(求和、计数、平均值等),没有原生文本拼接聚合能力,这是你用透视表没得到预期结果的原因。以下是三种可直接落地的实现方案,适配不同使用场景:

方案1:Excel 365/2021及以上版本 单公式快速实现

直接在空白单元格输入以下公式,会自动溢出返回完整的分组结果表,无需手动下拉填充:

=HSTACK(UNIQUE(A2:A7),BYROW(UNIQUE(A2:A7),LAMBDA(target_state,TEXTJOIN(", ",TRUE,FILTER(B:B,A:A=target_state)))))

公式逻辑:

  • 用UNIQUE(A2:A7)提取State列的所有不重复值,作为结果表的第一列
  • 遍历每个不重复的州名,用FILTER匹配出该州对应的所有城市
  • 用TEXTJOIN将匹配到的城市用逗号加空格拼接为单个文本,自动跳过空值
  • 最后用HSTACK将州名列和拼接后的城市列横向合并为最终结果

方案2:全版本通用 Power Query 实现(推荐大数据量/需定期更新场景)

该方案无Excel版本门槛,后续原始数据更新后只需右键刷新即可同步结果,适合数据量大、需要反复更新的场景:

  • 选中原始数据区域,点击顶部「数据」选项卡-「从表格/区域」,将数据加载到Power Query编辑器
  • 选中State列,点击「转换」选项卡-「分组依据」
  • 在弹出的设置窗口中按如下规则配置:
    • 分组依据字段选择State
    • 新聚合列命名为CityList,聚合操作选择「所有行」
  • 点击「添加列」-「自定义列」,输入自定义列公式:Text.Combine([CityList][City], ", ")
  • 删除中间生成的CityList临时列,将自定义列重命名为Cities
  • 点击左上角「关闭并上载」,即可将结果导出到Excel工作表

方案3:Excel 2019及更早版本 辅助列实现

如果使用的是不支持动态数组的旧版Excel,可通过辅助列配合数组公式实现:

  • 先提取State列的所有不重复值,粘贴到空白列作为结果表的State列
  • 在对应Cities列的首行输入以下公式,输入完成后按Ctrl+Shift+Enter三键触发数组计算,再下拉填充到所有行即可:
=TEXTJOIN(", ",TRUE,IF($A$2:$A$7=D2,$B$2:$B$7,""))

注意:如果你的Excel版本没有TEXTJOIN函数(2016及更早版本),优先使用方案2的Power Query方法,无需编写VBA代码即可实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 03:01:09