1

ループ内のインデックスが同時に変化するこのループを実行しようとしています。

For i = 0 To 20 Step 5
For j = 0 To 5 Step 1

Range(ActiveCell, ActiveCell.Offset(5 + i, 0)).Copy Destination:=Cells(8, 12 + j)

Next i
Next j

私はこれを行うためのループを取得しようとしています

Range(ActiveCell, ActiveCell.Offset(5 + 0, 0)).Copy Destination:=Cells(8, 12 + 0)
Range(ActiveCell, ActiveCell.Offset(5 + 5, 0)).Copy Destination:=Cells(8, 12 + 1)
Range(ActiveCell, ActiveCell.Offset(5 + 10, 0)).Copy Destination:=Cells(8, 12 + 2)
Range(ActiveCell, ActiveCell.Offset(5 + 15, 0)).Copy Destination:=Cells(8, 12 + 3)
Range(ActiveCell, ActiveCell.Offset(5 + 20, 0)).Copy Destination:=Cells(8, 12 + 4)

私が持っているループは残念ながらこれを行います:

Range(ActiveCell, ActiveCell.Offset(5 + 0, 0)).Copy Destination:=Cells(8, 12 + 0)
Range(ActiveCell, ActiveCell.Offset(5 + 5, 0)).Copy Destination:=Cells(8, 12 + 0)
Range(ActiveCell, ActiveCell.Offset(5 + 10, 0)).Copy Destination:=Cells(8, 12 + 0)
...
Range(ActiveCell, ActiveCell.Offset(5 + 0, 0)).Copy Destination:=Cells(8, 12 + 1)
Range(ActiveCell, ActiveCell.Offset(5 + 5, 0)).Copy Destination:=Cells(8, 12 + 1)

私は次のような単一のループを持つことができると思います:しかし、それは完全にはそれをしません。

For i = 0 To 20 Step 5

Range(ActiveCell, ActiveCell.Offset(5 + i, 0)).Copy Destination:=Cells(8, 12 + j-4)

Next j

インデックスが同時に変化するループを持つためのアイデアを誰かが提案できますか?ありがとうございました!!

4

2 に答える 2

2
for j = 0 to 5
    Range(ActiveCell, ActiveCell.Offset(5 + i, 0)).Copy _
         Destination:=Cells(8, 12 + j)
    i = i + 5
next j

編集:私の答えをもう少し完全にするために:ネストされたforループは「同時に機能」しません。最も内側のforループはすべての反復を実行して終了し、次のループはそのサイクルを終了できます。あなたがしていることへの秘訣は、両方の変数を制御するたった1つのループです。ルックに配置するものを選択できます(iと手動でjをインクリメントするか、またはその逆)。

于 2012-11-07T00:39:40.540 に答える
2

それらを並行して実行したいので、実際には2つのループは必要ありません。ある変数を他の変数から計算します。

For j = 0 To 4 Step 1
  i = j * 5

  Range(ActiveCell, ActiveCell.Offset(5 + i, 0)).Copy Destination:=Cells(8, 12 + j)

Next i
于 2012-11-07T00:50:37.760 に答える