重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

先に・・他の質問者様、回答者様の引用です。

【質問】
複数のシートにまたがるリスト形式のデータをひとつのシートにまとめるにはどのようなマクロを組めばよいのでしょうか。
具体的には
(1)Sheet1のリスト形式のデータ全てをコピーする
(2)貼り付け先のシート(統合シート)に貼り付ける
(3)Sheet2のデータ全てをコピーする
(4)統合シートの最終行の次に貼り付ける
(5)残りのシートについても(3)→(4)を繰り返す

【回答】
"統合"という名前のシートに、他のすべてのシートのリストデータを貼り付けます。
各シートのリストはA列から始まっているものとします。(違う場合はコードを修正してください)

Sub test01()
Dim sh As Worksheet
Dim lr As Long, tlr As Long
For Each sh In Worksheets
If sh.Name <> "統合" Then
lr = sh.Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row
sh.Rows("1:" & lr).Copy
tlr = Sheets("統合").Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row
Sheets("統合").Range("A" & tlr + 1).PasteSpecial
Application.CutCopyMode = False
End If
Next
End Sub

ここからの追加質問になります。
このVBAでほぼやりたい事なのですが、
複数にまたがるシートのデータが常に7行目から始まり、8行目9行目が名称など言葉が入っています。
そしてそのデータの最後に総合計という行もあります。
データのみを一緒にしたいので、このいらない行を消すという作業を追加する事はできますか?

よろしくお願いします。

A 回答 (2件)

lr = sh.Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row


sh.Rows("1:" & lr).Copy
の意味は理解できているのでしょうか。
lr = sh.Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row
コピーするシートの最終行の行番号を取得しています。
最終行が総合計で不要なら
lr = sh.Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row-1
で良くないでしょうか。
sh.Rows("1:" & lr).Copy
も1行目から取得した行までと云う事です。
仮に 8行目から良ければ
sh.Rows("8:" & lr).Copy
と云う事ですが。
一度、試してみてください。
    • good
    • 0
この回答へのお礼

正直理解できていません^^;
回答を読みなるほどと思っていました。。。
これで完璧にやりたいことが出来るようになりました!
ありがとうございました。

お礼日時:2016/03/30 11:34

こんにちは



>常に7行目から始まり、8行目9行目が名称など言葉が入っています。
>そしてそのデータの最後に総合計という行もあります。
8、9行目が項目名などということはわかりますが、7行目はコピーの対象なのかそうでないのか・・・
とりあえず、10行目からコピーを初めて、最終行もコピーしないということで良いのだと解釈すると、

ご提示のマクロの中の
 sh.Rows("1:" & lr).Copy
の部分が、『元となるシートの1行目からIr行目(=最終行)をコピーする』という意味になっていますので、その行数指定を修正すればご質問のようになると思われます。
 sh.Rows("10:" & (lr - 1)).Copy
といった感じでしょうか。

※ 上記は元シート上に対象となるデータが無い場合は考慮していません。
※ もし、そのようなケースが存在し得るようなら、(Ir -1 >= 10)となる場合だけコピーを実行するようにすれば宜しいかと。
    • good
    • 0
この回答へのお礼

ありがとうございます。
少し言葉足らずでした。
丁寧なご指示ありがとうございました。

お礼日時:2016/03/30 11:31

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