скопировать пасту из разных листов с одинаковой целью - PullRequest
0 голосов
/ 01 июля 2018

Мне нужно сделать одну и ту же копию, но для большего количества столбцов, которые находятся на разных листах (4,6,8 и т. Д.), Не по порядку, как у j ...

Строки работают с arrRows (спасибо Tinman)

  • Но для столбцов я пробовал 3 форса (один работает с листами, один для столбцов, один для строк) не работает, потому что он не переходит к следующему j (после прохождения всех n просто переходит к следующему столбцу) не к следующему листу (это то, что мне нужно)

  • Я попробовал другой путь (текущий код). Я не могу найти последовательность, в которой переменная j может указывать правильный номер в arrcolumns .. возможно, я могу сделать do..loop?

Sub GHM ()

Dim j As Integer
Dim n As Long, r, c As Long
Dim arrRows, arrColumns As Variant
Dim Source As Range, Target As Range



For j = 4 To 18 Step 2




Set Source = Workbooks("180610_book1.xlsm").Worksheets(j).Cells
Set Target = Workbooks("180610_book2.xlsm").Worksheets("RAW DATA").Cells





arrRows = Array(5, 10, 15, 23, 28, 33, 38, 43, 48, 53, 61, 66, 71, 79, 84, 89, 94, 102, 107, 112, 117, 122, 127, 135, 140, 148, 153, 158, 166, 171, 179, 184, 189, 194)
arrColumns = Array(9, 14, 19, 24, 29, 34, 39, 44)


c = arrColumns(j - 4)

For n = 2 To 35
     r = arrRows(n - 2)
    Target.Cells(r, c).Resize(1, 5).Value = WorksheetFunction.Transpose(Source.Cells(4, n).Resize(5, 1).Value)
Next

Далее

End Sub

1 Ответ

0 голосов
/ 01 июля 2018

Я добавил до, пока счетчик только для столбцов, и он работал

    Dim j, x As Integer
    Dim n As Long, r, c As Long
    Dim arrRows, arrColumns As Variant
    Dim Source As Range, Target As Range

    x = 0
    For j = 4 To 18 Step 2

        Set Source = Workbooks("180610_SequencingScenarioTEST1.xlsm").Worksheets(j).Cells
        Set Target = Workbooks("180610_SequencingScenarioTEST1.xlsm").Worksheets("RAW DATA").Cells
        arrRows = Array(5, 10, 15, 23, 28, 33, 38, 43, 48, 53, 61, 66, 71, 79, 84, 89, 94, 102, 107, 112, 117, 122, 127, 135, 140, 148, 153, 158, 166, 171, 179, 184, 189, 194)
        arrColumns = Array(9, 14, 19, 24, 29, 34, 39, 44)

        Do
            c = arrColumns(x)
            For n = 2 To 35

                r = arrRows(n - 2)
                Target.Cells(r, c).Resize(1, 5).Value = WorksheetFunction.Transpose(Source.Cells(4, n).Resize(5, 1).Value)
            Next                                      'for each column being transpose to row in target sheet

            x = x + 1

        Loop Until x <> x + 1                         'for each columns in raw data = the different scenarios
    Next                                              'for j=new sheet
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...