はじめに

左のリストの値を右のように不規則な行に値を転記していきたい場合のテクニックを紹介します。
あるデータを決まったフォーマットに並べなければいけないようなシチュエーションは、業務の中で度々起こります。
このような時は、For Each In と Array()を使って、転記する行番号をリスト化して巡回すれば解決します。
プログラムコード
Sub macro()
Dim r
Dim i As Long
i = 2
For Each r In Array(2, 6, 9, 12, 16, 18)
Cells(r, "D") = Cells(i, "A")
Cells(r, "E") = Cells(i, "B")
i = i + 1
Next r
End Sub
For Each In は、In の後に配列やコレクション(オブジェクトの配列)を置く事が出来ます。
この配列の個々の要素に対して Each の後に配した 変数に値が代入されていきます。
代入する変数(ここでは r )はバリアント型を取るのが定石です。
左側のリストに関しては i で行数を指定する形になっています。
まとめ
For Each In と Array() を組み合わせた形は覚えておくと便利だと思います。