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

Excel跨工作表模糊匹配并整行复制问题求助

解决Excel跨表模糊匹配并复制整行的问题

方法一:公式实现(推荐Excel 365/2021+)

假设:

  • Sheet1待匹配字符串在A列(如A2为首个匹配项)
  • Sheet2被匹配列是B列,数据范围为Sheet2!$B$2:$B$1000(可自行调整行范围)
  • 匹配成功后,将Sheet2对应整行内容放入Sheet1的R列起始位置

匹配首个结果

在Sheet1的R2单元格输入公式(365/2021直接回车,旧版按Ctrl+Shift+Enter):
=XLOOKUP(TRUE,ISNUMBER(SEARCH(A2,Sheet2!$B$2:$B$1000)),Sheet2!$2:$1000,"无匹配")

  • SEARCH(A2, Sheet2!$B$2:$B$1000):检测Sheet2的B列单元格是否包含Sheet1 A2的字符串
  • ISNUMBER(...):将检测结果转为布尔值(TRUE=匹配成功)
  • XLOOKUP:定位首个匹配项,返回对应整行内容;无匹配则显示“无匹配”

匹配所有结果

如果需要返回所有符合条件的整行,用FILTER函数(仅365/2021支持):
=FILTER(Sheet2!$2:$1000,ISNUMBER(SEARCH(A2,Sheet2!$B$2:$B$1000)),"无匹配")
公式会自动溢出显示所有匹配行,需确保R列及右侧有足够空白单元格。

方法二:VBA宏实现(兼容所有Excel版本)

如果公式无法满足需求(如批量处理、格式保留),用VBA:

  1. 按Alt+F11打开VBA编辑器
  2. 右键点击当前工作簿→插入→模块
  3. 粘贴以下代码:
Sub MatchAndCopyRows()
    Dim ws1 As Worksheet, ws2 As Worksheet
    Dim lastRow1 As Long, lastRow2 As Long
    Dim i As Long, j As Long
    Dim matchStr As String
    
    Set ws1 = ThisWorkbook.Sheets("Sheet1")
    Set ws2 = ThisWorkbook.Sheets("Sheet2")
    
    lastRow1 = ws1.Cells(Rows.Count, "A").End(xlUp).Row '获取Sheet1 A列最后一行
    lastRow2 = ws2.Cells(Rows.Count, "B").End(xlUp).Row '获取Sheet2 B列最后一行
    
    For i = 2 To lastRow1
        matchStr = ws1.Cells(i, "A").Value
        '遍历Sheet2查找匹配项
        For j = 2 To lastRow2
            'vbTextCompare=不区分大小写,需区分则改为vbBinaryCompare
            If InStr(1, ws2.Cells(j, "B").Value, matchStr, vbTextCompare) > 0 Then
                ws2.Rows(j).Copy ws1.Cells(i, "R") '复制整行到Sheet1 R列起始位置
                Exit For '找到首个匹配即停止,需保留所有匹配则删除此行
            End If
        Next j
    Next i
End Sub
  1. 按F5运行宏,或绑定到快速访问工具栏方便重复使用

旧版Excel兼容方案(2019及以下)

如果无法使用XLOOKUP/FILTER,改用INDEX+MATCH数组公式:
=INDEX(Sheet2!$2:$1000,MATCH(TRUE,ISNUMBER(SEARCH(A2,Sheet2!$B$2:$B$1000)),0),0)
输入后必须按Ctrl+Shift+Enter触发数组计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 19:35:45