Excel VBA 两个工作表按相同表头导出数据
来源:网络收集 点击: 时间:2024-07-30如果需要导出的表为A表,被导出的表为B表,那么A和B两张表需要在同一文件夹内。

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


双击该按钮进入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

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


然后由此可以扩展到一张表将多列数据根据表头分别导入到不同表的对应列中。
注意事项写了VBA代码的表格存储时要存储成.xlsm的格式才能启用VBA或宏功能
版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_1035014.html