複数データを統合する
前回に引き続き、複数のデータを統合する方法を見ていきたいと思います。
データについては前回と同じものを使用します。以下からダウンロードできますが前回の物と同じ内容です。
サンプルデータには、2023年、2024年、2025年の3年分のデータがあります。次年のデータが追加されていっても最初からクエリを作り直す必要がなく、更新ボタンだけでデータが反映される様子を確認できます。
PowerQueryが初めてという方は、最初にこちらで学習してからの方が良いでしょう。
データの読み込み
まずは新しいブックを開きます。
ブックを開いたらメニューから「データ」>「データの取得」>「ファイルから」>「フォルダーから」を選択します。
複数のデータを読み込む際はデータの入っているフォルダを選択します。

フォルダ内のファイルが読み込まれてPowerQueryエディターが起動します。

読み込むフォルダ内にデータ形式が同じでないファイルがあると面倒なので同じデータ形式のファイルを置くようにしましょう。

前回ファイル(ブック)を単体で読み込んだ時と違い、ファイル名や拡張子が並んでいます。これらのブックを結合する必要があります。
ファイルの結合
ファイルの結合は、メニュータブの「ファイルの結合」を選択するか、Contentの右にあるアイコンをクリックします。

以下のような「ファイルの結合」ウインドウが出るのでOKをクリックします。

新たなPowerQueryエディターは以下のようになります。単体のファイルを読み込んだ時と異なり、Source.Name が追加されています。この項目は読み込んだファイル名になります。

ファイル名から年を抽出
ファイル名には年がありますので、この部分を抽出して新しい列を追加してみましょう。

今回は、サンプル 2023 .xlsx という形から、2023 の部分を取り出してみます。
Source.Name の項目を選択して、「列の追加」>「抽出」>「区切り記号の間のテキスト」を選択します。

「区切り記号の間のテキスト」では、
開始区切り記号に ”サンプル” 、終了区切り記号に “.xlsx” と記述してOKを押します。

リストの一番最後に「区切り起動の…」という項目ができます。

項目名をダブルクリックして「年」に変更します。

値のデータ型が(ABCとなっているので)文字列型なので、ここをクリックして整数型に変更します。

不要なデータ項目を削除
一番左の Source.Name は不要となったので削除します。項目名を右クリックして「削除」を選択します。

先程追加した「年」項目を一番左にドラッグして移動しておきます。
計算結果を新たな列に追加
単価と部数から売上金額を計算し、新しい列に加えてみましょう。
単価と部数の項目名を選択します。複数の項目を選択する場合は、Ctrlキーを押しながら選択します。
次に、メニューの「列の追加」>「標準」>「乗算」を選択します。

すると「乗算」という項目が追加されます。項目名を「売上金額」に変更しましょう。

項目名をダブルクリックして編集状態にすれば変更できます。

データ出力
今回はピボットテーブルに書き出してみます。

「ファイル」>「閉じて読み込む」>「閉じて次に読み込む」を選択します。

「データのインポート」ダイアログからピボットテーブル レポート、既存のワークシートを選択してOKを押します。

ピボットテーブルの設定は、行に「日付」の月を残して、年、四半期、日付は外します。列は「商品」、値は、売上金額、フィルターに「年」をセットします。
商品は数が多いので、列ラベルに関しては、フィルターをかけて「ひとり…」で始まるものを選択しています。
上にあるフィルターの年を 2023 にすると 2023年のデータのみが対象になります。
尚、今回は Source.Name(ファイル名) から「年」を作ったのでフィルターにセットしましたが、日付の年をフィルターにセットしても同じです。(ファイル名から年を抽出する方法を紹介したかったので列を追加したのですが、蛇足でしたね、、、)
まとめ
同じデータ形式でファイルが追加更新されるようなケースでは、同じ種類のデータが1つのフォルダにまとめておいてパワークエリでデータ取り込めるようにすると便利です。
新しいデータ(例えば2026年のデータ)が増えた場合は、同じフォルダに入れて更新を行えば、データが反映されるようになります。
PowerQueryエディターでは、最初の項目名に Source.Name が作られるので不要なら削除しておきましょう。
今回は Source.Name (ファイル名)から年を取り出してみましたが、日付があるので無駄な作業だったかもしれません。ここでは抽出の練習として取り上げてみました。「区切り記号の間のテキスト」では、最初と最後のキーワードに囲まれた値を取り出すことが出来ますので参考にしてみてください。
コメント