KutoolsforOffice — 一套方案,五大工具。事半功倍。

如何在 Excel 中执行 VLOOKUP 并将多个匹配值连接起来?

作者小阳修改日期

在 Excel 中使用 VLOOKUP 时,该函数通常仅返回找到的第一个匹配值。然而,在许多实际场景中,您可能需要检索并合并与特定键关联的所有匹配项——例如列出某班级中的所有学生,或汇总某个类别下的全部产品。由于标准 VLOOKUP 函数在此类需求上存在局限,您或许会好奇:如何将多个匹配结果同时查找并合并到单个单元格中?接下来,我们将为您介绍几种实用且高效的方法,适用于不同版本的 Excel 及各类用户偏好。


使用 TEXTJOIN 和 FILTER 函数执行 VLOOKUP 并连接多个对应值

如果您使用的是 Excel 365 或 Excel 2021,TEXTJOIN 与 FILTER 函数的组合为您提供了一种高效、基于公式的解决方案,可轻松实现 VLOOKUP 并连接所有匹配值。该方案尤其适用于动态或频繁更新的数据集——只要源数据发生变化,结果便会自动刷新。当您的 Excel 版本支持 FILTER 函数(仅限较新版本的 Office)时,此方法效果最佳。

在目标单元格中输入以下公式,如需将其应用到其他行,请向下拖动填充。所有匹配的对应值将自动提取并合并至同一单元格中。参见截图:

=TEXTJOIN(", ", TRUE, FILTER($B$2:$B$16, $A$2:$A$16=D2, ""))

使用 TEXTJOIN 和 FILTER 函数进行 vlookup 并连接多个值

此公式的说明:
  1. FILTER($B$2:$B$16, $A$2:$A$16=D2, "") 公式此部分会检查 $A$2:$A$16 中的每个值;若与 D2 中的值匹配,则将 $B$2:$B$16 中对应的值纳入结果数组。
    • $B$2:$B$16:将用于检索匹配值的范围。
    • $A$2:$A$16=D2 选择值的条件:仅当 $A$2:$A$16 等于 D2 中的内容时,才会处理这些行。
  2. TEXTJOIN(", ", TRUE, ...):此函数接收 FILTER 函数输出的匹配项数组,并将其自动连接为一个文本字符串,使用指定的分隔符(逗号和空格),同时智能忽略空项。
    • ",“: 将逗号和空格设为分隔符;您可根据需要更改为其他符号,例如分号或换行符。
    • TRUE:在组合过程中自动忽略空单元格,确保输出格式整洁。

特别说明:此方法仅适用于 Excel 365 或 Excel 2021,不支持旧版本(例如 Excel 2019、2016 或更早版本)。使用前请务必确认您的 Excel 版本。

提示:当您的查找值(例如 D2)发生变化,或在数据区域中新增匹配项时,结果将自动更新,无需任何额外操作。

潜在限制:在超大数据集中,公式计算时间可能延长。此外,用户需确保查找范围或结果范围中不含合并单元格,否则可能引发公式错误。


使用 Kutools for Excel 执行 VLOOKUP 并连接多个对应值

如果您觉得内置公式操作复杂,或您的 Excel 版本不支持 TEXTJOIN、FILTER 等高级函数,Kutools for Excel 为您提供了一种直观易用的图形化解决方案。其“一对多查找”功能仅需几步,即可轻松查找并合并多个匹配结果,无论是初学者还是高级用户都能快速上手。使用 Kutools 时,无需编写复杂的公式或代码,特别适合在大型或动态变化的数据集中重复执行查找与聚合任务。

Kutools for Excel 提供 300 多项高级功能,简化复杂任务,提升创造力与效率。集成 AI 能力,Kutools 精准自动化任务,让数据管理变得轻松自如。Kutools for Excel 的详细信息……         免费试用……

安装 Kutools for Excel 后,请按以下步骤操作:

单击 Kutools > 高级 LOOKUP > 一对多查找(返回多个结果),即可打开设置对话框。在此对话框中,您可按以下步骤快速配置查找与输出设置:

  1. 选择用于显示连接结果的目标输出单元格,以及包含您要搜索的值的单元格;
  2. 指定包含查找键和结果列的表格范围;
  3. 指定哪一列包含查找键(关键列),以及哪一列的值将被连接(返回列);
  4. 单击“确定”按钮,确认设置并开始处理数据。
    在对话框中指定选项

