复制工作表 3 中的范围 A:AM 而不是整行,然后粘贴到工作表 1 (A1) 中一个下方

  • 本文关键字:工作 A1 一个 然后 范围 AM 复制 vba
  • 更新时间 :
  • 英文 :


如何更改代码,使其仅将工作表 3 中的范围 A:AM 复制到 D 列的最后一行,而不是复制整行并将其粘贴到工作表 1 (A1( 中一个在另一个下面?

Option Explicit 
Public Sub ABC()
Dim LastRow As Long
LastRow = Sheets(3).Cells(Rows.Count, "d").End(xlUp).Row
Dim iRow As Long
For iRow = 7 To LastRow
If Application.WorksheetFunction.CountA(Sheets(3).Range("J" & iRow  & ":AM" & iRow)) <> 0 Then
Sheets(3).Rows(iRow).Copy Destination:=Sheets(1).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
End If
Next iRow
End Sub

像这样:

Sheets(3).Range("A" & iRow & ":AM" & iRow).Copy

Sheets(3).Cells(irow, "A").Resize(1, 39).Copy

Sheets(3).Range("A:AM").Rows(iRow).Copy

如果您的目标是一次将循环替换为整个范围的复制/粘贴,那么:

创建一个变量来存储基于列D的最后一行索引,然后只需创建动态范围以相应地复制


Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1")
Dim lr As Long
lr = ws.Range("D" & ws.Rows.Count).End(xlUp).Row          '<-- Find Last Row
ws.Range("A1:AM" & lr).Copy                               '<-- Copy
Sheets("Sheet2").Range("A1").PasteSpecial xlPasteValues   '<-- Paste

相关内容

最新更新