养生 装修 购物 美食 感冒 便秘 营销 加盟 小吃 火锅 管理 创业 搭配 减肥 培训 旅游

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

时间:2024-10-24 22:23:10

在Excel做数据处理时,有时需要将两个工作表的表头做对比,两个工作表的表头顺序不缬方焱蜱一致,将其中一张表的X表头下的数据导出到另一张表对应的X表头下,下面就为大家讲解相同表头导出数据的VBA实现方式。

工具/原料

Excel

方法/步骤

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

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

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

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

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

3、双击该按钮进入VBA界面,输入以下代码:PrivateSubCommandButton龀音孵茧1_Cli艘早祓胂ck()DimtargetAsWorkbookDimpathAsStringpath=ThisWorkbook.pathSettarget=Workbooks.Open(Filename:=path&"\"&"test.xlsx")'打开比较的工作表Dimgrid1,grid2AsRange'定义两个区域ForEachgrid1InThisWorkbook.Sheets(1).Range(Cells(1,1).Address,Cells(1,Cells(1,Columns.Count).End(xlToLeft).Column).Address)'区域1是本表中第一行所有非空表头数据ForEachgrid2Intarget.Sheets(1).Range(Cells(1,1).Address,Cells(1,Cells(1,Columns.Count).End(xlToLeft).Column).Address)'区域2是目标表中第一行所有非空表头数据Ifgrid1=grid2Then'如果两个表头相同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).PasteSpecialPaste:=xlPasteValues'将复制的数据从目标表对应表头列下的起始空单元格处开始粘贴EndIfNextNexttarget.Close(True)'将目标表格保存并关闭EndSub

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

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

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

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

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

© 一点知识