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

Excel 2016跨表匹配多值合并遇#Name?错误求助

Excel 2016实现多值匹配合并的解决方案

错误原因

你遇到的#Name?错误是因为Excel 2016原生不支持TEXTJOIN函数——这个函数是Excel 2019、Excel 365及后续版本才新增的功能,直接在2016中使用会触发函数未识别错误。

解决方法

方法一:自定义VBA函数(推荐,无长度限制)

  1. 按Alt+F11打开VBA编辑器
  2. 在左侧工程窗口右键点击你的工作簿名称,选择「插入」→「模块」
  3. 将以下代码粘贴到模块窗口中:
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
  1. 保存工作簿为「Excel 启用宏的工作簿(.xlsm)」格式
  2. 返回Sheet1,在需要显示结果的单元格(比如B2)输入公式:
    =JoinMatches(A2, Sheet2!$O$2:$O$491, Sheet2!$A$2:$A$491, ", ")
    
  3. 下拉填充公式即可批量获取匹配结果

方法二:数组公式(无需宏,有长度限制)

如果不想启用宏,可以使用数组公式替代,输入后需要按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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 04:51:06