2016-03-23 2 views
0

У меня есть этот макрос, который работает нормально в первой строке, но как только он завершится, я хочу, чтобы он снова запускался в следующей строке вниз и вставлял результат в следующую строку вниз «результаты» листа и продолжить процесс через весь документ до тех пор, пока не достигнет последней записи - (есть около 5300 записей в моей таблице.)Макро для повторения на следующем строчке вниз

Sub Macro2() 
    ' Macro2 Macro 

    Range("A2:BW2").Select 
    Selection.Copy 
    Sheets("Lookup").Select 
    Range("F3").Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
    Range("F3:V3").Select 
    Application.CutCopyMode = False 
    Selection.Copy 
    Sheets("Result").Select 
    Range("A2").Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 

End Sub 

Поэтому в основном я копирую первую строку данных на листе с именем «amps_job_history», они вставляют эти данные в лист под названием «поиск», как только данные вставляются там, формула выполняет расчет, который выдает данные с данными из другого листа. Затем я хочу скопировать исходные данные плюс дополнительные 3 столбца, которые были связаны с данными с формулами, и вставить его в лист, называемый «результат». Затем я хочу, чтобы он вернулся к первому листу «amps_job_hisotry», переместился вниз к следующей строке данных и повторил процесс, и когда он вставляет данные на страницу «результат», ей нужно пройти мимо следующей строки вниз и так далее и так далее, пока не достигнет последней записи.

ответ

0

Я думаю, что этот цикл - это то, что вы ищете.

Sub Macro2() 
    ' Macro2 Macro 
    Dim rw As Long 

    With Worksheets("amps_job_history") 
     For rw = 2 To .Cells(Rows.Count, "A").End(xlUp).Row 
      With Intersect(.Range("A:BW"), .Rows(rw)) 
       Worksheets("Lookup").Range("F3").Resize(.Rows.Count, .Columns.Count) = .Value 
      End With 

      With Worksheets("Lookup") 
       With .Range("F3:V3") 
        Worksheets("Result").Range("A1").Offset(rw - 1, 0).Resize(.Rows.Count, .Columns.Count) = .Value 
       End With 
      End With 
     Next rw 
    End With 

End Sub 

Строки из источника данных в amps_job_history и назначения Результат листа смещаются вниз еще одну строку на каждом цикле. Переходный диапазон F3: V3 на рабочем листе Lookup остается неизменным.

Я использовать перенос прямого значения, а не копировать, вставить специальный, значение и With ... End With statement обеспечивают явные родительский лист ссылки без использования Range .Select или Range .Activate методов.

Смежные вопросы