ブック内各シートのデータを連結したい。
※ブック内には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
マクロでの回答は、ソースも記述願います。
どうか宜しくお願いします。
先頭シートを 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
マクロに関する回答では無いのですが、そもそも元データのシートの作りをデータベース的にしてピボットテーブルで集計するのが現在のExcel使いの定番なのではないでしょうか。
都道府県 年月 入金 出金 損害金
この様な列に一連のデータを入力してピボットテーブルで集計すればマクロなんて不要ですよ。
ピボットテーブルについてはこのへんを見てください。
回答ありがとうございます。
質問文に記載するのを忘れてましたが、
各シート毎に平均額・合計額を行の最後にあり、
ピポットテーブルでは実現できないな~と思いました。
先頭シートを 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
回答ありがとうございました。
思い通りに動きました。
ピボットテーブル機能の集計方法を変更すれば平均とか合計とかも計算出来ますよ。
回答ありがとうございました。
回答ありがとうございました。
思い通りに動きました。