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

Excel工作表公式实现:根据指定行号自动复制对应行数据

Excel跨工作表自动匹配复制数据实现方案

方法一:公式法(无需宏,兼容性好)

假设第一个工作表名为Sheet1,第二个为Sheet2,且两者均为结构化表格。

  1. 选中Sheet2中lines列右侧的第一个单元格(例如B2单元格)
  2. 输入以下公式(Excel 365/2021及以上版本适用):
    =XLOOKUP([@lines], Sheet1[lines], Sheet1[#ThisRow])
    
    若使用旧版Excel,可改用INDEX+MATCH组合公式(需按Ctrl+Shift+Enter作为数组公式输入,新版Excel无需此操作):
    =INDEX(Sheet1[#All], MATCH([@lines], Sheet1[lines], 0), COLUMN())
    
  3. 按回车后,公式会自动填充到表格的整列区域。此后只要在Sheet2的lines列输入编号,对应行就会自动同步Sheet1中相同编号行的全部数据。

注意:删除Sheet2中lines列的编号后,对应行的同步数据会变为#N/A,若需要保留数据可改用下方VBA方法。

方法二:VBA宏方法(直接复制数据,灵活性高)

通过工作表事件实现输入编号后自动复制整行数据:

  1. 按下Alt+F11打开VBA编辑器
  2. 在左侧项目窗口中找到Sheet2,双击打开其代码窗口
  3. 粘贴以下代码:
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim wsSource As Worksheet
        Dim matchRow As Long
        Set wsSource = ThisWorkbook.Worksheets("Sheet1")
        
        ' 仅监听lines列的单元格修改
        If Not Intersect(Target, Me.ListObjects(1).ListColumns("lines").Range) Is Nothing Then
            If Target.Cells.Count = 1 Then
                ' 在Sheet1中查找对应编号的行
                matchRow = Application.Match(Target.Value, wsSource.ListObjects(1).ListColumns("lines").Range, 0)
                If Not IsError(matchRow) Then
                    ' 复制对应行数据到当前行
                    wsSource.ListObjects(1).ListRows(matchRow).Range.Copy Target.EntireRow
                    ' 保留输入的lines编号(避免被复制数据覆盖)
                    Target.Value = Target.Value
                End If
            End If
        End If
    End Sub
    
  4. 关闭VBA编辑器,返回Excel界面

注意事项

  • 将代码中的Sheet1替换为你实际的第一个工作表名称
  • 保存文件时需选择.xlsm格式(启用宏的工作簿)
  • 输入编号后,数据会直接复制到Sheet2的对应行,即使删除编号,数据仍会保留

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 19:11:30