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

如何根据VendorID串联Contact表值填充Excel单元格?函数求助

动态串联对应VendorID的所有联系人值

问题场景

主表包含ID、VendorID、Contact列,需根据当前行的VendorID,从Contact表中提取所有匹配的联系人姓名,以空格分隔后填充到Contact列。当前重复调用VLOOKUP仅能返回单个值重复(如返回“John John”),硬编码指定VendorID可得到正确结果,但需实现动态适配每行的逻辑。

解决方案

方案1:Excel 365/2021及以上版本(推荐)

使用TEXTJOIN结合FILTER函数,直接筛选并串联所有匹配值:

=TEXTJOIN(" ", TRUE, FILTER(Contact[联系人列名], Contact[VendorID列名]=[@VendorID], ""))
  • FILTER函数:筛选出Contact表中VendorID与当前行VendorID匹配的所有联系人值,无匹配时返回空文本
  • TEXTJOIN函数:用空格分隔筛选结果,自动忽略空值

方案2:旧版Excel(2019及以下)

方式A:支持TEXTJOIN的版本

使用数组公式结合TEXTJOIN,输入后按Ctrl+Shift+Enter执行:

=TEXTJOIN(" ", TRUE, IF(Contact[VendorID列名]=[@VendorID], Contact[联系人列名], ""))

方式B:无TEXTJOIN的版本

通过VBA自定义函数实现:

  1. 按下Alt+F11打开VBA编辑器
  2. 插入新模块,粘贴以下代码:
Function JoinMatches(targetID As Variant, idRange As Range, valueRange As Range, delimiter As String) As String
    Dim cell As Range
    Dim output As String
    output = ""
    For Each cell In idRange
        If cell.Value = targetID Then
            If output <> "" Then output = output & delimiter
            output = output & valueRange.Cells(cell.Row - idRange.Row + 1).Value
        End If
    Next cell
    JoinMatches = output
End Function
  1. 在主表Contact列输入公式:
=JoinMatches([@VendorID], Contact[VendorID列名], Contact[联系人列名], " ")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 05:08:05