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

Excel/VBA跨表匹配字符串子串 拼接返回对应列多值结果

需求说明
  • 校验TestConfigs工作表Corner列内容,识别其中所有来自Commun工作表的Corner条目,提取对应ShortName值后用/拼接
  • 匹配规则示例:TestConfigs中某行Corner值为TC_VNOM/LOOSEVEFUSEP时,对应ShortName应返回VNO/LEP
  • 现有使用的公式仅能返回首个匹配值,无法完成多值拼接:
=INDEX(Table4[ShortName]; AGGREGATE(15; 6; ROW($1:$8)*SIGN(MATCH("*"&Table4[Corner]&"*";TestConfigs!C3; 0)); 1))

基础数据结构

TestConfigs工作表

共2列:

  • Corner列:存量值为TC_POWER_DOWN/TC_OPENS、TC_VNOM/LOOSEVEFUSEP、TC_NONE/TC_VNOM/TC_OPENS、TC_POWER_DOWN/TC_OPENS、TC_POWER_DOWN/LOOSEVEFUSER
  • ShortName列:初始为空,为待填充结果列

Commun工作表

共2列,Corner与ShortName映射关系如下:

Corner值对应ShortName
TC_POWER_DOWNPWD
TC_OPENSOPS
TC_SHORTSSHT
TC_VNOMVNO
LOOSEVEFUSERLER
LOOSEVEFUSEPLEP
TC_NONENON
TC_OPNOMOPN

实现方案

方案1:高版本Excel原生公式(无需VBA,适配Excel 365/2021及以上版本)

直接使用函数组合实现,在ShortName列对应行(以Corner值在C2单元格为例)输入以下公式,下拉填充即可:

=TEXTJOIN("/",TRUE,FILTER(Table4[ShortName],ISNUMBER(SEARCH("/"&Table4[Corner]&"/","/"&C2&"/")),""))

公式说明:匹配时在字符串前后拼接/做边界校验,避免短字符串子串误匹配(比如不会将TC_VNOM_TEST误判定为包含TC_VNOM条目)
按给定测试数据的返回结果:

  • TC_POWER_DOWN/TC_OPENS → PWD/OPS
  • TC_VNOM/LOOSEVEFUSEP → VNO/LEP
  • TC_NONE/TC_VNOM/TC_OPENS → NON/VNO/OPS
  • TC_POWER_DOWN/TC_OPENS → PWD/OPS
  • TC_POWER_DOWN/LOOSEVEFUSER → PWD/LER

方案2:VBA自定义函数(全Excel版本兼容)

低版本Excel无TEXTJOIN/FILTER函数时,可通过自定义函数实现,操作步骤:

  1. 按Alt+F11打开VBA编辑器,右键点击当前工作簿名称 → 插入 → 模块
  2. 将以下代码粘贴到模块代码窗口:
Function JoinMatchedShortName(targetCell As Range, communMapRange As Range) As String
    Dim mapArr, i As Long, sourceStr As String, resultStr As String
    Const delimiter As String = "/"
    sourceStr = delimiter & targetCell.Value & delimiter
    mapArr = communMapRange.Value
    For i = 1 To UBound(mapArr, 1)
        If InStr(1, sourceStr, delimiter & mapArr(i, 1) & delimiter, vbTextCompare) > 0 Then
            resultStr = resultStr & mapArr(i, 2) & delimiter
        End If
    Next
    If Len(resultStr) > 0 Then
        JoinMatchedShortName = Left(resultStr, Len(resultStr) - 1)
    End If
End Function
  1. 返回Excel界面,在ShortName列单元格输入公式(以C3为待匹配Corner单元格为例),下拉填充整列即可:
=JoinMatchedShortName(C3, Table4[#All])

内容的提问来源于stack exchange,提问作者Mateus Santos Valença

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 22:27:26