【Excel】パワークエリでExcelファイルを結合する方法!

こんにちは! イマジネットPCサポートの橋崎です。

今回は以前にパワークエリの機能をExcel2013に組み込む記事を書きました。

その続編になります。

Excelファイルを結合する必要が何故あったのか!

前回の記事にも書いていますが、少しだけ状況をご説明すると

お客様は得意先から今後クラウドサービスを使用して請求書を送付してほしいと依頼があったそうです。おそらくこれは来年から実施される「電子帳簿保存法」の影響でこれからは多くの会社でクラウドを使用して請求書を始め様々な書類のやり取りが益々増えてくるでしょう。

クラウドを使用して請求書を送付するようになると確かに切手等の通信費や紙、細かいところではインクに掛かる経費は削減できます。また印刷した請求書を封筒に入れ切手を貼り、郵便ポストに投函していましたが、クラウドになるとそのような手間もかかりません。

ちょっと質問ですが

皆さんの会社では請求書はどのように作成していますか?

今更の質問ですいませんが、インストールタイプまたはクラウドの業務用システムをパソコンを使用して日々の売上データを入力し締日に得意先ごとに集計した請求書を作成してお客様の手元に郵送、またはPDFファイルに変換してメール等で送付していると思います。ただ最近はセキュリティー面で問題があるのでメールに添付して送付する事は控えている方もおられるかも知れません。

皆さんがご使用中の業務用システムからそのままクラウドサービスへデータを転送できれば、これが一番ベストな方法ですね!

しかしそのままクラウドサービスへ請求データを転送できる業務システムを現在使用しているとは限りません。

そのような場合でも多くのクラウドサービスは「CSV」形式のファイルをインポートできるようになっています。

またインポートの配列が違う場合でも最初にインポートの配列設定を記憶させておけば次回から記憶させた機能を使い簡単に転送が出来るように設計されています。

しかし今回はその前にやる事がありました。

お客様の業務システムからは請求明細データをエクスポートするCSVファイルは一括ではなく個別でないと出来ませんでした。(この文の細かい内容、一括と個別の内容は申し訳ありませんが、記載する事はできません。)

つまりクラウドサービスへ転送する前にCSVファイルをひとつにまとめる作業が発生したのです。

ですね!

パワークエリを使用してExcelファイルを結合する方法

ファイルの数が2~3つであれば手作業でも構わないと思いますが、数十個単位になるとさすがに面倒です。今回はExcelの機能パワークエリを使用してサッサと終わせましょう。

パワークエリはExcel2016からは標準で搭載されていますが、2013にはありません。でも心配なく2013でも機能を組み込む事はできます。(若干動作が重くなりますが)2013をご使用であれば以前の記事を参考にして下さい。また今回の作業は2013で紹介していますが、内容はほぼ同じでしょう。最初の入り口が違うだけだと思います。(多分)

結合には前提条件があります。

Excelファイルとひとまとめに表現していますが、少し注意が必要です。それは「CSV」ファイルと「xlsx」ファイルです。これらは見た目は同じように見えていても中身は違います。

今回は業務システムからエクスポートされた「CSV」ファイルです。しかし日頃使用しているExcelファイルは「xlsx」ファイルです。

なぜ、このような事を説明しているのかと言えば今回の作業では双方で違う部分があり、検証で「xlsx」ファイルが上手く結合が出来なかったのです。

ここからが大事な部分ですが

今回の作業には結合するファイルごとに共通させなければならない事があります。

まず両ファイル(csv・xlsx)に共通しているのは列データ「見出し」は全て同じ名前、同じ列数にする必要があります。(見出し列データは下で具体的に説明しています。)

次に違う点ですが、それは「シート名」です。

「csv」ファイルはsheet名は違っていても問題なく結合ができたのですが、「xlsx」ファイルは違うと結合が出来ませんでした。

もし結合ができない場合はこの当たりを見直すと解決するかも知れません。

また、数式や関数、VBAを記述した複雑な仕組みを構築しているファイルについては検証していないのでご了承ください。

csvファイルをそのまま使用した事が原因

