2016-03-23 16 views
0

私はこのマクロを最初の行ではうまく動作しますが、完了したら次の行を再度実行して次の行に結果を貼り付けます(約ある私のスプレッドシートで5300を記録。)マクロは、次のrownダウンで自分自身を繰り返す

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"という名前で、このデータを "lookup"というシートにペーストします。データがペーストされると、別のワークシートのデータとデータを結合する計算が行われます。私は元のデータに加えて、数式を使ってデータに接続されている余分な3列をコピーし、それを「結果」というシートに貼り付けたいとします。次に、最初のシート「amps_job_hisotry」に戻り、次のデータ行に移動してプロセスを繰り返し、データを「結果」ページに貼り付けると、それは次の行を過去にする必要があります最後のレコードに到達するまで続きます。

答えて

0

私はこのループがあなたが探しているものだと思います。 amps_job_historyと宛先結果ワークシート内のソースデータから

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 

行が各ループ上の一の以上の行をダウンシフトされます。ルックアップワークシートの遷移F3:V3の範囲は、同じままです。

私が使用し、直接値の転送ではなく、コピー、ペーストする特別な、値をしたとWith ... End With statementRange .SelectまたはRange .Activateメソッドを使用せずに明示的に親ワークシートの参照を提供します。

関連する問題