跳至主要内容

Kutools for Office — 一套工具,五种功能。事半功倍。

如何在 Excel 中使用 vlookup 并合并多个对应值?

Author Xiaoyang Last modified

在 Excel 中使用 VLOOKUP 时,该函数通常只会返回它找到的第一个匹配值。然而,在许多常见场景中,您可能需要检索并合并与特定键关联的所有匹配值,例如列出班级中的所有学生或某个类别下的所有产品。由于标准的 VLOOKUP 函数在这方面有局限性,您可能会想知道如何实现既查找又将多个对应结果合并到一个单元格中的功能。下面,我们将探讨几种实用且高效的方法来完成此任务,适用于不同的 Excel 版本和用户偏好。


使用 TEXTJOIN 和 FILTER 函数进行 vlookup 并合并多个对应值

如果您使用的是 Excel 365 或 Excel 2021,TEXTJOIN 和 FILTER 函数的组合提供了一种高效的、基于公式的解决方案来查找并合并所有匹配值。这个解决方案特别适合动态和更新的数据集,因为它会在源数据更改时自动刷新结果。当您的 Excel 版本支持 FILTER 函数时最为适用,因为该函数仅限于最近的 Office 版本。

在目标单元格中输入以下公式,然后如果要将其应用于其他行,请向下拖动公式。所有对应的匹配值都将被提取并合并到一个单元格中。请参见截图:

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

vlookup and concatenate multiple values with TEXTJOIN and FILTER Functions

此公式的解释:
  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 或 2021,并且不适用于旧版本(例如 Excel 2019、2016 或更早版本)。在应用之前始终检查您的 Excel 版本。

提示:如果您的查找值(例如 D2)发生变化或向数据范围添加了额外的匹配项,结果会自动更新而无需任何额外步骤。

潜在限制:在非常大的数据集上,公式计算时间可能会增加。此外,用户必须确保查找或结果范围内没有合并单元格,因为这些可能导致公式错误。


使用 Kutools for Excel 进行 vlookup 并合并多个对应值

如果您觉得内置公式方法复杂或者您的 Excel 版本不支持像 TEXTJOIN 和 FILTER 这样的高级函数,Kutools for Excel 提供了一个用户友好的图形化解决方案。Kutools 中的一对多查找功能使您只需几个步骤即可查找并合并多个匹配结果,非常适合初学者和高级用户。使用 Kutools,无需编写复杂的公式或代码,尤其在处理需要重复查找和汇总的大规模或变量数据集时非常方便。

Kutools for Excel 提供了超过 300 种高级功能,简化复杂任务,提升创造力与效率。 通过集成 AI 能力,Kutools 能够精准自动执行任务,让数据管理变得轻松简单。Kutools for Excel 的详细信息...         免费试用...

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

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

  1. 选择用于合并结果的目标输出单元格,以及您希望搜索的值所在的单元格;
  2. 指示包含查找键和结果列的表格范围;
  3. 指定包含查找键的列(关键列)和将要合并值的列(返回列);
  4. 单击“确定”按钮确认设置并处理数据。
     specify the options in the dialog box

结果:Kutools 将在您选定的输出单元格中显示所有匹配和合并的值。请参见截图:
concatenated based on the criteria by kutools

此方法特别推荐给喜欢从 Excel 界面操作而不使用复杂公式或代码的人。它还减少了公式错误的可能性,并提高了处理重复查找和合并任务的效率。


使用用户定义函数进行 vlookup 并合并多个对应值

对于精通 VBA(Visual Basic for Applications)的用户,或者使用缺乏动态数组或 FILTER 函数支持的旧版 Excel 用户,您可以创建自定义的用户定义函数(UDF)来实现灵活的多结果合并。这种方法兼容所有 Excel 版本,并且可以根据特定的分隔符符号或条件进行定制。

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

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

VBA 代码:在一个单元格中查找并合并多个匹配值

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) 使用此 UDF,其中您希望结果显示。向下拖动填充柄以将公式复制到其他单元格。所有基于特定查找值的对应值将被返回并在一个单元格中合并,以逗号和空格分隔。请参见截图:

concatenated based on the criteria by 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. 单击 Run button 按钮运行宏。输入框将提示您选择数据范围、查找范围、结果范围。然后,合并的结果将直接显示在选定的输出单元格中。

如果您经常对不同值执行多次合并查找,这种宏方法特别有用,因为它避免了在工作表中充斥 UDF 调用。

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

在 Excel 中合并多个对应值可以使用各种方法,每种方法都有其特定的优势,具体取决于您的情况。无论您选择动态数组公式、像 Kutools for Excel 这样的插件还是基于 VBA 的方法,都将提高您分析和显示分组数据的效率。根据数据集的大小和复杂性,考虑哪种方法为您或您的团队提供了最佳性能和易于维护的方案。在日常操作中,检查数据一致性,避免合并单元格,并验证引用范围以获得最佳结果。如果在公式计算中遇到错误,请再次检查您的范围是否与数据匹配,并确保您使用了适用于 Excel 版本的正确公式输入方法。

有关更多高级 Excel 技巧和一系列实用的操作指南,请访问我们广泛的教程库

最佳Office办公效率工具

🤖 Kutools AI 助手:以智能执行为基础,彻底革新数据分析 |代码生成 |自定义公式创建|数据分析与图表生成 |调用Kutools函数……
热门功能:查找、选中项的背景色或标记重复项 | 删除空行 | 合并列或单元格且不丢失数据 | 四舍五入……
高级LOOKUP多条件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中进行多标签编辑与阅读
  • 在同一个窗口的新标签页中打开和创建多个文档,而不是分多个窗口。
  • 可提升50%的工作效率,每天为您减少数百次鼠标点击!

所有Kutools加载项,一键安装

Kutools for Office套件包含Excel、Word、Outlook和PowerPoint的插件,以及Office Tab Pro,非常适合跨Office应用团队使用。

Excel Word Outlook Tabs PowerPoint
  • 全能套装——Excel、Word、Outlook和PowerPoint插件+Office Tab Pro
  • 单一安装包、单一授权——数分钟即可完成设置(支持MSI)
  • 协同更高效——提升Office应用间的整体工作效率
  • 30天全功能试用——无需注册,无需信用卡
  • 超高性价比——比单独购买更实惠