更新日2016/12/02 この記事は約 3 分で読めます。

いまさら聞けない!10秒で複数のExcel(Book・シート)を結合して1つにまとめる方法

「さて帰るか・・・上司さんお先です!」
「ちょうどいいや、明日までにこのファイル1つにまとめておいてね」

「え?1000ファイルもありますよ!」

「あ、これも。100個エクセルデータ合併しておいてね」

「え?」
こんなことになっても、大丈夫!

今から、まとめのスペシャリストとして、上司に・同僚に頼られること間違いなし!?

いまさら聞けない、ExcelBook・シートをたった数秒でまとめる方法をご紹介。
巻末にExcelダウンロードファイルもあるよ!

※2015年09月18日
Ver1.1 へアップデートしました。結合用のテストファイルを同胞しております。
※2016年04月16日
Excelマクロの結合コードを自分の環境にする を追記しました。

ExcelBook・シート結合の結果

47都道府県のExcelファイルもたった数秒で合体完了。
1つのファイルに合体してまとめる事が出来ました。

100個のExcel結合でも、Excelの1000シートでも簡単に合体・結合出来ます。

ExcelBook・シート結合のコード

コード(Excelマクロ)と言っても簡単です。
3行目のフォルダの場所を変更するだけです。

Sub ExcelbookCombine()
'結合したいファイルがあるフォルダの場所 cドライブなら "C:\test\"
Const Fol As String = "C:\test\"
Dim Fn
Dim NewFile As Workbook
Dim Wb As Workbook
Dim Ws1 As Worksheet
Dim Ws2 As Worksheet

あとはしたのコメント部分にそって自分の環境に修正すればOKです。

'ワークシート1をコピーする場合は Wb.Worksheets(1)
'ワークシート2をコピーする場合は Wb.Worksheets(2)
Set Ws2 = Wb.Worksheets(1)
'Aの1行目からHの8列目までをコピーして結合する
Ws2.Range("A1", Ws2.Cells(Rows.Count, 1).End(xlUp)).Resize(, 8).Copy R
Set R = R.End(xlDown).Offset(1)

ダウンロードファイルを用意しましたので、一々コピペしなくてもすぐ使えます。

Excelマクロの結合コードを自分の環境にする

自分の環境にマクロを修正する方法を記載します。
まずはExcelマクロから以下のコードを探してください。

Ws2.Range("A1", Ws2.Cells(Rows.Count, 1).End(xlUp)).Resize(, 8).Copy R

上記は AからHまでを結合する様になっています。

ExcelマクロをAからZまでを結合する場合

AからHまでの結合をAからZまでに変更します。

Ws2.Range("A1", Ws2.Cells(Rows.Count, 1).End(xlUp)).Resize(, 26).Copy R

「Resize(, 8)」この部分を「Resize(, 26)」この様に変えます。

たったこれだけでAからZまでを結合します。

Aからではなく、DからZまでを結合する場合

Ws2.Range("D1", Ws2.Cells(Rows.Count, 4).End(xlUp)).Resize(, 26).Copy R

