在Excel VBA中将三列复制到一列中

我需要帮助来创build一个Excel VBAmacros。 我有一个工作簿包含4个工作表。 在工作表编号1,2和3中的数字“A”填充数据。 我需要将这些数据复制到Sheet 4列“A”。 我已经通过使用这个代码做到了这一点,但它不能工作(它只是通过replace数据来复制数据)。

示例(我需要做以下)

(Sheet 1 Col. A) 1 2 3 4 (Sheet 2 Col. A) 5 6 (Sheet 3 Col. A) 7 8 9 

如下需要复制在表4列A中的所有内容

 1 2 3 4 5 6 7 8 9 

所以,我写了一个代码如下

 Sub CopyColumnToWorkbook() Dim sourceColumn As Range, targetColumn As Range Set sourceColumn = Worksheets("Sheet1").Columns("A") Set targetColumn = Worksheets("Sheet4").Columns("A") sourceColumn.Copy Destination:=targetColumn End Sub Sub CopyColumnToWorkbook2() Dim sourceColumn As Range, targetColumn As Range Set sourceColumn = Worksheets("Sheet2").Columns("A") Set targetColumn = Worksheets("Sheet4").Columns("A") sourceColumn.Copy Destination:=targetColumn End Sub Sub CopyColumnToWorkbook2() Dim sourceColumn As Range, targetColumn As Range Set sourceColumn = Worksheets("Sheet3").Columns("A") Set targetColumn = Worksheets("Sheet4").Columns("A") sourceColumn.Copy Destination:=targetColumn End Sub 

这上面的编码是不行的,因为我需要。 有人请帮我按照上面的例子做。

非常感谢你。

这是我扔在一起的快速代码,只是为了让你在正确的轨道上。 它可以清理。 基本上你想查看每张纸,看看最后一列是什么,然后复制列A的整个使用范围,并粘贴到主表上,从列A中使用的最后一个单元格开始。你不想要粘贴整个列,所以我用“End(xlUp)”find列A中使用的最后一个单元格。

 Sub ColumnAMaster() Dim lastRow As Long, lastRowMaster As Long Dim ws As Worksheet Dim Master As Worksheet Application.ScreenUpdating = False Set Master = Sheets.Add Master.Name = "Master" lastRowMaster = 1 For Each ws In ThisWorkbook.Sheets If ws.Name <> "Master" Then lastRow = ws.Range("A" & Rows.Count).End(xlUp).Row ws.Range("A1:A" & lastRow).Copy Destination:=Master.Range("A" & lastRowMaster) lastRowMaster = Master.Range("A" & Rows.Count).End(xlUp).Row + 1 End If Next Application.ScreenUpdating = True MsgBox "Done!" End Sub 

对不起,StackOverflow不缩进代码,因为它应该…

您可能想要做的事情:检查每张纸上是否有任何数据,然后将A复制到主设备上,按照特定顺序在工作表中循环,检查是否存在“主”纸张等。

这是另一种方式,非常快速和基本,但是做这个工作
你显然可以将所有这3个循环合并成一个循环

 Dim x As Integer Dim y As Integer x = 1 y = 1 Do Until Worksheets("Sheet1").Range("A" & x) = "" Worksheets("Sheet4").Range("A" & y) = Worksheets("Sheet1").Range("A" & x) y = y + 1 x = x + 1 Loop x = 1 Do Until Worksheets("Sheet2").Range("A" & x) = "" Worksheets("Sheet4").Range("A" & y) = Worksheets("Sheet2").Range("A" & x) y = y + 1 x = x + 1 Loop x = 1 Do Until Worksheets("Sheet3").Range("A" & x) = "" Worksheets("Sheet4").Range("A" & y) = Worksheets("Sheet3").Range("A" & x) y = y + 1 x = x + 1 Loop