簡體   English   中英

將行(不是整行)從一張紙復制到另一張紙

[英]Copy rows (not entire row) from one sheet to another

我在使用以下代碼時遇到問題。 “后端”是源表,“可用性”是目標表。 任何幫助表示贊賞。

Sub CopyA()

Dim lr As Long, lr2 As Long, r As Long
lr = Sheets("Backend").Cells(Rows.Count, "AB").End(xlUp).Row
lr2 = Sheets("Availability").Cells(Rows.Count, "A").End(xlUp).Row
    For r = lr To 2 Step -1
        If Range("Backend!AB" & r).Value = "A" Then
           Range("Availability!A" & lr2 + 1 & ":C" & lr2 + 1) = 
           Range("Backend!V" & r & ":X" & r).Value2
           lr2 = Sheets("Availability").Cells(Rows.Count, "A").End(xlUp).Row
        End If
    Next r
End Sub

根據您的代碼,我認為您正在嘗試從工作表Backend復制列V:X如果列AB = A並將數據粘貼到工作表Availability的列 A 中。

這段代碼實現了:

Sub CopyData()
    Dim lastRow As Long, rw As Long

    lastRow = Sheets("Backend").Cells(Rows.Count, "AB").End(xlUp).Row

    With Worksheets("Backend")
        For rw = lastRow To 2 Step -1
            If .Range("AB" & rw) = "A" Then
                pasteRow = Worksheets("Availability").Cells(Rows.Count, "A").End(xlUp).Row + 1
                Range("V" & rw & ":X" & rw).Copy Destination:=Worksheets("Availability").Range("A" & pasteRow & ":C" & pasteRow)
            End If
        Next rw
    End With
End Sub

在您的原始代碼中,您使用Step -1向后循環。 這樣做的結果是粘貼到Availability中的數據將以相反的順序排列。 如果您希望粘貼的數據按照在backend找到的順序出現,請改用此代碼:

Sub CopyData2()
    Dim copyRng As Range, cl As Range

    Set copyRng = Worksheets("Backend").Range("AB2:AB" & Worksheets("Backend").Cells(Rows.Count, "AB").End(xlUp).Row)

    With Worksheets("Availability")
        For Each cl In copyRng
            If cl = "A" Then
                pasteRow = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
                Worksheets("Backend").Range("V" & cl.Row & ":X" & cl.Row).Copy Destination:=.Range("A" & pasteRow & ":C" & pasteRow)
            End If
        Next cl
    End With
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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