セミナーを受講された方から質問された内容です。任意のフォルダに処理対象のファイルがあります。
ここでは、データが保存されるフォルダをC:\Workとしました。また、扱うファイルはCSV形式です。言うまでもありませんが、Excelのブック(xlsxなど)でも同じことができます。さて、このように、ある特定フォルダに処理対象のファイルが保存されるのですが、このファイルが増えていくとします。現在は「Sample1.csv」「Sample2.csv」「Sample3.csv」という3つのファイルが存在していますが、来月になるとここに「Sample4.csv」が追加されます。そうした運用で、常に最新のファイルを読み込みたいと。そういうお話です。
まず、[データ]タブ[データの取得と変換]グループの[データの取得]ボタンをクリックして[ファイルから]をポイントし[フォルダーから]をクリックします。
実行すると、フォルダを選択するダイアログボックスが表示されますので、ファイルが保存されているフォルダ(今回は、C:\Work)を選択して[開く]ボタンをクリックします。続いて、下図のような"ファイルの一覧"画面が表示されます。この画面で[データの変換]ボタンをクリックしてください。
実行すると、下図のように"ファイルの一覧"がPower Queryエディタに取得されます。
4列目~6列目に日時が表示されています。これらは、次の日時を表しています。
これらは、ファイルのプロパティダイアログボックスでも確認できます。
今回は、サンプルファイルを作るのが面倒くさかったので、すべて同じ日時にしていますが、実際には異なっていることが多いです。本件では「常に最新のファイル」の"最新"とは、「アクセス日時」「更新日時」「作成日時」のうち、"どの日時"が最新なのかが重要です。そこを間違えないように注意してください。一般的にはこういうとき「作成日時」で判断することが多いので、今回はその手順で解説します。Power Queryエディタで[Data created]列を選択して、[昇順で並べ替え]ボタンをクリックします。
続いて[行の保持]ボタンをクリックして[下位の行の保持]をクリックします。
保持する行の数を指定する画面が表示されますので、[行数]ボックスに「1」を入力して[OK]ボタンをクリックしてください。
実行すると、Power Queryエディタのリストが、"最後の1行だけ"になります。
この操作で何をしたか分かりますか?まず「作成日時」を昇順で並べ替えました。すると当然、最も新しい「作成日時」が一番下にきます。次に「下から1行め」だけを保持して(残して)、その他の行を削除しました。その結果、最も新しい「作成日時」のデータ(行)だけが残るということです。さて、操作を続けましょう。Power Queryエディタに表示されている1行だけのリストで、左端にある[content]のタイトル部分をクリックして列全体を選択します。その状態で[結合]グループにある[Fileの結合]ボタンをクリックしてください。
実行すると、下図のような確認画面が表示されますので、そのまま[OK]ボタンをクリックします。
Power Queryの「結合」とは、複数のデータ(リスト)を1つのデータとして縦方向に合体させる機能です。
一般的には上図のように、複数のデータを結合することが多いですけど、別に1つのデータだけを扱うことも可能です。結果的に、1つのデータだけを取得するということです。
"最新の"データだけを取得できましたので、必要であれば、ここで何らかの変換や編集などを行ってください。今回は、このまま読み込みます。[閉じて読み込む]-[閉じて次に読み込む]をクリックし、表示されるダイアログボックスで[接続の作成のみ]を選択して[OK]ボタンをクリックします。
Excelの右端に表示される[クエリと接続]ペインから「Work」を右クリックして[読み込み先]を実行して、任意の場所に読み込みます。このへんは、お好みでどうぞ。
では、新しいファイルを追加してみましょう。
テーブル内にアクティブセルを置いて、[データ]タブ[すべて更新]-[更新]をクリックします。
実行すると、最新のファイルが読み込まれます。
この"最新のファイル"だけを読み込むって、実務では意外と便利な気がします。ぜひ、ご活用ください。