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

如何匹配Excel两工作表列值并复制对应数据到指定列

跨表匹配填充方案

方案1:内置公式实现(最优,无需编写代码)

该方案操作简单,适配绝大多数场景,直接在Sheet1的AK列操作即可:

  1. 点击Sheet1的AK2单元格(假设首行是表头,数据从第2行开始)
  2. 输入对应公式:
    • 如果你用的是Excel 2021/365及以上版本,使用更简单的XLOOKUP公式:
      =XLOOKUP(A2, Sheet2!C:C, Sheet2!W:W, "")
    • 如果你用的是更旧的Excel版本,使用兼容的VLOOKUP公式:
      =IFERROR(VLOOKUP(A2, Sheet2!C:W, 21, FALSE), "")
  3. 把AK2单元格的公式下拉填充到所有数据行即可。

公式说明:

  • 匹配不到对应值时会返回空值,和你示例中B487的展示效果一致
  • 如果你调整了列的位置,只需要对应修改公式里的列号即可

方案2:VBA脚本实现(适合十万行以上的大数据量场景)

如果数据量极大,公式计算卡顿,可以使用VBA脚本批量处理:

  1. 按Alt+F11打开VBA编辑器
  2. 右键点击当前工作簿→插入→模块
  3. 把以下代码粘贴到模块中,按F5运行即可
Sub 匹配填充AK列()
    Dim sht1 As Worksheet, sht2 As Worksheet
    Dim matchDict As Object
    Dim lastRow1 As Long, lastRow2 As Long, i As Long
    
    Set sht1 = ThisWorkbook.Worksheets("Sheet1")
    Set sht2 = ThisWorkbook.Worksheets("Sheet2")
    Set matchDict = CreateObject("Scripting.Dictionary")
    
    ' 读取Sheet2的匹配关系存入字典
    lastRow2 = sht2.Cells(sht2.Rows.Count, "C").End(xlUp).Row
    For i = 2 To lastRow2
        If Not matchDict.Exists(sht2.Cells(i, "C").Value) Then
            matchDict(sht2.Cells(i, "C").Value) = sht2.Cells(i, "W").Value
        End If
    Next
    
    ' 填充Sheet1的AK列
    lastRow1 = sht1.Cells(sht1.Rows.Count, "A").End(xlUp).Row
    For i = 2 To lastRow1
        sht1.Cells(i, "AK").Value = IIf(matchDict.Exists(sht1.Cells(i, "A").Value), matchDict(sht1.Cells(i, "A").Value), "")
    Next
    
    ' 释放内存
    Set matchDict = Nothing
    Set sht1 = Nothing
    Set sht2 = Nothing
End Sub

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:06:07