Excel VBA 两个工作表按相同表头导出数据

2025-11-17 16:39:14

1、如果需要导出的表为A表,被导出的表为B表,那么A和B两张表需要在同一文件夹内。

Excel VBA 两个工作表按相同表头导出数据

2、在A表格中点击开发工具→插入→ActiveX控件→命令按钮,在表格中绘制一个按钮,后面导出操作只要一点击按钮即可。

Excel VBA 两个工作表按相同表头导出数据

Excel VBA 两个工作表按相同表头导出数据

3、双击该按钮进入VBA界面,输入以下代码:

Private Sub CommandButton1_Click()

    Dim target As Workbook

    Dim path As String

    path = ThisWorkbook.path

    Set target = Workbooks.Open(Filename:=path & "\" & "test.xlsx") '打开比较的工作表

        Dim grid1, grid2 As Range '定义两个区域

        For Each grid1 In ThisWorkbook.Sheets(1).Range(Cells(1, 1).Address, Cells(1, Cells(1, Columns.Count).End(xlToLeft).Column).Address) '区域1是本表中第一行所有非空表头数据

            For Each grid2 In target.Sheets(1).Range(Cells(1, 1).Address, Cells(1, Cells(1, Columns.Count).End(xlToLeft).Column).Address) '区域2是目标表中第一行所有非空表头数据

                If grid1 = grid2 Then  '如果两个表头相同

                    ThisWorkbook.Sheets(1).Range(Cells(2, grid1.Column).Address, Cells(Cells(Rows.Count, grid1.Column).End(xlUp).Row, grid1.Column).Address).copy    '复制本表该表头列下的所有数据

                    target.Sheets(1).Range(Cells(target.Sheets(1).Cells(Rows.Count, grid2.Column).End(xlUp).Row + 1, grid2.Column).Address, Cells(target.Sheets(1).Cells(Rows.Count, grid2.Column).End(xlUp).Row + 1, grid2.Column).Address).PasteSpecial Paste:=xlPasteValues   '将复制的数据从目标表对应表头列下的起始空单元格处开始粘贴

                End If

            Next

        Next

    target.Close (True)   '将目标表格保存并关闭

End Sub

Excel VBA 两个工作表按相同表头导出数据

4、最后点击按钮稍等片刻,打开B表即可看到每列对应表头下的数据都被复制过来了,注意看A表和B表相同表头下的数据是对应的

Excel VBA 两个工作表按相同表头导出数据

Excel VBA 两个工作表按相同表头导出数据

5、然后由此可以扩展到一张表将多列数据根据表头分别导入到不同表的对应列中。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