[英]How to copy columns with blank cells and paste in new worksheet VBA?
下面的代碼有效,但不會復制帶有空白單元格的行,例如“Sheet1”共有 35 行和 56 列,但某些單元格是空白的,例如單元格 A28 和 A31,這意味着代碼將復制並粘貼 33 行“Sheet2”不包括第 28 行和第 31 行,而不是所有 35 行。
我如何更改它以復制所有 35 行,而不管它是否有空白單元格?
我的目標是將所有 35 行的 10 個特定列從具有 56 列的“Sheet1”復制到當前為空白且列順序不同的“Sheet2”。 希望這是有道理的。
Sub Transfer_Macro ()
'
Dim lastrow As Long, erow As Long
lastrow = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To lastrow
Worksheets("Sheet1").Cells(i, 1).Copy
erow = Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row
Worksheets("Sheet1").Paste Destination:=Worksheets("Sheet2").Cells(erow + 1, 1)
Worksheets("Sheet1").Cells(i, 3).Copy
Worksheets("Sheet1`").Paste Destination:=Worksheets("Sheet2").Cells(erow + 1, 3)
Next i
End Sub
假設 Luis Curado 正確診斷了您的問題,您可以在 A 和 C 中找到最后一個單元格行中較大的一個。
你也有一些混亂的語法here
Worksheets("Sheet1").Paste Destination:=Worksheets("Sheet2").Cells(erow + 1, 1)
最后,您可以在不涉及剪貼板的情況下傳輸值。
Sub Transfer_Macro()
Dim lastrow As Long, erow As Long
With Worksheets("Sheet1")
lastrow = WorksheetFunction.Max(.Cells(Rows.Count, 1).End(xlUp).Row, .Cells(Rows.Count, 3).End(xlUp).Row) 'could use Find instead for this
For i = 2 To lastrow
erow = Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row
Worksheets("Sheet2").Cells(erow + 1, 1).Value = .Cells(i, 1).Value
Worksheets("Sheet2").Cells(erow + 1, 3).Value = .Cells(i, 3).Value
Next i
End With
End Sub
請注意,如果您正在復制空白單元格,最后一行將不會更新。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.