人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

●質問者: anim130M
●カテゴリ:ビジネス・経営 コンピュータ
✍キーワード:Excel TOP □□□ イメージ セル
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● fonya3
●50ポイント

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

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

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

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

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

◎質問者からの返答

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

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

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

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


2 ● Mook
●250ポイント ベストアンサー

先頭シートを 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
◎質問者からの返答

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

思い通りに動きました。


3 ● fonya3
●0ポイント

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

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

◎質問者からの返答

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