「教えて!ピックアップ」リリース!

エクセルの複数ブックのシートを1つまとめたい

都道府県ごとに47ブックがあり、そのシートのデータを1つのブックの1シートにまとめたいのですが、どのようにすればよいかご教示いただけますでしょうか。

各ブック内には1シートのみ同じフォーマットで名簿があります。

またシート名とブック名はそれぞれ同じになります。


ブック名:埼玉県.xlsx
シート名:埼玉県

ブック名:神奈川県.xlsx
シート名:神奈川県

シートの内容は
1列目に見出しがあり、2列目から実際の情報になります。

A列からH列で行数は各ブックごとに異なります。

またシート情報を統合する際に1行目の見出しも統合されると47都道府県ごとに見出しが含まれてしまうので、最初のブックのみ1行目からで以降は2行目から統合させることは可能でしょうか。

質問者からの補足コメント

  • 皆さん、ご回答ありがとうございます。
    いただいた各回答に補足です。

    各都道府県のブックは1つのフォルダに格納されてます。

    また、ブック以外のファイルはなにもございません。

    また、47対象なので、今回は手動で完了させましたが、以後も同様の処理をしなくて済むようにという背景がございます。

    batファイル作成してcsvを統合させると文字化けしてしまい望んだ結果になりませんでした。

    試したコマンドは下記です。
    copy *.csv _result.csv

      補足日時:2022/11/16 16:05

A 回答 (5件)

以下のマクロを標準モジュールに登録してください。


Const folder As String = "D:\goo\data8\点検"
は、都道府県のブックが格納してあるフォルダ名です。
あなたの環境にあわせて適切に設定してください。
まとめるシート名は「都道府県まとめ」にしてあります。
もし、シート名を変える場合は、
Set ms = Worksheets("都道府県まとめ")
を変えてください。
各都道府県のブックには1シートのみ存在する前提です。
-------------------------------------------------------------
Option Explicit
Public Sub 都道府県まとめ()
Const folder As String = "D:\goo\data8\点検"
Dim ms As Worksheet
Dim ws As Worksheet
Dim fname As String
Dim wb As Workbook
Dim msRow As Long: msRow = 1
Dim maxrow As Long
Set ms = Worksheets("都道府県まとめ")
ms.Cells.ClearContents
fname = Dir(folder & "\*.xlsx")
Do While fname <> ""
Set wb = Workbooks.Open(folder & "\" & fname)
Set ws = wb.Worksheets(1)
maxrow = ws.Cells(Rows.Count, 1).End(xlUp).Row
If maxrow > 1 Then
If msRow = 1 Then
ms.Range("A1:H1").Value = ws.Range("A1:H1").Value
msRow = 2
End If
ms.Cells(msRow, 1).Resize(maxrow - 1, 8).Value = ws.Cells(2, 1).Resize(maxrow - 1, 8).Value
msRow = msRow + maxrow - 1
End If
wb.Close
fname = Dir()
Loop
End Sub
    • good
    • 0
この回答へのお礼

ご連絡遅くなりました。
ご連携いただきました内容で
希望していたこと再現できました。

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

お礼日時:2022/11/18 18:58

補足要求です。


1.都道府県のブックは、同じフォルダ内にありますか。
2.上記のフォルダ内には、都道府県のブック以外のファイルはないですか。
    • good
    • 0

パワークエリを使えばいいでしょう。

    • good
    • 0

こんにちは



各項目のデータが埋まっていると考えてよいのなら・・

1)対象ブックを開く
2)A2セルを選択し、Shift End → End ↓ キーを押し下げ
 (2行目から最終行までの範囲が選択できるはず)
3)Ctrl + C でコピー
4)統合ブックで、Ctrl + V でペースト

要領よくやれば、以上で30秒くらいでしょうか。
のんびりやっても、1分でおつりがくると思います。

あれこれ考えている間に、これを47ブック分繰り返すのが速いと思います。
    • good
    • 0

1ブック1シートであれば、


コマンドで、*.xlsを*.csvに一括で変換し、
同じくコマンドで、一つの*.csvに結合し、
それをEXCELで読み込めばよいです。

見出しも47行含まれてしまいますが、
並べ替えでまとめて、或いはフイルターで選択表示させて、
不要分を一括削除すればよいです。
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング