Excel VBA для цикла дублирования данных - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь создать цикл for, который просматривает первую строку в моем источнике данных (строка 3), а затем вставляет ее в новый справочный лист, но затем я хочу, чтобы цикл снова вставил те же данные чуть нижеЭто.Таким образом, строки 3 и 4 в справочном листе будут идентичны.Затем я хочу, чтобы он посмотрел на строку 4 в моем источнике данных и сделал то же самое, то есть вставил данные в строки 5 и 6 в справочном листе.

Пока это мой код - сейчас он вставляет только строку 3 один раз, потому что мой диапазон фиксирован.Как это исправить, чтобы он вставлялся еще раз, а затем просматривал следующую строку в источнике данных?

RowCount = Dump.Cells(Rows.count, 1).End(xlUp).row
RefRow = ref.Cells(Rows.count, 1).End(xlUp).row

With ThisWorkbook
    With Dump
        For i = 1 To RowCount
            .Range("A3:AO3").Copy Destination:=ref.Range("A3")
            .Range("A3:AO3").Copy Destination:=ref.Range("A" & RefRow)
            RefRow = RefRow + 1
            row = row + 1
        Next i

    End With
End With

1 Ответ

0 голосов
/ 13 декабря 2018

Попробуйте это:

Sub CopyPasteDuplicateRows()
Dim i, z As Integer
Dim rg, rg2 As Range
Dim ws, ws2 As Worksheet

Set ws = Sheets("NameOfTheSourceSheet")
Set ws2 = Sheets("NameOfTheDestinySheet")

For i = 3 To ws.Range("A" & Rows.Count).End(xlUp).Row
    Set rg = ws.Range("A" & i & ":AO" & i)
    If i = 3 Then
        Set rg2 = ws2.Range("A3:A4")
    Else
        z = ws2.Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Row
        Set rg2 = ws2.Range("A" & z & ":A" & z + 1)
    End If

    rg.Copy
    rg2.PasteSpecial xlPasteAll
Next

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...