上手く結合が出来なかった原因ですが、検証用のデータを別に用意するのが少し面倒だったので、サンプルの「csv」ファイルをそのまま「xlsx」ファイルに変換して作業を進めたのです。

勿論、シート内のデータや列名・列数は同じですが、シート名が「csv」ファイルの場合はそれぞれのファイル名に変更されている事に最初気が付きませんでした。

シート名を統一する事で結合作業は完了しました。

ひとつのフォルダにまとめます。

まず最初に行うのは結合するファイルをひとつのフォルダにまとめて保存します。

今回は保存先をディスックトップにしてフォルダの名前は「Excel」にしました。そこに名前1~3と3つCSVファイルがあります。

データの中身はこのように列が「日付」「車番」「発地名」「着地名」「売上金額」「通行料」「売上金額」「運転者」となっています。他のファイルも列数・列名は全て同じです。
※データは当店が作成したサンプルです。

結合作業の方法

※基本は「CSV」ファイルの作業紹介です。一部「xlsx」ファイルと違う箇所がありますが、注釈を入れています。

まずExcelを新規で立ち上げます。

そしてExcel2016であれば「データ」タブから「データの取得」ですが、今回は2013なので

「POWER QEERY」タブを選択→「ファイルから」→「フォルダーから」を選択します。

するとフォルダーパスが起動するので「参照」ボタンを選択して目的のフォルダを選択します。

今回はディスックトップにあるフォルダ名「Excel」です。選択後「OK」を選択します。

ちょっと難しそうな表示が出ましたが、気にせず「結合」のプルダウンメニューから「結合および編集」を選択します。
※2016の場合は「データの結合と変換」

ご注意

次の「ファイルの結合」だけ「xlsx」ファイルと違うので分けてご紹介しています。

「csv」ファイルの場合:しばらくするとファイルの結合と出ました。「OK」を選択します。

「xlsx」ファイルの場合:こちらは「csv」ファイルのように最初からデータは表示されていないので、左の「sheet」(シート名によって名前は違います。)を選択します。すると右側にデータが表示されます。次に「OK」を選択します。

以下から共通です。

するとまたなんだかよくわからない「Power Qeryエディター」と画面が開きましたね。「Source Name」と、これもよくわからない列も追加されていますが、「閉じて読み込む」→「閉じて読み込む」を選択しましょう。

選択箇所を拡大しまーす!

「Power Qeryエディター」が閉じるとExcelファイルに自動で新たに追加された「Sheet2」に結合されたデータが表示されています。結合されて分かったのですが「Source Name」はファイル名だったんですね!

確認してみましょう!

「Sheet2」の状態では少し分かりにくいので「Sheet1」へ値だけコピーしたものに元ファイル別に色分けしてみました。小さいのでデータまではわからないと思いますが、問題なく結合されています。しかも見出し列の「日付」「車番」「発地名」「着地名」「売上金額」「通行料」「売上金額」「運転者」は1行目だけ残っておりそれ以外は省かれています。

あとは多少の確認と編集(CSV変換やSheetの削除等)をする必要がありますが、面倒な結合が省かれたのは大きいですね!

あとがき

今回はExcelファイルを単純に結合するだけの内容ですが、中々使えると思いませんか?

特に必要のない列データを自動で省いてくれるのは最初ビックリしました。

当店はこれ以外の機能については調べていないので他に何ができるのかわかりません。興味がある方は是非色々調べて下さい。もっと便利な機能があると思いますよ!

それでは お疲れ様でした。

ご注意

記事内容についてのご質問の受付は時間が取れませんので行っておりません。

ご自身が使用しているパソコンの状態・環境により、同じような症状であっても同じとは限りません。したがって記事に書かれている内容を行う事で必ずトラブルが解消されるとは限りません。またこの記事を参考に作業される場合は自己責任でお願いします。作業された場合での損害や障害が発生しても当店は一切責任は負いませんのでご了承下さい。

この記事の内容は投稿日時点での内容です。時期によっては仕様などの変更により、この記事のとおりではない場合もございます。