エクセルの100行、100列の表があります
10行、10列のブロック単位で合計し新たな表(10行、10列)を作成したいのです
行と列に繰り返しになるのが私には難しいのです
よろしくお願いします

A 回答 (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
    • good
    • 0
この回答へのお礼

まさにこんなのを求めておりました
内容をまだ十分が理解できておりませんが参考にさせていただきます

お礼日時:2009/05/29 18:26

マクロを使わなくてもできますよ。



100行100列の表の左上(1行目1列目)のセルがA1だとして、
新たな10行10列の表の左上のセルがA102だとすると、

A102に
=SUM(OFFSET($A$1,(ROW()-102)*10,(COLUMN()-1)*10,10,10))
と書いて、10行10列の表全体にコピペすれば良いです。
    • good
    • 0
この回答へのお礼

早速回答を頂きありがとうございます
マクロでしかできないと思っておりました
今後の参考にさせていただきます

お礼日時:2009/05/29 18:29

繰り返し処理をしたいなら、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列のブロック単位の表を自動で作成するのは簡単だと思いますよ。

この回答への補足

早速の回答ありがとうございます
この回答を基にして繰り返しのマクロをもう少し勉強したいと思っております

補足日時:2009/05/29 18:17
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング