Excelのマクロに関する質問です。良い回答は、250ポイント差し上げます。

ブック内各シートのデータを連結したい。

※ブック内にはTOPシートがあり、TOPシートは連結しない
※各シートの数は50シート位、シート名の規則はない
※各シート行数はバラバラ

【青森シート】
2-----青森------------------- ←セルを結合しています。
3  入金  出金   損害金
4  500   1000    300
5  800   900    100

【岩手シート】
2-----岩手------------------- ←セルを結合しています。
3  入金  出金  損害金
4  800   300    150


□□□集計後のイメージ□□□□□□
【集計シート】
2-----青森------------------- ←セルを結合しています。
3  入金  出金   損害金
4  500   1000    300
5  800   900    100
7
8-----岩手------------------- ←セルを結合しています。
9  入金  出金  損害金
10  800   300    150
11

マクロでの回答は、ソースも記述願います。
どうか宜しくお願いします。

回答の条件
  • 1人10回まで
  • 登録:2011/02/25 23:32:27
  • 終了:2011/02/26 00:42:52

ベストアンサー

id:Mook No.2

Mook回答回数1312ベストアンサー獲得回数3912011/02/25 23:59:26

ポイント250pt

先頭シートを TOPシート とみなしています。

Sub GatherData()
    Dim dstRow As Long
    dstRow = 2
    
    Dim lastRow As Long
    Dim i As Long
        
    For i = 2 To Worksheets.Count
        lastRow = Worksheets(i).Range("A" & Rows.Count).End(xlUp).Row
        Worksheets(i).Rows(2 & ":" & lastRow).Copy _
            Destination:=Worksheets(1).Rows(dstRow & ":" & (dstRow + lastRow - 2))
        dstRow = dstRow + lastRow - 1
    Next
End Sub
id:anim130M

回答ありがとうございました。

思い通りに動きました。

2011/02/26 00:40:28

その他の回答(2件)

id:fonya3 No.1

fonya3回答回数238ベストアンサー獲得回数102011/02/25 23:42:10

ポイント50pt

マクロに関する回答では無いのですが、そもそも元データのシートの作りをデータベース的にしてピボットテーブルで集計するのが現在のExcel使いの定番なのではないでしょうか。

都道府県  年月  入金  出金   損害金

この様な列に一連のデータを入力してピボットテーブルで集計すればマクロなんて不要ですよ。

ピボットテーブルについてはこのへんを見てください。

http://kokoro.kir.jp/excel/pivottable.html

id:anim130M

回答ありがとうございます。

質問文に記載するのを忘れてましたが、

各シート毎に平均額・合計額を行の最後にあり、

ピポットテーブルでは実現できないな~と思いました。

2011/02/25 23:48:12
id:Mook No.2

Mook回答回数1312ベストアンサー獲得回数3912011/02/25 23:59:26ここでベストアンサー

ポイント250pt

先頭シートを TOPシート とみなしています。

Sub GatherData()
    Dim dstRow As Long
    dstRow = 2
    
    Dim lastRow As Long
    Dim i As Long
        
    For i = 2 To Worksheets.Count
        lastRow = Worksheets(i).Range("A" & Rows.Count).End(xlUp).Row
        Worksheets(i).Rows(2 & ":" & lastRow).Copy _
            Destination:=Worksheets(1).Rows(dstRow & ":" & (dstRow + lastRow - 2))
        dstRow = dstRow + lastRow - 1
    Next
End Sub
id:anim130M

回答ありがとうございました。

思い通りに動きました。

2011/02/26 00:40:28
id:fonya3 No.3

fonya3回答回数238ベストアンサー獲得回数102011/02/26 00:30:53

ピボットテーブル機能の集計方法を変更すれば平均とか合計とかも計算出来ますよ。

http://www.relief.jp/itnote/archives/002557.php

id:anim130M

回答ありがとうございました。

2011/02/26 00:41:43

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません