Excel 2016跨表匹配多值合并遇#Name?错误求助
Excel 2016实现多值匹配合并的解决方案
错误原因
你遇到的#Name?错误是因为Excel 2016原生不支持TEXTJOIN函数——这个函数是Excel 2019、Excel 365及后续版本才新增的功能,直接在2016中使用会触发函数未识别错误。
解决方法
方法一:自定义VBA函数(推荐,无长度限制)
- 按
Alt+F11打开VBA编辑器 - 在左侧工程窗口右键点击你的工作簿名称,选择「插入」→「模块」
- 将以下代码粘贴到模块窗口中:
Function JoinMatches(lookupVal As String, lookupRng As Range, returnRng As Range, delimiter As String) As String Dim cell As Range Dim output As String output = "" For Each cell In lookupRng If cell.Value = lookupVal Then If output <> "" Then output = output & delimiter output = output & returnRng.Cells(cell.Row - lookupRng.Row + 1).Value End If Next cell JoinMatches = output End Function
- 保存工作簿为「Excel 启用宏的工作簿(.xlsm)」格式
- 返回Sheet1,在需要显示结果的单元格(比如B2)输入公式:
=JoinMatches(A2, Sheet2!$O$2:$O$491, Sheet2!$A$2:$A$491, ", ") - 下拉填充公式即可批量获取匹配结果
方法二:数组公式(无需宏,有长度限制)
如果不想启用宏,可以使用数组公式替代,输入后需要按Ctrl+Shift+Enter确认(不是普通的回车):
=TRIM(MID(SUBSTITUTE(CONCAT(IF(Sheet2!$O$2:$O$491=A2, Sheet2!$A$2:$A$491&", ", "")), ", ", REPT(" ", 100)), 1, 100*(LEN(CONCAT(IF(Sheet2!$O$2:$O$491=A2, Sheet2!$A$2:$A$491&", ", "")))-LEN(SUBSTITUTE(CONCAT(IF(Sheet2!$O$2:$O$491=A2, Sheet2!$A$2:$A$491&", ", "")), ", ", "")))/2))
注意:这种方法合并后的文本长度不能超过Excel单元格的字符限制(32767字符),如果匹配结果较多,可能会截断内容。
内容的提问来源于stack exchange,提问作者nothing
相关产品推荐
相关产品推荐