「Range(“A1″」この部分を「Range(“D1″」へ変更、
「Ws2.Cells(Rows.Count, 1)」この部分を「Ws2.Cells(Rows.Count, 4)」へ変更して
「Resize(, 8)」この部分を「Resize(, 26)」この様に変えます。
場所さえわかれば簡単ですね。

ExcelBook・シート結合ダウンロード

マクロが苦手なあなたのために、ダウンロードファイルを作りました。
これで今日からあなたもExcelまとめ職人!

ダウンロードする

※2015年09月18日 Ver1.1 へアップデートしました。
※結合用のテストファイルを同胞しております。
※「test」 フォルダを Cドライブ直下へコピー(または移動)して下さい。
同胞のテストファイル3つを1つのシートへ結合します。Aの1行目から8列目までをコピーして結合するようになっておりますのでお試し下さい。

結合するExcelをフォルダにまとめてボタンを押せば完了です。

ExcelBook・シート結合合体まとめ

ダウンロードファイルはCドライブのtestフォルダに中にあるExcelファイルを結合するように設定しております。

ExcelBook・シート結合を参考にしたサイト

参考にさせていただいたサイトをご紹介します。
http://www.moug.net/tech/exvba/0060003.html


「いまさら聞けない!10秒で複数のExcel(Book・シート)を結合して1つにまとめる方法」への50件のコメント

  1. 沖田 より:

    有益なコンテンツ有難うございました。厚かましいのですが、一つだけ質問願います。DドライブとCドライブに分かれていない
    PCだと、どこにtestフォルダを作れば良いでしょうか?

    1. りょう より:

      ご連絡ありがとう御座います。
      マクロ3行目の Const Fol As String = “D:\test\” の部分を
      Const Fol As String = “C:\test\” へ変更していただければ幸いです。
      「D:」を「C:」へ変更する形です。

      上手く動作しないようでしたら、ご連絡いただければ、作成し直してみます。
      その際に、OSのバージョン(例:Windows7)とExcelのバージョン(例:Excel2013)を
      一緒にお伝え頂ければよりスムーズです。

      1. 沖田 より:

        C:\test\Cにフォルダ名を変更してフィルダをCドライブにtestという名でつくりました。そしてそのフォルダに100個のエクセルファイルをいれて、マクロ実行ボタンを押したところ、1個のエクセルファイルしか結合されませんでした。その際実行時エラー”9”と出て、インデックスが有効範囲にありませんというvisual basicの表記がでてきます。OSのバージョンWindows7とExcelのバージョンExcel2010です。よろしくお願い致します。

        1. りょう より:

          お試し頂きありがとう御座います。
          早速確認しまして作り直しますので、4営業日ほどお待ちいただけると幸いです。

          1. 沖田 より:

            お手数をおかけしますが、よろしくお願いいたします。

          2. りょう より:

            アップデート完了しておりますので下記URLよりお試し下さい。
            無料ダウンロード ⇒ https://rakuzanet.jp/excel-book-sheet-combine.html#dl

  2. りょう より:

    2015年09月18日 Ver1.1 へアップデートしました。
    結合用のテストファイルを同胞しております。
    Cドライブへテストファイルを移動したあとマクロの実行ボタンを押して下さい。
    そうしますと、1つのファイルにシートが保存されますのでお試し下さい。

    無料ダウンロード ⇒ https://rakuzanet.jp/excel-book-sheet-combine.html#dl

    1. 沖田 より:

      迅速なご対応に感謝いたします。試させて頂いて、ご報告させて頂きます。取り急ぎのご挨拶にて恐縮です。

      1. 沖田 より:

        100個のエクセルファイルが、完璧に1個のエクセルのシートに、統合できました。助かりました。有難うございました。

  3. 佐藤 より:

    お世話になります。まさに同じ状況に陥っていて、こちらのコンテンツを発見しとてもありがたく感じています。
    お忙しいところ恐れ入りますが、1つお伺いさせていただきたいのですが…。

    結合するファイルで、1行目が項目名で、2行目以降が結合したいデータです。
    2行目、3行目とデータが入っていれば問題なく作動するのですが、2行目しかデータがない場合は、「Set R = R.End(xlDown).Offset(1)」の部分で止まってしまいます。
    つまり、結合したいデータが1ファイルあたり2行以上あれば問題ないのですが、1ファイルに1行しかないものが結合できないのです…。
    1行のものだけ手作業でやろうかと思ったのですが、そもそもファイル数が100以上あるので、一つ一つ確認するのも大変で、何とか一発で処理できたら、とても助かります。
    どのように修正すればよいでしょうか。
    説明がわかりづらかったら申し訳ございません。
    お返事お待ちしております。
    宜しくお願い致します。

    1. りょう より:

      ご連絡ありがとう御座います。
      >結合したいデータが1ファイルあたり2行以上あれば問題ないのですが、
      >1ファイルに1行しかないものが結合できないのです…。
      >そもそもファイル数が100以上あるので、一つ一つ確認するのも大変で、
      >何とか一発で処理できたら、とても助かります。

      なるほど。それは大変ですね。
      それならまず

      ・1:1行だけのファイルを結合する
      https://rakuzanet.jp/txt-csv-combine-zukai.html
      コマンド使って一括で一発結合します。
      Excelで1行しか記述が無いのなら、txtやCSVに簡単に変換出来たような。
      ・2:その後、CSVをExcelで開いて.xlsxで保存し直します。
      ・3:ここに記載している方法でExcelを結合で完了
      https://rakuzanet.jp/excel-book-sheet-combine.html

      これでいけると思いますがどうでしょうか?

      1. 佐藤 より:

        早速のご返信ありがとうございます!
        試してみます。
        また何かありましたらご質問してしまうかもしれませんが、どうぞよろしくお願い致します。

  4. 日高 より:

    無知な質問で申し訳ないのですが、ファイルの結合される順番はtestファイルの上からの順番と同じでしょうか。たとえばtestファイルの順番を変えてファイルを結合すると、その順番に結合されるのでしょうか。宜しくお願い致します。

    1. りょう より:

      ご連絡ありがとう御座います。

      >ファイルの結合される順番はtestファイルの上からの順番と同じでしょうか。
      >たとえばtestファイルの順番を変えてファイルを結合すると、その順番に結合されるのでしょうか。
      その通りです。
      百聞は一見にと言いまして、実際見た方が理解しやすいですのでテストファイルをお試し下さい。

      サンプル通りのコマンドであれば他への影響は御座いませんので
      チャレンジ頂くとスキルが一段アップします。

      補足説明ですが結合する順番と言いますか、
      セルの順番でしたら結合後にExcelでソートした方が好きな項目順に並べることも出来ますよ。

  5. TAKE2 より:

    便利ツールありがとうございます。
    ダウンロードファイルまで用意していただき、初心者ゆえとても助かっています。

    質問ですが、コピーの形式を「値貼付け」は対応できないものでしょうか…?
    元ファイルに計算式がけっこう多く、困り果てています。
    調べてみると、valueとするにはコピー元・コピー先で同じ範囲を指定してやる必要があると…。
    どう反映させたら良いものやら。

    よろしくお願いします。

    1. りょう より:

      >質問ですが、コピーの形式を「値貼付け」は対応できないものでしょうか…?
      >元ファイルに計算式がけっこう多く、困り果てています。
      関数の計算結果のみを貼り付けたいと?
      1:ExcelをCSVで保存しますと、値のみになります。
      2-1:CSVにしたExcelを再度Excelで保存して結合する
      2-2:またはCSVのまま一括結合するかが楽かと思います。
      CSVを一括結合する方法 ⇒ https://rakuzanet.jp/txt-csv-combine-zukai.html

      あとは関数の値をどこのファイルから呼び出しているかにもよりますが
      Ctrl+Fで置き換える方法もありますが、手間がかかるのでCSVにして一括結合かなと。

      1. TAKE2 より:

        早速返信ありがとうございます。
        その通りです。>関数の計算結果のみを貼り付けたい

        2-2:CSVのまま一括結合が良さそうですね。
        -1.既にあるExcelファイルを一括でCSVに書き出し
        -2.複数CSVファイルをExcelの1シートにインポート
        の感じで進めたいと思います。

        がんばってきます。 ありがとうございました。

  6. まさこ より:

    実行時エラー’1004′:
    となって、実行できません。

    デバッグを見ると、
    Set R = R.End(xlDown).Offset(1)
    が黄色く指定されています。

    何がいけないのでしょうか

    1. りょう より:

      >実行時エラー’1004′:
      >Set R = R.End(xlDown).Offset(1)
      上記だけでは解決出来ないのですが
      このエラーはダウンロードしたファイルを修正無しで起こるエラーでしょうか?
      またはダウンロードしたファイルを修正した際に起こるエラーでしょうか?

  7. まさ より:

    複数のファイルから、シート2のDの列だけを統合したいのですが、どうしたらよいのでしょうか?

    1. りょう より:

      結合した後、シート2のD列だけ残して削除すれば良さそうですが、いかがでしょうか?
      50万行程度ならExcelやテキストviewerからでも容易に削除出来るかと思います。
      それとも列にものすごい数がありますか?

      1. まさ より:

        返信ありがとうございます。

        誤解を招いてしまい申し訳ないです。
        ご回答の内容から推察するに、Dの列をすべて同列に並べる結果になるということでしょうか?

        そうではなく、複数のファイルからDの列だけをコピーして、それを出力する際には(Aの列:Bの列:Cの列:…)という様に横に並べていきたいのですが、できますでしょうか?

        1. りょう より:

          >複数のファイルからDの列だけをコピーして、それを出力する際には(Aの列:Bの列:Cの列:…)
          なるほど。どっかで見たマクロですね。

          たしか株式系などに前回の値をずらしてコピーするなどがありましたのでその辺の応用か
          業務系なら月ごと分かれたExcelの該当部分(例えば売上だけ)をコピーしていくなども、あった様な。

          ただこのマクロだと出来ません。
          このマクロは複数の同一ファイルを単純に結合するマクロになります。

  8. KAN より:

    すいません。お尋ねします。動作的にはOKなのですが、シートの内容が全部コピーされないで結合されてしまいます。
    A,B,C,~の方向は全部入っているのですが、1,2,3,~の方向については、結合したいそれぞれのデータの1行目から5行目ぐらいまでしか入っていません。コピーする範囲を指定していると思われる部分の数字を増やしてみたりしましたが、結果は同じでした。ご教授お願いします。

    1. りょう より:

      まず掲載しておりますサンプルファイルは正常に動作するのでしょうか?
      正常に動作しているなら、列が多いのだと思います。
      初期設定では8列目(A~H)までを結合しますので下記を
      Ws2.Range(“A1”, Ws2.Cells(Rows.Count, 1).End(xlUp)).Resize(, 8).Copy RSet R = R.End(xlDown).Offset(1)
      例:この部分を Resize(, 50)とかにするとご要望の結果になるかと思いますのでお試しください。

  9. POT より:

    大変厚かましいのですが、コメントに記載されているCSVファイルにしてから統合する方法を拝見させていただいた上で、ご質問があります。私も関数の計算結果のみを張り付けて結合したいのですが、ファイル数が100を超えていて、ファイルをCSVに形式に変更するにも時間がかかってしまう状況です。コードを修正することで値のみ張り付けることはできないでしょうか。
    よろしくお願いいたします。

    1. りょう より:

      このマクロは複数ファイルを同じ状態で結合する方法です。
      元のExcelファイルに手を加えて結合となると形状に応じた別のマクロを作成する必要が御座います。

      ですので
      >コードを修正することで値のみ張り付けることはできないでしょうか。
      コードを修正出来るならトライル&エラーの精神でレッツチャレンジ!

      テキストやCSVファイルなら https://rakuzanet.jp/txt-csv-combine-zukai.html
      この方法で数GBでも結合出来ます。

      数百ファイルを扱うなら、PHPとかMySQLに任せてしまうのも手です。

  10. harukaze より:

    初めまして、こちらのソフトをいつも使用させていただいています。
    使用にあたってのいくつか分からないことがあります。

    1、結合エクセルのファイル先ですが、初期設定ですと“C:¥test¥” ですが、
    こちらを“C:¥test¥田中たろう¥” に変更した場合、エクセルが結合されず困っています。
    何かおかしな点がありますでしょうか?

    2、1つのフォルダに以下のファイルがあります。
    16.03.01-01.xlsx
    16.03.01-01.mdb



    16.03.01-50.xlsx
    16.03.01-50.mdb
    現在手動にてエクセルファイルのみを“C:¥test¥” に移動させて結合しています。
    .mdbファイルが同じファイルに存在していてもエクセルファイルのみを結合することは可能でしょうか?

    よろしくお願いいたします。

    1. りょう より:

      >こちらを“C:¥test¥田中たろう¥” に変更した場合、エクセルが結合されず困っています。
      おかしな点は御座いませんが、マクロを変更するなら日本語ファイル名やフォルダ名は避けたほうが良いと思います。
      testファイル以下に tanakataro でフォルダを作成して C:\test\tanakataro\ と指定してみてください。

      >.mdbファイルが同じファイルに存在していてもエクセルファイルのみを結合することは可能でしょうか?
      結合はしませんが、コマンドと違って結合すると言いますか、変換しようとします。
      試しにテキストファイルなど入れてテストしてみてください。

      本番で失敗しても良いように困ったらまずテストすると良いでしょう。
      私も相当失敗します。

      1. harukaze より:

        返信ありがとうございます。
        もう1つ質問ですが、現在のマクロがA1からA8までを結合するようになっていますが、
        こちらをA2からA8の結合にすることは可能でしょうか?
        A1は題目(日付や担当者など)が記載されているので、50個程度の題目があり、結合後にすべて削除を行っています。

        よろしくお願いします。

        1. りょう より:

          >現在のマクロがA1からA8までを結合するようになっていますが、
          >こちらをA2からA8の結合にすることは可能でしょうか?
          A1をA2へ変更したら出来るかと。
          2ヶ所あるので探してみましょう。

  11. ns より:

    はじめまして。結合したいデータがA列~M列まであります。
    ダウンロードさせて頂いたマクロを実行するとH列までしか結合しませんでした。
    変更することは可能でしょうか?

    1. りょう より:

      ご連絡ありがとうございます。
      修正する方法を新たに作成して追記しましたのでご確認下さい。
      Excelマクロの結合コードを自分の環境にする
      これで簡単にAからZまでやDからZまでなど好きなように変更出来るかと思います。
      お試しください。

      1. ns より:

        早速のご回答ありがとうございました。大変助かりました!!
        (シートを1枚ずつコピペするところでした。。)ありがとうございます!

  12. ゆう より:

    はじめまして。こちらの結合コードを利用させて頂いております。
    A列に1行しかデータが入っていないと2行目以降が結合されません。ちなみにA5から100列まで結合にする指定をしております。
    また、B列からは複数行のデータが入っています。
    宜しくお願いします。

    1. りょう より:

      確認ですがダウンロード頂いたExcelは動作致しますか?
      1:動作する場合は、ご自身で変更されたコードが間違っておりますので再度修正してください。
      まずは、ダウンロードされたExcelファイルと同じ仕様にして結合をお試しください。
      2:修正されたマクロが合っているならば、A列にダミーデータを入れて結合を試みて下さい。
      3:動作しない場合は、Excelのマクロが間違っておりますので修正致します。

      少々どのようなデータ配列なのか想像出来ませんのでまずは
      上記ご確認とお試し頂けると幸いです。

      1. ゆう より:

        ご連絡ありがとうございます。
        ダウンロードしたマクロは正常に動作しております。
        また、A列にダミーデータを入れると結合は出来ます。やはりA列にはデータを入れておく必要はありますか?

        1. りょう より:

          A列が重要で無いデータであればB列から結合したらダメですかね?
          >ちなみにA5から100列まで
          それともA5から100列までが重要なデータであればA4まで削除してから結合されたらどうでしょうか?

      2. ゆう より:

        A列には重要なデータが入っていますので範囲に入れる必要があります。また、4行目までは項目行で5行目からデータが入っています。
        A列に連番の列を挿入して結合を考えていますが結合するファイル数が多いので方法があればアドバイスをお願いします。

  13. まつ より:

    お世話になります。

    実行時エラー’1004′:
    となって、最後まで実行できない状況です。

    デバッグを見ると、
    Set R = R.End(xlDown).Offset(1)
    が黄色く指定されています。

    ダウンロードしたテストファイルを使用しても同様のことが起こります。
    実行するドライブはEドライブです。

    よろしくお願い致します。

    1. りょう より:

      先ほど上記よりダウンロードしたファイルを実行したところ正常に動作致しました。
      まずはCドライブでお試し下さい。
      修正する方法を下記部分に記載しておりますので合わせてご確認下さい。
      Excelマクロの結合コードを自分の環境にする

  14. まりもん より:

    はじめまして
    困っていたところをすごい便利なものを見つけた!と喜んでいたのですが
    うまくいきませんでした
    配布していただいているtestはうまくいったのですが…

    具体的には5個のcsvファイルを結合させると

    1ファイル1の1行目
    2ファイル1の2行目
    3ファイル2の1行目
    4ファイル2の2行目
    5ファイル3の1行目
    6ファイル3の2行目
    7ファイル4の1行目
    8ファイル4の2行目
    9ファイル5の1行目
    10ファイル5の2行目
    ~~~~~~~~
    31ファイル5の23行目

    (~~~~~~~~は省略を意味します)
    という風にファイル1~4のデータが重なって出てきてしまいました
    列はきっちり出ています
    何か原因は考えられるでしょうか

    よろしければ回答をお願いします

    1. りょう より:

      テストファイルがうまく動作していると言うことはファイルに問題無いようです。
      次に
      >ファイル1~4のデータが重なって出てきてしまいました
      とありますが、結合するファイルは全く同一の並びでしょうか?
      行列ともに違いが無いのであれば、変更されたマクロが間違っております。

      まずは、
      1:結合するファイルを1行目2行目などを見直す
      2:修正されたマクロをもう一度見直す

      それでも解決しない場合は
      重複データならExcelで重複削除が簡単に行なえますので
      結合後にExcelで重複削除をすれば簡単に解決出来るかと思います。
      お試しください。

      1. まりもん より:

        返信ありがとうございます
        何度か試しているうちに原因がわかりました
        全てのデータのA1セルが空白であることが問題でした

        データの性質上、必ずA1が空白になって出てきてしまうのですが
        何か良い解決法はあるでしょうか

        A1セルは今からやりたいことに関係しないので
        適当な文字を入れることは可能です
        ですがファイル数がとても多いのでファイルを開かずにすべてのファイルの
        A1セルに文字を入れる方法などがあれば教えていただきたいです

        1行目の他のセル(B1とかC1とか)は必要なので2行目からをうつすというのはできません

        すみませんがよろしくお願いします

        1. りょう より:

          >A1セルは今からやりたいことに関係しないので適当な文字を入れることは可能です
          単純にB1から結合すれば良いのでは?
          マクロの修正部分は上記に記載してある通りですので
          簡単に修正が可能です。お試し下さい。

  15. nana より:

    ツール、とても助かりました。ありがとうございます!
    恐縮ながら2点ほどお伺いできればと思うのですが、

    複数あるファイルのうちの最初のファイルはA1から(まるごと)コピーで、
    2つ目のファイル以降はA5から結合させる方法はありますでしょうか。

    もう一点、
    ドライブを指定せず、同じディレクトリ内にあるフォルダを指定する方法はありますでしょうか。

    今後も色々と参考にさせていただきます!

    1. りょう より:

      ご連絡ありがとう御座います。
      >複数あるファイルのうちの最初のファイルはA1から(まるごと)コピーで、
      >2つ目のファイル以降はA5から結合させる方法はありますでしょうか。

      複数回マクロを修正しなくても良い簡単な方法は
      2つ目のファイル以降を結合して最初のファイルはそのあと手動でコピーペースされれば
      5分かからないで終わるかと思いますのでお試し下さい。

      >ドライブを指定せず、同じディレクトリ内にあるフォルダを指定する方法はありますでしょうか。

      「マクロ 同一ディレクトリ フォルダ指定」で検索されるとコード修正のヒントになると思いますので
      スキルアップのためにLet’s try

  16. たく より:

    はじめまして。
    「Range(“A1″」のA1をB1やC1と変更してもA1からになってしまいます。
    原因が分からなくて困っています。
    よろしくお願いします。

    1. りょう より:

      >「Range(“A1″」のA1をB1やC1と変更してもA1からになってしまいます。
      >原因が分からなくて困っています。

      「Ws2.Cells(Rows.Count, 1)」この部分を「Ws2.Cells(Rows.Count, 4)」へ変更して
      Ws2.Range(“D1”, Ws2.Cells(Rows.Count, 4).End(xlUp)).Resize(, 26).Copy R
      この様にしていただけるとどうでしょうか。DからZまでコピーされるかご確認いただけると幸いです。

      1. たく より:

        できました
        ありがとうございます

いまさら聞けない!10秒で複数のExcel(Book・シート)を結合して1つにまとめる方法へコメントをする

※メールアドレスは公開されません。