簡體   English   中英

如何復制帶有空白單元格的列並粘貼到新工作表 VBA 中?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM