Цикл VBA: копирование диапазона из нескольких рабочих листов в несколько заданных местоположений - PullRequest
0 голосов
/ 14 июня 2019

Я изначально использовал код (ниже), чтобы скомпилировать данные из 15 листов в лист «шаблона». Он делает это очень хорошо - однако потребности в рабочей тетради несколько изменились.

Вместо того, чтобы копировать эти данные в относительное местоположение (первая пустая ячейка в столбце «шаблона» A), мне теперь нужно расположить данные в заданные местоположения, смещенные на 25 в каждом цикле.

Ex:

wks 1 copy to A3 / 
wks 2 copy to A28 / 
wks 3 copy to A53 / etc

Я пытался устранить неполадки, но я все еще очень слаб, когда дело доходит до петель. Кто-нибудь может мне помочь?

Sub test()
  Dim wks As Worksheet

  For Each wks In ThisWorkbook.Worksheets

    If Not wks.Name = "template" Then
      wks.Range("B6:B30").Copy
      ActiveSheet.Paste
      Destination:=Worksheets("template").Cells(Rows.Count, "A").End(xlUp).Offset(1)

    End If

  Next
End Sub

1 Ответ

1 голос
/ 14 июня 2019

Попробуй это. Предположим, что скопированные данные никогда не превышают 24 строки?

Sub test()

Dim wks As Worksheet, r As Range

Set r = Worksheets("template").Range("A3") 'initial paste range

For Each wks In ThisWorkbook.Worksheets
    If Not wks.Name = "template" Then
        wks.Range("B6:B30").Copy r
        Set r = r.Offset(25)                'move down 25 
    End If
Next

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