如何根据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自定义函数实现:
- 按下
Alt+F11打开VBA编辑器 - 插入新模块,粘贴以下代码:
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
- 在主表Contact列输入公式:
=JoinMatches([@VendorID], Contact[VendorID列名], Contact[联系人列名], " ")
内容的提问来源于stack exchange,提问作者agent_bean
相关产品推荐
相关产品推荐

