Excelでの作業効率を上げるため、今回は複数のブックを1つにまとめる方法をご紹介します。マクロを使わずに簡単に実現できる手法です。特に大量のデータを扱う場合に重宝する方法となっています。
この記事のポイント
- 作業時間:約5分
- 難易度:初級
- 対象バージョン:Excel 2019以降
- マクロ知識:不要
前提条件
結合するブックには以下の条件が必要です:
- 各ブックの構造(列の配置など)が同一であること
- 突然異なるデータ(住所録の中に売上データなど)が含まれていないこと
今回は具体例として、株価データの結合を例に解説します。1日あたり4000銘柄以上のデータを1か月分まとめる作業を想定しています。この方法を使えば、大量のデータでも簡単に結合することができます。
必要な環境
- Windows 10以降
- Excel 2019、Microsoft 365、もしくはExcel 2021
- 十分なメモリ容量(大量データを扱う場合)
ここからは具体的な手順を説明していきます。画像を交えながら、誰でも実践できるように丁寧に解説していきますので、ぜひ最後までお付き合いください。
サンプルファイルのご案内
サンプルデータの構造
各ファイルは以下の15項目(A列~O列)で構成されています:
- コード(A列):証券コード
- 現在日付(B列):取引日
- 現在値時刻(C列):データ取得時刻
- 銘柄名称(D列):会社名
- 現在値(E列):株価
- 出来高(F列):取引量
- 売買代金(G列):取引金額
- 時価総額(H列):企業価値
- 逆日歩(I列):信用取引指標
- 信用倍率(J列):信用取引指標
- 貸借倍率(K列):信用取引指標
- 権利落日(L列):権利確定日
- 決算発表日(M列):業績発表日
- PER(N列):株価収益率
- PBR(O列):株価純資産倍率
サンプルファイルについて
- ファイル名:sample_stock_data_01.xlsx ~ sample_stock_data_10.xlsx
- 各ファイル約4000行のデータ
- 期間:2024年6月1日~6月10日(各ファイルで異なる日付)
- ファイルサイズ:各約0.5MB
【ダウンロードリンク】
※サンプルファイルをダウンロードして、実際に手順を試していただけます
複数ブックを1つにまとめる手順
1. 新規ブックの作成
まずは白紙のExcelブックを用意します。この新規ブックが、複数のデータを統合する場所となります。
2. データの取得
- メニューバーの「データ」タブをクリック
- 「データの取得」をクリック
- 「ファイルから」にマウスを合わせる
- 「フォルダーから」を選択
サンプルファイルの配置
ファイル構成
今回は以下のような環境で作業を進めます:
- 保存場所:C:\test
- ファイル形式:.xlsx(Excel 2007以降)
- ファイル数:10個
- 期間:2024年4月8日~4月19日(土日祝日を除く)
- 各ファイル約4000行のデータ
ファイル一覧
C:\test\20240408.xlsx (4月8日:月曜日)
C:\test\20240409.xlsx (4月9日:火曜日)
C:\test\20240410.xlsx (4月10日:水曜日)
C:\test\20240411.xlsx (4月11日:木曜日)
C:\test\20240412.xlsx (4月12日:金曜日)
C:\test\20240415.xlsx (4月15日:月曜日)
C:\test\20240416.xlsx (4月16日:火曜日)
C:\test\20240417.xlsx (4月17日:水曜日)
C:\test\20240418.xlsx (4月18日:木曜日)
C:\test\20240419.xlsx (4月19日:金曜日)
注意点
- ファイル名は日付形式(YYYYMMDD)で統一
- 土日祝日のデータは含まれていません
- すべてのファイルが同じ列構造(A列~O列)を持つ
フォルダー選択後の操作
フォルダーを選択して「開く」をクリックすると、「フォルダーの内容」ウィンドウが表示されます。ここで以下の操作を行います:
1. ファイル一覧の確認
表示されたウィンドウには、選択したフォルダー(C:\test)内のExcelファイルが一覧表示されています。
- 10個のファイルが表示されていることを確認
- すべてのファイルが.xlsx形式であることを確認
2. 結合操作
- 画面下部にある「結合」ボタンをクリック
- 表示されたメニューから「データの変換と結合」を選択
3. パラメーターの設定
「Fileの結合」ダイアログが表示されます。ここでは:
- 「サンプルファイルパラメーター」で最初のファイルのシートが表示されます
- 右側のプレビュー画面でデータの内容を確認できます
この状態で、データの内容が正しく表示されていることを確認します。特に:
- すべての列(A列~O列)が正しく認識されているか
- データ型が適切か(数値、日付など)
を確認しましょう。
フォルダー内のファイル結合
データプレビューの確認
表示されているウィンドウで確認すべきポイント:
- 左側:ファイル一覧(10ファイルすべてが表示されている)
- 中央:データのプレビュー表示
- 下部:「結合」ボタンの位置
結合の実行手順
- 画面下部の「結合」ボタンをクリック
- 「データの変換と結合」を選択
- 表示された「Fileの結合」ダイアログで以下を確認:
- シート名が正しく選択されているか
- プレビューにデータが正しく表示されているか
- 列名(コード~PBR)が正しく認識されているか
Power Query エディタでのデータ確認
Power Query エディタの画面説明
Power Query エディタが開くと、以下の要素が表示されます:
- 左側:クエリの一覧
- 「結合されたファイル」という名前で新しいクエリが作成されています
- データの変換履歴も確認できます
- 中央:データのプレビュー
- すべてのファイルのデータが結合された状態
- A列~O列まですべての項目が表示されています
- サンプルとなる数行分のデータが表示されます
- 右側:クエリの設定
- 適用された手順の一覧
- データ型などの情報
データの読み込み
この段階では特に加工の必要がないため:
- 左上の「閉じて読み込む」をクリック
- データの読み込みが開始されます
- 約4万行(4000行×10ファイル)のデータが結合されます
- 読み込み中はプログレスバーが表示されます
データ結合の完了確認
結合されたデータの確認
新しいシートに約43,000行のデータが読み込まれました:
- 行数:約43,000行(4,300行×10営業日分)
- 列数:15列(A列~O列)
- データ期間:2024年4月8日~4月19日(土日を除く10営業日)
結合データの確認ポイント
- すべての日付のデータが正しく結合されているか
- 「現在日付」列で4月8日から4月19日までのデータを確認
- 土日を除く10営業日分のデータが存在
- データの整合性チェック
- 重複データがないか
- 欠損値(空白セル)がないか
- 数値や日付のフォーマットが統一されているか
データの活用方法
このように結合されたデータは以下のような分析に活用できます:
- 10日間の株価推移の分析
- 銘柄ごとの取引量の推移
- PERやPBRの期間変化の確認
- 時価総額の変動分析
データ活用のヒント
結合したデータは以下のような分析に活用できます:
- ピボットテーブルでの期間分析
- Power BIとの連携
- 条件付き書式による重要データの可視化
その他の結合方法
では、別の方法もご紹介していきましょう。以下の手法を実践的に試してみましょうか:
- Power BIを使用した方法
- より高度な分析が可能
- データの自動更新にも対応
- VBAを使用する方法
- マクロを使用しても比較的シンプルに実装可能
- 定期的な更新作業の自動化に便利
1. Power BIを使用した方法
Power BIでのデータ取得手順
- Power BIデスクトップを起動します
- ホーム画面で「データを取得」をクリック
- 「エクセルブック」を選択
- ファイル選択ダイアログで
C:\test
フォルダーに移動
フォルダー内のファイル確認
表示されたダイアログでは:
- 10個のExcelファイル(20240408.xlsx ~ 20240419.xlsx)が表示されています
- 各ファイルのサイズと更新日時も確認できます
Power BIでのデータ結合手順(続き)
データソースの選択
- 最初のファイル(20240408.xlsx)を選択
- 左側のプレビューペインで「Sheet1」にチェックを入れる
- これにより「読み込み」と「データの変換」ボタンが有効になります
- データのプレビューが右側に表示されます
Power Query エディターの起動
- 「データの変換」をクリック
- チェックを入れないとボタンが無効のままなので注意
- Power Query エディターが起動します
Power Query エディターでのデータ結合
追加のファイル取得
- 「ホーム」タブの「新しいソース」をクリック
- 「Excel」を選択
- 次のファイル(20240409.xlsx)を選択
- 同様に「Sheet1」にチェックを入れて「OK」をクリック
データの結合
- 左側の「クエリ」ペインに2つのクエリが表示されます
- 1つ目のクエリを選択した状態で:
- 「ホーム」タブの「結合」をクリック
- 「クエリの追加」を選択
Power Query エディターでのデータ結合(続き)
クエリの追加設定
表示された「追加」ダイアログで:
- 「テーブルの追加」から2つ目のクエリ(20240409のデータ)を選択
- 「OK」をクリック
- 2つのテーブルが自動的に結合されます
- 列構造が同じため、自動的に整列されます
結合結果の確認
結合後のプレビュー画面で:
- データが約8,600行(4,300行×2日分)になっていることを確認
- すべての列(A列~O列)が正しく結合されているか確認
残りのファイルの追加
同じ手順を繰り返し、残りのファイルも追加します:
- 「新しいソース」→「Excel」で順次ファイルを追加
- 各ファイルの「Sheet1」を選択
- 「追加」機能で既存のデータに結合
最終確認
すべてのファイルを結合後:
- 約43,000行のデータ(4,300行×10営業日分)
- 15列すべてが正しく結合されているか確認
- 日付順(4月8日~19日)に正しく並んでいるか確認
データの読み込み
- 「閉じて適用」をクリック
- Power BIのメイン画面に戻ります
- 結合されたデータがテーブルとして読み込まれます
2. VBAを使用した結合方法
VBAのメリット
- 処理が高速
- 一度作成すれば繰り返し利用可能
- Excelから直接実行できる
- メモリ効率が良い
準備作業
- 新規ブックを作成
- Alt + F11 でVBエディタを起動
- 「挿入」→「標準モジュール」を選択
VBAコード
Sub CombineExcelFiles()
' 変数の宣言
Dim FolderPath As String
Dim Filename As String
Dim Sheet As Worksheet
Dim TargetRow As Long
Dim LastRow As Long
' 初期設定
Application.ScreenUpdating = False
FolderPath = "C:\test\"
TargetRow = 2 ' 1行目はヘッダー用
' 最初のファイルからヘッダーをコピー
Workbooks.Open FolderPath & "20240408.xlsx"
Rows(1).Copy ThisWorkbook.Sheets(1).Rows(1)
ActiveWorkbook.Close
' フォルダ内のファイルを順次処理
Filename = Dir(FolderPath & "*.xlsx")
Do While Filename <> ""
' ファイルを開く
Workbooks.Open FolderPath & Filename
' データ行数を取得
LastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
' データをコピー(ヘッダーを除く)
Range("A2:O" & LastRow).Copy ThisWorkbook.Sheets(1).Cells(TargetRow, 1)
' 次の開始行を設定
TargetRow = TargetRow + LastRow - 1
' ファイルを閉じる
ActiveWorkbook.Close False
' 次のファイル名を取得
Filename = Dir()
Loop
Application.ScreenUpdating = True
MsgBox "完了しました。", vbInformation
End Sub
使用方法
- 上記のコードをVBエディタに貼り付け
FolderPath
の値を必要に応じて変更- F5キーまたは実行ボタンでマクロを実行
注意点
- マクロを有効にする必要があります
- ファイルパスは必ず最後に「\」をつけてください
- すべてのファイルが同じ構造である必要があります
実行結果の確認
- マクロ実行後:
- 自動的に約43,000行のデータが結合されます
- 処理速度は数秒~十数秒程度
- 「完了しました。」というメッセージが表示
- データの確認ポイント:
- ヘッダー行(1行目)が正しくコピーされているか
- すべてのデータが連続して結合されているか
- A列~O列まですべての列が正しく結合されているか
VBA方式のメリット
- Power Queryと比べて処理が高速
- メモリ使用量が少ない
- エラー発生時にメッセージで通知
- コードの修正で柔軟な対応が可能
補足:Pythonを使用した結合方法
Pythonを使用する利点
- 大容量データの高速処理
- 柔軟なデータ加工が可能
- 自動化が容易
- 無料で利用可能
必要な環境
- Python 3.x
- pandas ライブラリ
- openpyxl ライブラリ
準備作業(初心者向け詳細手順)
- Pythonのインストール
- Python公式サイト(python.org)からダウンロード
- インストール時に「Add Python to PATH」にチェック
- 必要なライブラリのインストール
- コマンドプロンプトを開く以下のコマンドを実行:
pip install pandas openpyxl
- コードの保存手順
- メモ帳を開く(スタートメニュー→メモ帳)
- 下記のコードをコピー&ペースト
- 「ファイル」→「名前を付けて保存」を選択
- 保存先:
C:\test
- ファイル名:
test.py
- 「ファイルの種類」で「すべてのファイル(.)」を選択
- 文字コード:UTF-8
- 「保存」をクリック
- 実行方法
- コマンドプロンプトを開く以下のコマンドを順に実行:
cd C:\test
python test.py
注意点
- 初めてPythonを使用する場合は環境構築から必要
- コマンドプロンプトの操作に慣れが必要
- ファイル保存時の拡張子(.py)の設定に注意
import pandas as pd
import os
def combine_excel_files(folder_path):
# 結合用の空のDataFrame
combined_df = pd.DataFrame()
# フォルダ内のExcelファイルを処理
for filename in os.listdir(folder_path):
if filename.endswith('.xlsx'):
# ファイルパスを作成
file_path = os.path.join(folder_path, filename)
# Excelファイルを読み込み
df = pd.read_excel(file_path)
# データを結合
combined_df = pd.concat([combined_df, df], ignore_index=True)
# 結果を新しいExcelファイルに保存
combined_df.to_excel('combined_data.xlsx', index=False)
return combined_df
# 実行例
folder_path = r'C:\test'
result_df = combine_excel_files(folder_path)
print(f"合計行数: {len(result_df)}")
補足:開発ツールを使用する方法
より効率的にPythonコードを作成・実行するには、統合開発環境(IDE)の使用をお勧めします。
Visual Studio Code(VSCode)を使用する場合:
- VSCodeのインストール
- Microsoft公式サイトからVSCodeをダウンロード・インストール
- 拡張機能のインストール
- Python拡張機能をインストール(VSCode内で「Python」を検索)
- Excel Viewer拡張機能(オプション:Excelファイルのプレビューに便利)
- 使用方法
C:\test
フォルダーをVSCodeで開く- 新規ファイル作成(Ctrl + N)
- Pythonファイルとして保存(.py)
- コードを書いて実行(F5キー)
- VSCodeのメリット
- コードの色分け表示
- 入力補完機能
- デバッグが容易
- Git連携が可能
このように、開発ツールを使用することで、より快適にコード作成・実行が可能になります。
まとめ:各手法の比較と選び方
Power Query
- 難易度:初級
- 処理速度:中程度
- 自動化:可能
- 特徴:
- 視覚的で操作が簡単
- 手順が分かりやすい
- Excel標準機能で利用可能
VBA
- 難易度:中級
- 処理速度:速い
- 自動化:簡単
- 特徴:
- 処理が高速
- カスタマイズ性が高い
- マクロとして保存可能
Power BI
- 難易度:初級
- 処理速度:中程度
- 自動化:可能
- 特徴:
- 分析機能が充実
- ビジュアル化が容易
- レポート作成に最適
Python
- 難易度:上級
- 処理速度:速い
- 自動化:簡単
- 特徴:
- 大量データに強い
- 柔軟な処理が可能
- 無料で利用可能
よくある質問(FAQ)
Q1. どの方法を選べばいいですか?
- 日常的な作業の場合:Power Queryがおすすめです
- 視覚的に操作できる
- 手順が分かりやすい
- 次回も同じ手順で実行可能
- 大量のデータを定期的に処理する場合:VBAがおすすめです
- 処理が高速
- ボタン1つで実行可能
- カスタマイズが容易
Q2. 処理中にエラーが出た場合は?
- メモリ不足エラーの場合
- 32bit版から64bit版Excelへの移行を検討
- 不要なアプリケーションを終了
- 一度に処理するファイル数を減らす
- ファイルが開けない場合
- ファイルが他のプログラムで開かれていないか確認
- ファイル名やパスに日本語が含まれていないか確認
- ファイルが破損していないか確認
Q3. データ量が多い場合の注意点は?
- 十分なメモリ容量を確保する
- 64bit版Excelの使用を推奨
- 不要な列は事前に削除
- 処理前にデータのバックアップを作成
Q4. 結合したデータの更新方法は?
- Power Query:「データ」タブから「更新」
- VBA:マクロを再実行
- Power BI:「更新」ボタンをクリック
- Python:スクリプトを再実行
トラブルシューティング:よくある問題と解決方法
メモリ関連の問題
- メモリ不足エラーが発生する場合
- 原因:大量のデータを一度に処理しようとしている
- 解決策:
- Excelを64bit版に変更
- 不要なアプリケーションを終了
- データを分割して処理
- 処理が極端に遅くなる場合
- 原因:ファイルサイズが大きすぎる
- 解決策:
- 不要な列を削除
- 数式を値に変換
- フィルターを活用して必要なデータのみ結合
データの整合性の問題
- データの型が混在する場合
- 原因:ファイルごとに列の形式が異なる
- 解決策:
- Power Queryで列の型を統一
- VBAで型変換を追加
- 元データの形式を統一
- 文字化けが発生する場合
- 原因:文字コードの不一致
- 解決策:
- ファイルの文字コードをUTF-8に統一
- 日本語を含むパスを避ける
- 半角・全角を統一
実行時のエラー
- 「ファイルが見つかりません」エラー
- 原因:パスの指定が間違っている
- 解決策:
- パスの最後に「\」があるか確認
- ファイル名が正確か確認
- フォルダ権限を確認
- 「実行時エラー」が表示される
- 原因:VBAのコードに問題がある
- 解決策:
- エラー処理を追加
- デバッグモードで確認
- 変数の初期化を確認
応用例:データ結合の活用方法
1. 定期的なデータ更新の自動化
Power Queryの場合
- 「データ」タブの「更新」を設定
- 「プロパティ」で更新時間を指定
- OneDriveと連携して自動更新
VBAの場合
' タスクスケジューラーから呼び出し可能な形に修正
Sub AutoUpdateDaily()
' 実行時のログを残す
Dim logFile As String
logFile = "C:\test\log.txt"
' 処理実行
CombineExcelFiles
' 完了時刻を記録
Open logFile For Append As #1
Print #1, "更新完了: " & Now
Close #1
End Sub
2. データの加工例
結合後のデータ整理
- 重複データの削除
- 日付順での並べ替え
- 条件付き書式の適用
- 株価の上昇:緑
- 株価の下落:赤
- 出来高の増加:太字
ピボットテーブルの活用
- 日付ごとの集計
- 銘柄別の分析
- 時価総額による分類
3. レポート作成への展開
日次レポート
- 前日比較の自動計算
- グラフの自動更新
- サマリーページの作成
月次レポート
- 月間推移の可視化
- 業種別の集計
- パフォーマンス分析
4. データのクリーニング自動化
- 異常値の検出
- 欠損値の補完
- フォーマットの統一