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

如何匹配sheet1与sheet2的A列值并将sheet2对应行替换到sheet1

按两表A列匹配实现整行覆盖的操作方案

核心需求:以Sheet1、Sheet2的A列值为匹配依据,当两列对应值相等时,将Sheet2匹配行的整行数据覆盖写入Sheet1对应匹配值的行位置。


方法1:函数实现(适合无代码基础的普通用户,Excel 2021/365、WPS 2021及以上版本通用)

  • 选中Sheet1中B列第一个需要填充数据的单元格(例如表头在第一行的话就选B2)
  • 输入公式:=XLOOKUP($A2,Sheet2!$A:$A,Sheet2!B:B,"")
  • 按住单元格右下角的填充柄,向右拉动到需要覆盖的所有列,再向下拉动到Sheet1所有数据行,即可自动填充匹配到的内容
  • 若需要把公式转为固定值避免后续修改,全选填充后的区域,右键选择「粘贴选项」-「值」即可完成最终覆盖

方法2:VBA脚本实现(适合批量、高频操作场景,全版本Excel、WPS通用)

  • 打开目标Excel文件,按下Alt + F11调出VBA编辑器
  • 右键点击左侧面板中你的工作簿名称,依次选择「插入」-「模块」
  • 将如下代码粘贴到弹出的代码编辑窗口中:
Sub 按A列匹配覆盖行数据()
    Dim ws1 As Worksheet, ws2 As Worksheet
    Dim i As Long, j As Long, lastRow1 As Long, lastRow2 As Long
    ' 下方工作表名可修改为你的实际表名
    Set ws1 = ThisWorkbook.Worksheets("Sheet1")
    Set ws2 = ThisWorkbook.Worksheets("Sheet2")
    ' 获取两个表A列的最后一行数据位置
    lastRow1 = ws1.Cells(Rows.Count, "A").End(xlUp).Row
    lastRow2 = ws2.Cells(Rows.Count, "A").End(xlUp).Row
    ' 关闭屏幕刷新提升运行速度
    Application.ScreenUpdating = False
    ' 双层遍历匹配A列值
    For i = 1 To lastRow1
        For j = 1 To lastRow2
            If ws1.Cells(i, "A").Value = ws2.Cells(j, "A").Value Then
                ' 匹配成功则整行复制覆盖
                ws2.Rows(j).Copy Destination:=ws1.Rows(i)
                Exit For
            End If
        Next j
    Next i
    Application.ScreenUpdating = True
    MsgBox "匹配覆盖操作已完成"
End Sub
  • 按下F5运行脚本即可自动完成全部匹配覆盖操作,WPS用户需要提前开启宏功能即可正常使用

小提示:如果你的A列有数值格式和文本格式不统一导致匹配失败的情况,可先把两表A列的单元格格式统一为同一类型再操作。


内容的提问来源于stack exchange,提问作者Marcin Greń

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 20:36:08