结果:Kutools 将立即在您选定的输出单元格中显示所有匹配并连接的值。效果如图所示:
由 kutools 根据条件连接

此方法强烈推荐给希望在 Excel 界面中轻松操作、无需复杂公式或代码的用户。它不仅能有效降低公式出错的风险,还能显著提升处理重复性查找与连接任务的工作效率。


使用用户自定义函数执行 VLOOKUP 并连接多个对应值

对于熟悉 VBA(Visual Basic for Applications)的用户,或使用不支持动态数组或 FILTER 函数的旧版 Excel 的用户,您可以创建一个自定义用户定义函数(UDF),灵活地连接多个结果。该方法完全兼容所有 Excel 版本,并可根据特定分隔符或条件进行定制。

1. 按住 ALT + F11 键,即可打开 Microsoft Visual Basic for Applications 窗口。

2. 单击插入> 模块,然后将以下代码粘贴到模块窗口中。

VBA 代码:在单元格中执行 VLOOKUP 并连接多个匹配值

Function ConcatenateMatches(LookupValue As String, LookupRange As Range, ReturnRange As Range, Optional Delimiter As String = ", ") As String
'Updateby Extendoffice
    Dim Cell As Range
    Dim Result As String
    Result = ""
    For Each Cell In LookupRange
        If Cell.Value = LookupValue Then
            Result = Result & Cell.Offset(0, ReturnRange.Column - LookupRange.Column).Value & Delimiter
        End If
    Next Cell
    If Result <> "" Then
        Result = Left(Result, Len(Result) - Len(Delimiter))
    End If
    ConcatenateMatches = Result
End Function

3. 保存并关闭 VBA 编辑器。返回工作表,在您希望显示结果的空白单元格中输入公式:=ConcatenateMatches(D2, $A$2:$A$16, $B$2:$B$16),然后根据需要向下拖动填充柄,将公式快速复制到其他单元格。所有基于特定查找值的对应结果将以逗号和空格分隔的形式自动合并到一个单元格中。参见截图:

由 vba 根据条件连接

此公式的说明:
  • D2:要在数据集中匹配的查找值(LookupValue)。
  • A2:A16:函数用于搜索查找值的范围(LookupRange)。
  • B2:B16:当查找值匹配时,包含需连接的值的范围(ReturnRange)。

使用 VBA 代码执行 VLOOKUP 并连接多个对应值

对于需要重复使用,或希望避免在工作表单元格中使用自定义函数的场景,您可以直接通过现成的 VBA 宏连接结果。这种方法在共享环境中尤为适用,因为并非所有用户都安装了相同的版本或加载项。

1. 单击开发人员工具中的 Visual Basic,即可打开 VBA 编辑器。

2. 在 VBA 窗口中,单击插入> 模块,然后将此代码粘贴到模块中:

Sub VLookupAndConcatenate()
    Dim ws As Worksheet
    Dim dataRange As Range, lookupRange As Range, resultRange As Range
    Dim dict As Object
    Dim i As Long, lastRow As Long
    Dim lookupValue As Variant, result As String
    Dim delimiter As String
    delimiter = ", "
    Set dict = CreateObject("Scripting.Dictionary")
    Set ws = ActiveSheet
    On Error Resume Next
    Set dataRange = Application.InputBox( _
        Prompt:="Please select the data range (contains lookup column and result column)", _
        Title:="Select Data Range", _
        Type:=8)
    On Error GoTo 0
    If dataRange Is Nothing Then Exit Sub
    On Error Resume Next
    Set lookupRange = Application.InputBox( _
        Prompt:="Please select the lookup range (single column)", _
        Title:="Select Lookup Range", _
        Type:=8)
    On Error GoTo 0
    If lookupRange Is Nothing Then Exit Sub
    On Error Resume Next
    Set resultRange = Application.InputBox( _
        Prompt:="Please select the starting cell for results output", _
        Title:="Select Output Location", _
        Type:=8)
    On Error GoTo 0
    If resultRange Is Nothing Then Exit Sub
    resultRange.Resize(lookupRange.Rows.Count, 1).ClearContents
    For i = 1 To dataRange.Rows.Count
        lookupValue = dataRange.Cells(i, 1).Value
        If Not dict.Exists(lookupValue) Then
            dict.Add lookupValue, dataRange.Cells(i, 2).Value
        Else
            dict(lookupValue) = dict(lookupValue) & delimiter & dataRange.Cells(i, 2).Value
        End If
    Next i
    For i = 1 To lookupRange.Rows.Count
        lookupValue = lookupRange.Cells(i, 1).Value
        If dict.Exists(lookupValue) Then
            resultRange.Cells(i, 1).Value = dict(lookupValue)
        Else
            resultRange.Cells(i, 1).Value = "Not Found"
        End If
    Next i
    MsgBox "Operation completed! Processed " & lookupRange.Rows.Count & " lookup values.", vbInformation
