【发布时间】:2017-10-11 21:43:31
【问题描述】:
我正在将多个 Excel 工作表合并到一个主工作表中。以下代码适用于所有工作表具有相同列的情况:
Sub CombineData()
Dim Sht As Worksheet
'This If will clear Master before combining
Worksheets("Master").Range("A2:ZZ9000").ClearContents
For Each Sht In ActiveWorkbook.Worksheets
If Sht.Name <> "Master" And Sht.Range("A2").Value <> "" Then
Sht.Select
LastRow = Range("A9000").End(xlUp).Row
Range("A2", Cells(LastRow, "ZZ")).Copy
Sheets("Master").Select
Range("A9000").End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Else
End If
Next Sht
End Sub
但是,我现在需要更进一步,当列与源工作表不同时,将工作表合并到一个列出所有列的母版中。
This shows the layout of the worksheets I'm testing with, to keep things simple.
我愿意将所有源列映射到目标列(例如
-Source1,A 列到主控,A 列
-Source2,B 列到主控,D 列
-等
或者简单地使用源工作表中的所有列重新创建 Master - 如果源工作表发生更改,这是更可取的。
干杯-
【问题讨论】:
-
你试过什么?另外需要注意的是,最好avoid the use of
.Select/.Activate