12行おきにコピーして行列を入れ替えて貼り付けるマクロを繰り返すには?

Question 76.7 Excel VBA Borad (掲示板)より Previous Next
12行おきに81回、列データを行データに入れ替えるマクロを作成したいのですが、81回の処理を書かなくても、12行おきに81回繰り返すマクロの書き方はありますか?
Range("")の数値を12加算するだけのことですが分かりません。
2回の処理は下記の通り。
Range("E1:E12").Select
Selection.Copy
Range("F1").Select
Selection.PasteSpecial Paste:=xlPasteAll, _
Operation:=xlNone, SkipBlanks:=False, _
Transpose:=True

Range("E13:E24").Select
Application.CutCopyMode = False
Selection.Copy
Range("F13").Select
Selection.PasteSpecial Paste:=xlPasteAll, _
Operation:=xlNone, SkipBlanks:=False, _
Transpose:=True
Answer   2003.5.6 もてもて
反復回数が81回と決まっているようなので、For...Next文(ステートメント) で繰り返し処理する方法が、分かりやすく安全でしょう。
また、「Range("")の数値を12加算する」 には、""の中を変数にすれば可能になります。 下記サンプルをお試しください。
Sub 一定間隔で行方向にコピーして列方向に貼り付ける()
    間隔 = 12                                   'コピーする行数
    回数 = 81                                   '繰り返す回数
    開始 = 1                                    'コピーする塊の最初の行番号
    行数 = 11                                   '   〃   行数
    終了 = 間隔 * (回数 - 1) + 1                '   〃   最後の行番号
    For カウンタ = 開始 To 終了 Step 間隔       '開始行から終了行まで指定間隔で繰り返す
        セル範囲 = "E" & カウンタ & ":E" & カウンタ + 行数 'コピーするセル範囲
        Range(セル範囲).Select
        Selection.Copy
        セル番号 = "F" & カウンタ               '貼り付けするセル番号
        Range(セル番号).Select
        Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=True      '行列を入れ替えて全て貼り付け
    Next
End Sub
少し補足しておきますから、参考にしてください。

8行目 「& カウンタ」
& は文字列連結演算子ですから、& の左辺の値と右辺の値(変数「カウンタ」に入っている値)を連結してくれます。
そして、変数「カウンタ」には次に説明するFor...Next文で、 最初は 1 が入りますから、
"E" & カウンタ で "E1" となります。

9行目 「セル範囲 = "E" & カウンタ & ":E" & カウンタ + 行数」
変数「セル範囲」に代入される値は、"E1:E12" となります。

12行目 「セル番号 = "F" & カウンタ」
変数「セル番号」の値が "F1" になることを分かっていただけますね。

変数「カウンタ」を For...Next文の counter引数として使っています。 一度、VBE画面の[ヘルプ]で For...Next文の説明をお読みになることを お薦めしますが、ここで簡単に解説しておきます。

For カウンタ = 開始 To 終了 Step 間隔
(1)  (2)   (4) (3)  (6) (5)  (7)  (8)

(1) 次行からNext文までの間の一連のステートメントを、(2)以下の条件で繰り返し実行する。
(2) 反復回数を数える counterである変数「カウンタ」の初期値として
(3) 変数「開始」に入っている値を
(4) 代入し、
(5) カウンタの値が変数「終了」に入っている値を
(6) 超えるまで。
(7) ただし、1回繰り返すごとにカウンタに加算する値は
(8) 変数「間隔」に入っている値とする。
となりますから、カウンタの値は2回目の繰り返しで13、3回目は25、81回目は961、82回目は973となって変数「終了」に入っている961を超えますから繰り返し処理しないで終わります。

なお、分かりやすさ第一で、コピー貼り付けのコードは、あなたが自動記録された4行のコード (セル範囲を選択する→コピー、セルを選択する→貼り付け) に沿っています。 これを2行に簡略化する書き方もありますが、いずれ暇が出来て探究心が湧きましたらマスターしておくと、以後の成長の糧になるかと思います。
(お断り) この回答はBBSでの2回分のやり取りを編集してあります。
ありがとうございました
ありがとうございました。処理は完璧です。そして、分かりやすい説明、ありがとうございます。勉強してみます。

Excel VBA Macro