Excel vba按照表头字段选择列复制表

本文介绍了如何使用Excel VBA宏来解决从包含多个字段的表单中,根据预设字段顺序复制数据的问题。通过VBA代码,实现了从Sheet2指定的字段在Sheet1中查找匹配项,然后复制到Sheet3,创建定制的报表。尽管存在当Sheet2中有Sheet1未包含字段时会报错的bug,但只要报表定义清晰,该宏即可正常工作。此外,还分享了调整原表中特定字段顺序的方法。
摘要由CSDN通过智能技术生成

问题描述:从网上下载的表单包含上百个字段,并且表单中的字段顺序经常混乱,制作报表过程中只需要其中的几个字段,因此需要设计一个宏,实现提取特定字段的表。

目标:根据sheet2第一列提供的字段,从sheet1中搜索表头,依次复制到sheet3中

Ps: 自己是非专业开发人士,在网上搜了很久没找到现成的代码,东拼西凑终于写出来可以运行了,有一个bug也不管了(sheet2中出现sheet1中未包含的字段则会报错),只要报表数据定义是明确的就可以执行,如有错误或优化建议请指正。

原始数据表sheet1:

待复制的表头sheet2:

最终生成的表sheet3:

实现方式: 

Sub 根据字段复制列()     '三个表,第一个表为原始数据,第二个表为待读取的字段,第
以下是一个简单的例子,可以生成一个格和一个按钮,点击按钮后可以输入字段并保存到中: 1. 首先在Excel中打开一个新的工作簿,然后按下Alt + F11打开VBA编辑器。 2. 在VBA编辑器中,右键单击左侧的“Microsoft Excel对象”,然后选择“插入”>“用户窗体”。 3. 在用户窗体上拖动和放置一个按钮和一个文本框。 4. 右键单击按钮,选择“查看代码”。 5. 在按钮的单击事件中添加以下代码: ``` Private Sub CommandButton1_Click() Dim newRow As Integer newRow = Worksheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row + 1 '获取最后一行的行号 Worksheets("Sheet1").Range("A" & newRow).Value = TextBox1.Value '将文本框中的值写入到中 TextBox1.Value = "" '清空文本框 End Sub ``` 6. 在VBA编辑器中,双击该用户窗体以返回设计器视图。 7. 右键单击该用户窗体,选择“查看代码”。 8. 在用户窗体的打开事件中添加以下代码: ``` Private Sub UserForm_Initialize() TextBox1.Value = "" End Sub ``` 9. 关闭VBA编辑器并返回Excel。 10. 在第一个工作中添加一个名为“Sheet1”的工作。 11. 在工作中添加一个名为“字段”的表头。 12. 在Excel中按下Alt + F8打开宏对话框。 13. 选择此宏并点击“创建”按钮。 14. 在“创建宏”对话框中,为此宏命名并点击“创建”按钮。 15. 点击“确定”按钮,关闭宏对话框。 16. 在Excel中,按下Alt + F8打开宏对话框。 17. 选择此宏并点击“选项”按钮。 18. 为此宏指定一个键盘快捷键或将其添加到快速访问工具栏中。 19. 关闭宏对话框。 现在,每当您按下快捷键或单击快速访问工具栏上的按钮时,将显示一个用户窗体,其中包含一个文本框和一个按钮。在文本框中输入一个值,然后单击按钮,该值将被写入名为“Sheet1”的工作中的“字段中的下一个可用单元格中。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值