1

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

示例(我需要执行以下操作)

(Sheet 1 Col. A)
1
2
3
4

(Sheet 2 Col. A)
5
6

(Sheet 3 Col. A)
7
8
9

需要将以上所有内容复制到表 4 Col. 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

上面的编码不能按我的需要工作。有人请帮我做上面的例子。

非常感谢。

4

2 回答 2

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 复制到主文件之前检查每张工作表内是否有任何数据,以特定顺序循环工作表,检查“主”工作表是否存在,等等。

于 2013-05-23T04:11:14.423 回答
0

这是另一种方法,非常快速且基本但可以完成工作
您显然可以将所有这 3 个 do 循环组合成一个循环

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
于 2013-05-23T04:19:15.083 回答