Я впервые экспериментирую с рекурсией. В этой задаче у меня есть огромный набор данных со многими строками, и в каждой строке есть N число из 4 диапазонов ячеек для копирования (от столбца O до столбца GB). У меня написана следующая функция:
Function Recursive(Rng As Range)
If N = 1 Then
Rng.Offset(, -3).Resize(, 670).Copy
Rng.Offset(1, -3).Insert Shift:=xlDown
Rng.Offset(, 6).Resize(, 4).Copy
Rng.PasteSpecial Paste:=xlPasteValues
Else
Rng.Offset(, -2).Resize(, 670).Copy
Rng.Offset(1, -2).Insert Shift:=xlDown 'Repeat these two lines N times'
Rng.Offset(, 7 + 4 * N).Resize(, 3).Copy
Rng.Offset(N, 0).PasteSpecial Paste:=xlPasteValues
Recursive (N - 1)
End If
N = 0
End Function
Я знаю, что это довольно грубо, и я уже вижу некоторые проблемы. По сути, если N равно 4, то я хочу, чтобы первые две строки инструкции Else повторялись 4 раза, а затем переходили к выполнению следующих трех строк снова и снова, пока N не станет равным 1. В основном, где есть много диапазонов, проходящих через набор данных, я хочу создать новую строку, чтобы поместить их, включая ячейки слева от Rng. Можно ли вставить строку, в которой я сделал свой комментарий, в которой говорится: «Вернитесь и повторите эти две строки N раз?»
if (...) then { loop ...}
, в общем. - person Marc B   schedule 11.08.2015