Excel VBA множественный / вложенный для циклов - PullRequest
1 голос
/ 08 января 2020

У меня есть фрагмент кода, который просматривает 30 столбцов на одном листе в поисках данных, а затем копирует эти данные в определенное место назначения на другом листе. Ключ в том, что эти данные будут постоянно меняться. Иногда я могу копировать один столбец данных, а иногда все 30 и чаще что-то среднее.

Я выяснил, как провести oop через мои 30 столбцов данных. Однако я застрял на том, как вставить каждую копию рядом с последней на листе назначения. До сих пор он просто копирует поверх, потому что я не выяснил, как и где вставить For L oop и сделать переменную положение строки / столбца.

Мне было интересно, если бы вы могли взглянуть на приведенный ниже код и посоветовать, где эта секунда для L oop должна go?

With Sheets("RAW DATA")

    ColumnCount = 30

For i = 2 To ColumnCount

    'For j = 9 To 39

    Dim Rng As Range

    Set Rng = Sheets("RAW DATA").Cells(2, i)

    If Rng.Value <> 0 And Rng.Value <> "" Then

        With Sheets("RAW DATA").Range(Sheets("RAW DATA").Cells(1, i), Sheets("RAW DATA").Cells(16, i))
        .Copy
        End With

        With Sheets("Region")
        .Cells(9, j).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        End With

    Else
    End If

    'Next j

Next i

End With 

В данный момент она закомментирована в коде, но я пытался включить Next j часть в нужном месте.

Заранее спасибо

1 Ответ

1 голос
/ 08 января 2020

Как обсуждалось в разделе комментариев, вы можете просто начать с j = 9 (перед вашим первым For l oop) и затем сделать j = j + 1 после того, как вы вставите свои значения в лист Region. Нет необходимости во втором For ... To l oop.

(...)
    j = 9
    (...)

    For i = 2 To ColumnCount

        With Sheets("Region")
        .Cells(9, j).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        End With

        j = j + 1
    (...)
    Next i
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...