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/26 00:42:52
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:Mook No.2

回答回数1314ベストアンサー獲得回数393

ポイント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

回答回数238ベストアンサー獲得回数10

ポイント50pt

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

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

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

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

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

id:anim130M

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

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

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

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

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

回答回数1314ベストアンサー獲得回数393ここでベストアンサー

ポイント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

回答回数238ベストアンサー獲得回数10

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

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

id:anim130M

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

2011/02/26 00:41:43

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

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

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

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

回答リクエストを送信したユーザーはいません