可以利用VBA将多个excel工作表中的数据汇总到一张表格中。
软件版本:Office2007
方法如下:
1.当前工作簿中有多个工作表,结构都一样如下所示,当里面的数据不一样,将它们全部合并到当前工作表中:
2.Alt+F11,打开宏界面,输入如下代码:
Sub m()
For Each sh In Sheets '遍历每个工作表,提取数据
If sh.Name <> "Sheet1" Then '排除当前工作表
sh.Range("A2:C" & sh.Range("A65536").End(3).Row).Copy Range("A" & Range("A65536").End(3).Row + 1) '将工作表中的所有数据复制到当前工作表最后一行的下一行中
End If
Next
End Sub
3.F5执行代码,返回Excel得到结果如下,工作表合并完成:
可以利用VBA将多个excel工作表中的数据汇总到一张表格中。
软件版本:Office2007
方法如下:
1、当前工作簿中有多个工作表,结构都一样如下所示,当里面的数据不一样,将它们全部合并到当前工作表中:
2.Alt+F11,打开宏界面,输入如下代码:
Sub m()
For Each sh In Sheets '遍历每个工作表,提取数据
If sh.Name <> "Sheet1" Then '排除当前工作表
sh.Range("A2:C" & sh.Range("A65536").End(3).Row).Copy Range("A" & Range("A65536").End(3).Row + 1) '将工作表中的所有数据复制到当前工作表最后一行的下一行中
End If
Next
End Sub
3.F5执行代码,返回Excel得到结果如下,工作表合并完成:
VBA的定义:
Visual Basic for Applications(VBA)是Visual Basic的一种宏语言,是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
主要能用来扩展Windows的应用程序功能,特别是Microsoft Office软件。也可说是一种应用程式视觉化的Basic 脚本。
该语言于1993年由微软公司开发的的应用程序共享一种通用的自动化语言--------Visual Basic For Application(VBA),实际上VBA是寄生于VB应用程序的版本。微软在1994年发行的Excel5.0版本中,即具备了VBA的宏功能。
1.首先,先来看一下INDIRECT函数的用法。INDIRECT函数的作用是:将表示单元格引用的文本转换为实际单元格的引用。具体示例见下图说明:
2.上面的例子是返回同工作表中的内容,INDIRECT函数对不同工作簿、不同工作表的文本地址也是同样适用的,如下图示例:
3.注意:对部分工作表名称引用时需要在工作表名称前后加上英文状态的单引号,比如说以数字开头的工作表名称,实际单元格引用类似:='1月份报表'!H18。为了避免错误,可以将所有工作表名称前后都加上单引号。
4.下面来介绍一下要合并的数据。有12张工作表,每个工作表是一个月份的数据。其中A列是客户名称,B列和C列分别是两个产品的销售数量。每个表格里A列的客户名称是一样的(可以类比财务报表的固定科目)。
5.首先,建立一个汇总表,把客户名称复制到汇总表的A列。
6.从B1开始,将工作表名称顺序填充在汇总表第一行。
注意:工作表名称可以用其他Excel小插件取得,转置粘贴到B1开始的单元格区域。
7.先来汇总产品一各月的销售数量。
双击B2单元格,输入公式:=INDIRECT("'"&B$1&"'!B"&ROW(A2)),返回1月份A客户产品一的销售数量,可以查看原始数据表验证一下。
8.注意:上面INDIRECT函数生成单元格地址引用部分用了公式,B1代表月份,!B代表取每个表B列数据。row(A2)先返回A2单元格的行数2,然后下拉会变成3,4……等,也就可以顺序取得每个工作表其他客户的销售数据。
将B2单元格公式右拉,下拉填充满数据区域就可以方便的查看各月份各客户产品一的销售金额了。也可以查看原始数据表验证一下。
9.如果要查看产品二的数据,可以修改B2的公式,将!B改成!C,右拉下拉即可。也可以用查找替换的方法一次性完成该转换。
易错点提示:这种替换时不要只将B替换成C,因为公式中包含的所有字母B都会被替换成C,导致发生不可预期的错误。比如说ISBLANK函数的B替换成C后,excel就无法识别并运算了。
10.替换完成后,也可以查看一下原始数据表产品二的销售量,看是否正确返回了结果。
是汇总工作簿,还是汇总工作表?
不同工作簿中的工作表汇总到同一个工作簿下,可以把工作表的标签全部复制,右击会出现复制或移动工作表,然后选择你要复制的目标工作簿就可以复制过去了。
如果是同一个工作簿中的不同工作表,我不知道你要复制的位置等等,复制到同一个表中不是会覆盖其他信息么?
复制粘贴到一个里,然后再调整,好像是没有什么简单的。用公式的话,可能更麻烦。