なんでもエクセル(Nandemo Excel)

何でもエクセルでやってしまう そこのあなた、ようこそ

Power Query:複数のExcelファイルを結合して読み込む

「エクセルの複数ファイルを読み込んで縦結合するクエリ」については、既に色んなところに記事や動画がアップされているので、いちいち書かなくてもいいかなと思っていたんですけど、先日質問掲示板の質問で紹介しようとしてネットを検索してみると、意外に「わかりやすい」と感じる記事が少ない印象を受けました(個人的感想なので悪しからず)。

ということで今更ですが、自分でも書いてみることにします。「Excelファイル」と書いていますが「CSVファイル」でもやることは変わりません。

今回は最初から最後までマウス操作のみでできます。ただし「対象は xlsxファイルのみ」で「シート名は統一されている」を前提としています。

指定フォルダに接続する

まずはフォルダコネクタを使ってファイル情報テーブルを呼び出します。


[データの取得]→[ファイルから]→[フォルダーから]

すると「参照」が開きますので、フォルダを指定して[開く]をクリックします。

結合の方法を選ぶ

続いて開いた画面の下部にある「結合」から「データの結合と変換」を選択します。

読み込みフォルダを選択して[OK]
開いた画面下部の「結合」から「データの結合と変換」を選択

読み込みたいシートを指定する

「ファイルの結合」が表示されるので、ここで読み込むシートを指定します。

[OK]をクリックすると、Power Queryエディターが開きますので、ここからはエディタでの操作になります。

サンプルファイルのクエリを編集する

この時点で、エディタ画面には結合されたテーブルが表示されているはずです。左ペインにいっぱい並んでいますが、これらを「ヘルパークエリ」といいます。難しそうに見えるかもしれませんが、すごく便利なものです。

右側に表示されたテーブルを見て、何も問題がなければ、「エディタ画面を閉じてブックに読み込む」に進んでもらって問題ありません。

とはいえ大抵の場合は若干の修正が必要になります。今回の場合、それぞれのシートの見出し行が2行目にある(1行目に不要な行があり、データが3行目から始まっている)ので、結合したテーブルに不要な行が含まれてしまっています。この場合、「上位行の削除」と「先頭行をヘッダーに昇格」が必要になります。これらの編集は結合したテーブル上ではなく、「サンプル ファイルの変換」クエリで行います。


[ホーム]→[行の削除]→[上位の行の削除]→行数に「1」を指定して[OK] [変換]→[1行目をヘッダーとして使用]

これで1シートのテーブルがきれいに整います。このクエリで編集した内容は、他のブックから読み込んだデータにも適用されます。

ネット上では、これらの編集を省いて結合したクエリで見出し行を除外するよう指導している記事を見かけますが、そのやり方は推奨しません。シートごとの見出しの名前が統一されていない場合、この方法だとエラーを起こしてしまうからです。実際これでうまくいかなくなって、質問掲示板に質問している人を時々みかけます。

エディタ画面を閉じてブックに読み込む

改めて結合クエリ(指定フォルダ名のクエリ、今回は「XLSX」)に戻って、結合がうまくいっているかチェックしましょう。何かおかしなところがある場合は、「サンプル ファイルの変換」クエリを編集し直してください

問題がなければエディタ画面を閉じて、データをブックに読み込みます。


[ホーム]→[閉じて読み込む]→[閉じて次に読み込む] 「既存のワークシート」で指定セルを選択して[OK]

これでブックにデータが読み込まれます。

以上です。お疲れさまでした。

ファイル名列が「Source.Name」となっているのが気になる場合は、エディタ画面の結合クエリ上で名前を書き換えてください。

もし上記のやり方では条件が合わないという場合は、下記の方法も参考にしてください。

→ 対象ファイルが CSVファイルの場合

→ ヘルパークエリを使いたくない場合

→ 読み込みたいシート名が一律でない(1シート目を読み込みたい)場合