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

如何用Excel公式提取列值并将人员所属组以逗号分隔汇总到单元格?

Excel人员组汇总及列值逗号分隔实现方案

一、按人员汇总所属组(匹配示例需求)

假设原始数据中:

  • A列为人员姓名(对应Raw Data区域第一列)
  • B列为对应组名(对应Raw Data区域第二列)
  • 期望结果的人员姓名在D列,需在E列生成汇总后的组列表

1. Excel 365/2021及后续版本(推荐)

直接用TEXTJOIN+FILTER函数,无需数组确认:

=TEXTJOIN(", ", TRUE, FILTER($B$2:$B$10, $A$2:$A$10=D2, ""))
  • 说明:
    • FILTER($B$2:$B$10, $A$2:$A$10=D2, ""):筛选出A列等于当前人员(D2)的所有组名
    • TEXTJOIN(", ", TRUE, ...):将筛选结果用「逗号+空格」连接,TRUE参数自动忽略空值

如果习惯用IF函数,也可以写成:

=TEXTJOIN(", ", TRUE, IF($A$2:$A$10=D2, $B$2:$B$10, ""))

2. Excel 2019及更早版本

方法1:数组公式(需按Ctrl+Shift+Enter确认输入)

=LEFT(CONCAT(IF($A$2:$A$10=D2, $B$2:$B$10&", ", "")), LEN(CONCAT(IF($A$2:$A$10=D2, $B$2:$B$10&", ", "")))-2)
  • 说明:
    • 先通过IF给匹配到的组名添加「逗号+空格」,未匹配项留空
    • 用CONCAT拼接所有符合条件的字符串
    • 最后用LEFT去掉末尾多余的「逗号+空格」

方法2:VBA自定义函数

  1. 按Alt+F11打开VBA编辑器,插入一个新模块
  2. 粘贴以下代码:
Function JoinGroups(targetName As String, nameRange As Range, groupRange As Range) As String
    Dim cell As Range
    Dim res As String
    res = ""
    For Each cell In nameRange
        If cell.Value = targetName Then
            If res <> "" Then res = res & ", "
            res = res & groupRange(cell.Row - nameRange.Row + 1).Value
        End If
    Next cell
    JoinGroups = res
End Function
  1. 返回Excel,在目标单元格输入:
=JoinGroups(D2, $A$2:$A$10, $B$2:$B$10)

二、提取整列值并逗号分隔显示

如果只是要把某一列的非空值提取出来,合并成单个逗号分隔的单元格:

  • Excel 365/2021:
    =TEXTJOIN(", ", TRUE, $B$2:$B$10)
    
  • Excel 2019及更早版本(数组公式,按Ctrl+Shift+Enter):
    =LEFT(CONCAT($B$2:$B$10&", ", ""), LEN(CONCAT($B$2:$B$10&", ", ""))-2)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 17:25:20