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

Excel如何基于下划线分隔的相同值提取多单元格字符并格式化拼接

实现方案

所有需求都可以实现,以下是不同场景下的具体实现方法:

纯公式方案(适用于Excel 365/2021及以上版本)

你当前使用的=LEFT(A2,FIND("_",A2)-1)已经可以正确提取下划线前的分组值,在此基础上直接用函数拼接同组内容即可。

  • 基础逗号分隔效果
    在对应结果列输入以下公式,会自动匹配所有和当前行分组值一致的条目,截掉分组前缀后用逗号拼接:
    =TEXTJOIN(",",TRUE,FILTER(RIGHT(A:A,LEN(A:A)-FIND("_",A:A)),LEFT(A:A,FIND("_",A:A)-1)=B2))
    实现效果参考:
    逗号分隔预期效果
  • 带&符号美化效果
    如果需要在最后两个条目之间用&连接,可以用LET函数简化计算逻辑,自动将最后一个逗号替换为&:
=LET(
group_res,TEXTJOIN(",",TRUE,FILTER(RIGHT(A:A,LEN(A:A)-FIND("_",A:A)),LEFT(A:A,FIND("_",A:A)-1)=B2)),
item_count,LEN(group_res)-LEN(SUBSTITUTE(group_res,",",""))+1,
IF(item_count=1,group_res,SUBSTITUTE(group_res,","," & ",item_count-1))
)

实现效果参考:
带&符号美化预期效果
当前已有的提取效果参考:
当前提取效果

VBA自定义函数方案(适用于所有Excel版本)

如果你使用的是2019及更早的Excel版本,没有内置TEXTJOIN/FILTER函数,可以用自定义函数实现:

  1. 按Alt+F11打开VBA编辑器,右键点击当前工作簿选择「插入」-「模块」
  2. 将以下代码粘贴到模块中:
Function GroupJoin(sourceRng As Range, groupKey As String, Optional addAmpersand As Boolean = False) As String
    Dim dataArr, i As Long, resultArr(), itemCount As Long
    dataArr = sourceRng.Value
    itemCount = 0
    ReDim resultArr(1 To UBound(dataArr))
    
    For i = 1 To UBound(dataArr)
        If InStr(dataArr(i, 1), "_") > 0 Then
            If Split(dataArr(i, 1), "_")(0) = groupKey Then
                itemCount = itemCount + 1
                resultArr(itemCount) = Mid(dataArr(i, 1), InStr(dataArr(i, 1), "_") + 1)
            End If
        End If
    Next
    
    ReDim Preserve resultArr(1 To itemCount)
    If addAmpersand And itemCount > 1 Then
        ReDim Preserve resultArr(1 To itemCount - 1)
        GroupJoin = Join(resultArr, ", ") & " & " & Mid(dataArr(i - 1, 1), InStr(dataArr(i - 1, 1), "_") + 1)
    Else
        GroupJoin = Join(resultArr, ", ")
    End If
End Function
  1. 使用方法:
  • 要基础逗号分隔效果,单元格输入:=GroupJoin(A:A,B2,FALSE)
  • 要带&美化效果,单元格输入:=GroupJoin(A:A,B2,TRUE)

零代码Power Query方案

如果不想写公式或代码,也可以用内置的Power Query功能实现:

  • 选中A列数据,点击「数据」选项卡-「从表格/区域」将数据导入Power Query编辑器
  • 选中数据列,点击「拆分列」-「按分隔符」,选择下划线,拆分为前后2列
  • 以拆分后的第一列(分组列)为分组依据,对第二列(内容列)执行「分组依据」操作,聚合方式选「合并行」,分隔符设置为逗号
  • 需要美化效果的话新增自定义列,判断合并后内容的逗号数量,将最后一个逗号替换为&后,将结果上载回工作表即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 08:21:18