使用Excel VBA复制100多个表相同位置的列的数据汇总到一个新表中

如题所述

你的意思应该是将每个表中特定的一列取出来汇总到新表中吧?
Sub QuLieHuiZong()

Const colNo As Integer = 1 '我现在写的1,表示取A列,取哪一列就把列号改一下,B列是2,以此类推

Dim i As Integer
Dim bk As Workbook
Dim sht As Worksheet

Set bk = ActiveWorkbook
Set sht = bk.Worksheets.Add '新建一个工作表存放汇总的数据
sht.Name = "汇总"

For i = 2 To bk.Worksheets.Count
bk.Worksheets(i).Columns(colNo).Copy '拷贝每个表中特定的那一列
sht.Columns(i - 1).Select
sht.Paste '粘贴到汇总表中
Next i
sht.Cells(1, 1).Select '汇总表的光标归位
End Sub追问

这种复制会不会覆盖数据呢?能不能把特定的几列一同取出来呢?

追答

当然不会覆盖了,在汇总表中是往右一列一列地扩展。
你要哪几列最好说清楚吧。我给你一次改好。

追问

每张sheet表代表一个品牌,每个品牌都有自己的毛利统计,毛利的列每个表都是同一列的,总共有100多个表格,我要把每个sheet表里的毛利汇总到一个新的汇总表里,也是按品牌分类统计的,

追答

那你的意思不就是每张表只需要取出仅仅一个毛利的列么。
不需要其他列的话我刚才的代码就ok了呀。

追问

这是朋友一开始说的要求,然后给我打电话说还有利润…就这两列

追答

两列以上的话代码需要改一下,我发在下面,请查收

Sub QuLieHuiZong()

Dim i As Integer
Dim j As Integer
Dim bk As Workbook
Dim sht As Worksheet

Set bk = ActiveWorkbook
Set sht = bk.Worksheets.Add '新建一个工作表存放汇总的数据
sht.Name = "汇总"

j = 1 '表示汇总表从第一列开始粘贴数据
For i = 2 To bk.Worksheets.Count
'注意!下一行代码请根据实际情况修改列标
bk.Worksheets(i).Range("A:A,B:B").Copy '拷贝每个表中特定的两列,我暂时设的A列和B列,还要多加任意列都可以,放到B:B后面用,号隔开,注意下面"j = j +2"这行代码也要多加就行
sht.Columns(j).Select
sht.Paste '粘贴到汇总表中
j = j + 2 '一次粘贴了两列,所以下一个粘贴位置是+2的列
Next i
sht.Cells(1, 1).Select '汇总表的光标归位
End Sub
实际测试过运行正常,有问题可以再联系。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-04-22
实际上不管你是什么表名,不要叫汇总表即可,新建一个叫汇总表的工作表,把其他工作表你要的数据汇总在一起来,实际上你不是计算的汇总,而是把一定的数据集中到一起罢了。
你要哪列数据呢?结果又是怎么排列的?追问

我只要里面的利润,商家,毛利等几列…然后在新表里商家是一列,利润是一列,毛利是一列只要这三列

追答

全部粘贴到汇总表中,删除不要的列/如果想自动完全,用VBA完成

第2个回答  2014-04-21
100多个表文件名有规律么追问

有…sheet1到sheet114不过都重命名了呀

追答

Sub www()
Dim i As Integer
i = 0
Do While i < 115
i = i + 1
Range("a" & i).Value = Worksheets(i).Range("a1").Value
Loop
End Sub

试试看

追问

这是把所有a列都汇总到新表了吗?

追答

是的~~
把表1到114的a1
都汇总到新表的A列

追问

不能一次把特定几个列都汇总到新表里蛮?

相似回答