End Sub

3. 单击运行按钮按钮即可运行宏。输入框将提示您选择数据区域、查找范围和结果输出位置,合并后的结果将直接显示在指定的单元格中。

如果您经常使用不同值执行多重连接搜索,此宏方法尤为实用,因为它能避免工作表中充斥大量 UDF 调用。

您可以根据需要轻松调整代码中的分隔符,并扩展宏,将结果按您的工作流输出到单元格或文件中。

在 Excel 中,有多种方法可连接多个对应的值,每种方法都针对您的具体场景具备独特优势。无论您选择动态数组公式、类似 Kutools for Excel 的插件,还是基于 VBA 的解决方案,都能更高效地分析与呈现分组数据。请根据数据集的规模与复杂度,挑选最适合您或团队的方案,以兼顾性能表现与维护便捷性。日常操作中,请务必检查数据一致性、避免合并单元格,并验证引用范围,以确保获得最佳结果。若公式计算出错,请仔细核对所选区域是否与实际数据匹配,并确认公式输入方式与您使用的 Excel 版本兼容。

如需更多高级 Excel 技巧和丰富的实用操作指南,立即访问我们的全面教程库

最佳办公效率工具

🤖KUTOOLS AI 助手:基于以下内容革新数据分析:智能执行   |  生成代码|  创建自定义公式  |  数据分析及生成图表|  调用 Kutools Functions……
热门功能查找、高亮或标记重复项   |  删除空白行   |  合并列或单元格且不丢失数据   |  不使用公式的四舍五入……
高级 LOOKUP多条件 VLookup  |  多值 VLookup  |   跨多工作表 VLookup   |   模糊查找……
高级下拉列表快速创建下拉列表   |  级联下拉列表   |  多选下拉列表……
列管理器添加指定数量的列|移动列|切换隐藏列的可见性状态|比较区域与列……
特色功能网格聚焦   |  设计视图   |增强编辑栏   | 工作簿和表管理器   |  资源库(自动文本)|  日期提取   |  汇总工作表  |  加密/解密单元格   | 按列表发送邮件   |  超级筛选   |   特殊筛选(筛选粗体单元格/斜体/删除线……) ......
精选 15 工具集12 文本工具添加文本删除特定字符,……)|   50+ 图表 类型甘特图,……)|   40+ 实用公式基于生日计算年龄,……)|   19 插入工具插入二维码从路径插入图片,……)|   12 转换工具小写金额转大写汇率转换,……)|   7 合并和拆分工具高级合并行分割单元格,……)|……更多
在您的首选语言中使用 Kutools – 支持英语、西班牙语、德语、法语、中文及 40+ 种其他语言!

使用 Kutools for Excel 大幅提升您的 Excel 技能,体验前所未有的高效。Kutools for Excel 提供 300 多项高级功能,助您提升生产力、节省时间。立即点击此处,获取您最需要的功能……


Office Tab 为 Office 带来标签式界面,让您的工作更轻松

  • 在 Word、Excel、PowerPoint、Publisher、Access、Visio 和 Project 中启用标签式编辑和阅读
  • 在同一个窗口的新标签页中打开并创建多个文档,而非在新窗口中。
  • 将您的工作效率提升 50%,每天减少数百次鼠标点击!

所有 Kutools 插件,一个安装程序

Kutools for Office 套件捆绑了适用于 Excel、Word、Outlook 和 PowerPoint 的插件以及 Office Tab Pro,非常适合需要跨多个 Office 应用高效协作的团队。

ExcelWordOutlookTabsPowerPoint
  • 一体化套件— Excel、Word、Outlook 和 PowerPoint 插件 + Office Tab Pro
  • 一个安装程序,一个许可证— 几分钟内完成设置(支持 MSI)
  • 协同效果更佳— 在多个 Office 应用中实现高效协同
  • 30 天全功能试用— 无需注册,无需信用卡
  • 超值之选— 比单独购买插件更省钱