读书人

向VBA大神多张表汇总

发布时间: 2013-04-02 12:35:26 作者: rapoo

向VBA大神求助,多张表汇总!
简单地说我有5张excel表每张表字段都相同,例如:编号,名称,规格 。

现在我想把这五张表内容汇总成一张表,第一张表下面接第二张表的数据,之后是第三张,一次类推。

每次对五张表中的一张增加或者修改,合成的那张表就会自动从新生成。

耽误大侠几分钟时间,帮我写个VBA宏,带上注释,给个框架或者关键函数,给思路都行。
vba excel 合成表
[解决办法]
有两种方法
一是直接用SQL查询的汇总
二是用VBA打开文件,复制粘贴到一张表后用透视表

其实你还不如把5个表都放到一个工作簿里得了,然后用数据透视表的合并计算
[解决办法]
只是简单的把五张表的内容叠加式的复制到一张表中吗?还是需要进行汇总呢?
如果只是进行叠加式的复制的话我倒是有一个现成的VBA。

这个是针对文件进行操作的,只要指定了文件名以及相应的表就可以进行合并。
Option Explicit

Sub adddate() '该VBA是打开相应的数据并将相应的表头COPY到相应的文件名称后面。
Dim Filename As String
Dim rownum As Integer
Dim totalrow As Integer
Dim buildtype As String
Dim totalclum
Dim j, i
Dim needrow
Dim btsprice, bscprice, sheetcount, sheetname
'Dim biaoti, shuliang As Range

Application.DisplayAlerts = False
Application.ScreenUpdating = False

totalrow = 0
buildtype = ""
btsprice = 0
bscprice = 0
'Set biaoti = Nothing
'Set shuliang = Nothing

Windows("test.xlsm").Activate
Sheets(1).Activate

rownum = Sheet1.Range("a1").End(xlDown).Row

For i = 1 To rownum
Filename = Cells(i, 1).Value

Workbooks.Open Filename
sheetcount = Sheets.Count
For j = 1 To sheetcount
sheetname = Trim(Sheets(j).Name)

If Trim(Sheets(j).Name) = "BTSINFO" Then 'btsprice = 1

Sheets("BTSINFO").Activate
Cells.EntireColumn.Hidden = False


totalrow = ActiveSheet.Range("e65535").End(xlUp).Row

totalclum = ActiveSheet.Range("fc1").End(xlToLeft).Column

'Debug.Print totalrow, totalclum

' ActiveSheet.Range(Cells(1, 5).Address, Cells(1, totalclum).Address)
'shuliang = ActiveSheet.Range(Cells(totalrow, 5).Address, Cells(totalrow, totalclum).Address)

'Application.Union(Range(Cells(1, 3).Address, Cells(1, totalclum).Address), Range(Cells(totalrow, 3).Address, Cells(totalrow, totalclum).Address)).Select


Range(Cells(2, 1).Address, Cells(totalrow, 6).Address).Select
Selection.Copy


Windows("test.xlsm").Activate
Sheets(2).Activate
needrow = ActiveSheet.Range("a65535").End(xlUp).Row + 1 '这样可保留总计项。
' Debug.Print needrow
Cells(needrow, 1) = Filename
Cells(needrow + 1, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False '按值粘贴
'Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True '按转置粘贴
'Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True '按值粘贴并转置
totalrow = 0
totalclum = 0
needrow = 0
btsprice = 0
bscprice = 0
ActiveWindow.ActivateNext

End If
Next j
ActiveWindow.Close

Windows("test.xlsm").Activate
Sheets(1).Activate

Next i


Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

[解决办法]
怎么我都没有编辑自己帖子的权限
判断更新运行宏示例
Private Sub Worksheet_Change(ByVal Target As Range)
adddate
End Sub
假设三楼的宏就是你要的

读书人网 >OFFICE教程

热点推荐