- ベストアンサー
セルの繰り返しマクロ
エクセルの100行、100列の表があります 10行、10列のブロック単位で合計し新たな表(10行、10列)を作成したいのです 行と列に繰り返しになるのが私には難しいのです よろしくお願いします
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
一例です。 Sheet1にあるA1から始まる100行100列の表を、Sheet2のA1から新たな表(10行、10列)を作成します。 Sub test01() Dim myBlc As Range '変数宣言 Dim i As Long, n As Long Set myBlc = Sheets("Sheet1").Range("A1:J10") '最初のブロック For i = 1 To 10 '行を10回 For n = 1 To 10 '列を10回 Sheets("Sheet2").Cells(i, n).Value = Application.Sum(myBlc.Offset((i - 1) * 10, (n - 1) * 10)) '合計 Next n '繰り返し Next i '繰り返し End Sub
その他の回答 (2)
- nattocurry
- ベストアンサー率31% (587/1853)
マクロを使わなくてもできますよ。 100行100列の表の左上(1行目1列目)のセルがA1だとして、 新たな10行10列の表の左上のセルがA102だとすると、 A102に =SUM(OFFSET($A$1,(ROW()-102)*10,(COLUMN()-1)*10,10,10)) と書いて、10行10列の表全体にコピペすれば良いです。
お礼
早速回答を頂きありがとうございます マクロでしかできないと思っておりました 今後の参考にさせていただきます
- qualheart
- ベストアンサー率41% (1451/3486)
繰り返し処理をしたいなら、For~Nextを使うのがよいですね。 例えばA列セルに10行ごとに「A」という文字を入力したい場合 For r = 1 To 5 '繰り返したい数 Cells(1 + 10 * (r - 1), 1).Value = "A" Next と書きます。 上記を実行するとA1、A11、A21、A31、A41に「A」という文字を自動的に入力します。 上記を応用して、今度は10行ごとにA~Eの列に「A」という文字を入力したいとすると、 For r = 1 To 5 '繰り返したい数 For c = 1 To 5 Cells(1 + 10 * (r - 1), c).Value = "A" Next Next となります。 For~Nextをネスト(入れ子)にすることで、行方向と列方向に処理していくことができます。 上記を応用すれば、10行、10列のブロック単位の表を自動で作成するのは簡単だと思いますよ。
補足
早速の回答ありがとうございます この回答を基にして繰り返しのマクロをもう少し勉強したいと思っております
お礼
まさにこんなのを求めておりました 内容をまだ十分が理解できておりませんが参考にさせていただきます