图2 数据必须从所有子表输入到上图2中的绿色区域。 这里的技巧是过程运行时排除汇总表,以便仅将子表或原始数据复制到汇总表中。下面VBA程序将执行此操作:Sub
Combine1() Dim ws As Worksheet Dim sh As Worksheet Application.ScreenUpdating = False Set sh = Sheet5 '
Summary工作表 sh.Range('A11:D1000').Clear For Each ws In Sheets If ws.Name <> 'Summary'
Then ws.Range('A2',
ws.Range('D' & Rows.Count).End(xlUp)).Copy _ sh.Range('A' &
Rows.Count).End(xlUp)(2) End If Next ws Application.ScreenUpdating = TrueEnd
Sub 以上是基于希望使用当前文件中的所有数据更新Summary工作表的前提,还假设Summary工作表中有标题。上面的过程首先将清除Summary工作表,但标题保持不变,以便将新数据粘贴到该工作表中。 此外,还可以将多个工作表中的数据复制到Summary工作表中某个单元格区域的底部。如果Summary工作表中有以前的信息,或者希望保留汇总工作表中原来的信息,则可以使用下面的程序:Sub
Combine2() Dim ws As Worksheet Dim sh As Worksheet Set sh = Sheet5 For Each ws In Sheets If ws.Name <> 'Summary'
Then ws.Range('A2',
ws.Range('D' & Rows.Count).End(xlUp)).Copy _ sh.Range('A' &
Rows.Count).End(xlUp)(2) End If Next wsEnd
Sub 如果要在汇总数据时排除多个工作表,可以将And语句与If语句结合使用:Sub
Combine3() Dim ws As Worksheet Dim sh As Worksheet Set sh = Sheet5 For Each ws In Sheets If ws.Name <> 'Summary'
And ws.Name <> 'shName' And ws.Name <>
'shName2' Then ws.Range('A2',
ws.Range('D' & Rows.Count).End(xlUp)).Copy _ sh.Range('A' &
Rows.Count).End(xlUp)(2) End If Next wsEnd
Sub 这样,除了Summary工作表外,shName和shName2工作表中的数据也不会被汇总。