我需要帮助才能创建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
以上编码不能正常工作。有人请帮我做上面的例子。
非常感谢。
答案 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