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

时间:2013-05-23 03:51:11

标签: excel vba

我需要帮助才能创建Excel VBA宏。我有一个工作簿包含4个工作表。工作表编号1,2和3中的库“A”用数据填充。我需要将这些数据复制到Sheet 4 Column“A”中。我已经通过使用此代码完成了此操作,但它不起作用(它只通过替换..来复制数据)。

示例(我需要做以下)

(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

以上编码不能正常工作。有人请帮我做上面的例子。

非常感谢。

2 个答案:

答案 0 :(得分:1)

这是我拼凑的快速代码,只是为了让你走上正轨。它可以清理。基本上你想查看每个工作表并查看最后一列使用的是什么,然后复制A列的整个使用范围,并将其粘贴到主工作表上,从A列中使用的最后一个单元格开始。你不想要粘贴整个列,所以我使用“End(xlUp)”找到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复制到主服务器之前检查每个工作表内是否有任何数据,按特定顺序循环浏览工作表,检查是否存在“主”工作表,等等

答案 1 :(得分:0)

这是另一种方式,非常快速和基本,但工作
显然,你可以将所有这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