電子書籍の厳選無料作品が豊富!

ブック内にある複数のシートのデータを1つのシートに集約する方法を教えて下さい。
ヘッダーがA1からF1に下の項目が一行のみ並んでいます。
 作業日
 作業内容・部品名
 数量
 単価
 部品・作業金額

1つのシートに、ヘッダーが付いて集約出来るようにしたいのですが、
以前、別の方が同様の質問しており、回答があった方法を参考にしたいのですが、どのように変更すれば良いのかわかりません。

下記回答を
1行目のヘッダーを残しつつ、2行目以降A~E列まで84行データがあり、シートは1枚から7枚までです。

急ぎを要しています。よろしくお願いします。
'--------------------------------------------------------
Option Explicit

Sub DATA_MATOME()
Dim k As Integer, LstRow As Long, TgtRow As Long
Dim WsM As Worksheet, Rng As Range

Application.ScreenUpdating = False

'まとめシートを作成し、ヘッダーを作成
Set WsM = Worksheets.Add(before:=Worksheets(1))
ActiveSheet.Name = "まとめ"
With Worksheets(2)
 Set Rng = .Range(.Cells(1, 1), .Cells(7, 8))
End With
Rng.Copy WsM.Cells(1, 1)

'1~27枚目をループ
For k = 2 To 28
 Worksheets(k).Select
 LstRow = Cells(Rows.Count, 1).End(xlUp).Row

 If LstRow > 7 Then 'データがあるならそのデータをコピーしてまとめシートへ
  Set Rng = Range(Cells(8, 1), Cells(LstRow, 8))
  TgtRow = WsM.Cells(Rows.Count, 1).End(xlUp).Row + 1 'まとめシートの貼付行
  Rng.Copy WsM.Cells(TgtRow, 1)
 Else
 End If
Next k

WsM.Select

Set Rng = Nothing
Set WsM = Nothing
Application.ScreenUpdating = True

MsgBox "End."

End Sub
'--------------------------------------------------------

A 回答 (2件)

ヘッダーというのはExcelのヘッダーではなく項目行のことですよね?


ご呈示のマクロできちんとできましたよ。
変えたのは
>'1~27枚目をループ
の部分。
>シートは1枚から7枚までです。
ということなので、
For k = 2 To Sheets.Count
に書き換えました。
    • good
    • 0
この回答へのお礼

言われた通りに変更すると、うまく出来ました。
本当にありがとうございました。

お礼日時:2016/07/10 13:03

そのコード、


http://oshiete.goo.ne.jp/qa/9124524.html
ですね。
項目行部分が7行もあるので、本質問(項目行は1行だけ)に合致するように
>If LstRow > 7 Then 'データがあるならそのデータをコピーしてまとめシートへ
>  Set Rng = Range(Cells(8, 1), Cells(LstRow, 8))
も変える必要がありますね。
    • good
    • 0
この回答へのお礼

急ぎ回答頂きありがとうございました。
勉強になりました。

お礼日時:2016/07/10 13:02

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