Excelmacros – 表的联合

我试图运行一个macros从不同的工作表复制三个表,并将其粘贴在一个新的工作表中。

表中的行数并不总是相同的。 因此,我需要一个带有“dynamic”“LastRow”参数的macros,这样每次更新一个表时,macros的结果都会被更新。

我试图运行这个macros:^

Dim lastRow As Long lastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row + 1 Sheets("Discussed Files").Select Range("Table1[#Headers]").Select Selection.Copy Sheets("All data").Select Range("A1").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Discussed Files").Select Range("Table1").Select Application.CutCopyMode = False Selection.Copy Sheets("All data").Select Range("A2").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Files within 3 Days").Select Range("Table3").Select Application.CutCopyMode = False Selection.Copy Sheets("All data").Select Range("A" & lastRow).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Files 10.04.17").Select Range("Table5").Select Application.CutCopyMode = False Selection.Copy Sheets("All data").Select Range("A" & lastRow).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$Y$" & lastRow), , xlYes).Name = _ "Table14" Range("Table14[#All]").Select ActiveSheet.ListObjects("Table14").TableStyle = "TableStyleMedium2" 

我无法确切了解macros在做什么。 最后是一张桌子的行数等于第一张,但是桌子里面的数据是“随机”从其他纸张上取的。 而且,select将结果作为表格是不正确的。

根据上面的评论(也删除了不必要的select)

 Sub x() Dim lastRow As Long With Sheets("All data") Sheets("Discussed Files").Range("Table1[#All]").Copy .Range("A1").PasteSpecial Paste:=xlPasteValues lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row + 1 Sheets("Files within 3 Days").Range("Table3").Copy .Range("A" & lastRow).PasteSpecial Paste:=xlPasteValues lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row + 1 Sheets("Files 10.04.17").Range("Table5").Copy .Range("A" & lastRow).PasteSpecial Paste:=xlPasteValues lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row + 1 .ListObjects.Add(xlSrcRange, .Range("$A$1:$Y$" & lastRow), , xlYes).Name = "Table14" .ListObjects("Table14").TableStyle = "TableStyleMedium2" End With End Sub 

您不会在步骤之间更新lastRow ,因此您基本上将它们粘贴到同一个位置,因为在粘贴其中一个表格后, lastRow不会更新,而是在代码的开头保留相同的值:

 Range("A" & lastRow).Select Selection.PasteSpecial 

此外,这段代码将返回最后一行的数据,所以如果你粘贴到干净的工作表,你将所有的表粘贴到同一个地方:

 lastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row + 1 

编辑:

 Dim lastRow As Long lastRow = Sheets("All data").Cells(Rows.Count, "A").End(xlUp).Row + 1 Sheets("Discussed Files").Range("Table1[#All]").Select Selection.Copy Sheets("All data").Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False lastRow = Sheets("All data").Cells(Rows.Count, "A").End(xlUp).Row + 1 Sheets("Files within 3 Days").Range("Table3").Select Selection.Copy Sheets("All data").Range("A" & lastRow).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False lastRow = Sheets("All data").Cells(Rows.Count, "A").End(xlUp).Row + 1 Sheets("Files 10.04.17").Range("Table5").Select Selection.Copy Sheets("All data").Range("A" & lastRow).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False lastRow = Sheets("All data").Cells(Rows.Count, "A").End(xlUp).Row + 1 Sheets("All data").ListObjects.Add(xlSrcRange, Range("$A$1:$Y$" & lastRow), , xlYes).Name = _ "Table14" Range("Table14[#All]").Select Sheets("All data").ListObjects("Table14").TableStyle = "TableStyleMedium2"