パワークエリを使用するにあたって、最初に行うべき作業は「データの取得」となる。そこで今回は、Excelファイルからデータを取得するときの操作手順を解説していこう。また、複数のワークシートに保存されているデータ表を結合して取得する方法も紹介しておこう。
Excelファイルからデータを取得するときの操作手順
パワークエリを使って自動処理の手順を登録するときは、
(1)データを取得する
(2)用途に合わせてデータ表を加工する
(3)データ表をExcelに出力する
という流れで作業を進めていくのが基本だ。つまり、「データの取得」が最初に行うべき作業となる。ということで、今回は「Excelファイル」からデータを取得するときの操作手順を詳しく解説していこう。
クエリを登録するExcel(空白のブックなど)を開き、「データ」タブにある「データの取得」コマンドをクリックする。続いて、「ファイルから」→「Excelブックから」を選択する。
「データの取り込み」ダイアログが表示されるので、データの取得元となるExcelファイルを指定し、「インポート」ボタンをクリックする。
すると、「ナビゲーター」ウィンドウが表示される。ここでは「どのワークシートからデータを取得するか?」を指定すればよい。今回の例のようにワークシートが1枚しかない場合も、ワークシートの指定が必要だ。
ワークシートを指定すると、右側に「取得されるデータのプレビュー」が表示される。これを確認し、「データの変換」ボタンをクリックする。
データの取得が実行され、「Power Query エディター」が起動する。念のため、プレビュー画面を上下左右にスクロールして、データが正しく取得されていることを確認しておこう。
以上で「データの取得」は完了だ。難しい点は特に見当たらないので、すぐに操作手順を覚えられるだろう。
ただし、状況によっては、各列の「見出し」がヘッダー(列名)として正しく認識されないケースもある。この場合は「Power Query エディター」で適切な処理を行い、ヘッダーを自分で指定しなおさなければならない。
この操作手順は状況に応じてケース by ケースになるため、一概には説明できない。一般的には、(1)不要な行を削除する、(2)データの1行目をヘッダーに昇格させる、という処理を行えばよいが、そのためには「Power Query エディター」を自由に扱えるスキルを習得しておく必要がある。「不要な行の削除」については第11回の連載で詳しく紹介する予定なので、もう少しだけ待って頂けると幸いだ。
そのほか、取得元のExcelファイルを修正して「データの取得」をやり直す、という方法も考えられる。表のタイトル文字などを削除し、各列の「見出し」がワークシートの1行目になるように修正すると、たいていの場合、ヘッダーが正しく認識されるはずだ。
「読み込み」ボタンをクリックした場合は?
先ほど紹介した「ナビゲーター」ウィンドウには、「データの変換」ボタンのほかに、「読み込み」というボタンも用意されている。
こちらのボタンをクリックした場合は、「Power Query エディター」を経由することなく、取得したデータ表がそのままExcelに出力される仕組みになっている。
つまり、「取得したデータ表を一切加工しないで、そのままExcelに出力する」という動作になる。データ表を一切加工しないのであれば、取得元のExcelファイルをコピーして利用する場合とたいして変わらないので、このボタンを利用する機会は滅多にない。
よって、通常は「データの変換」ボタンをクリックしてデータを取得する、と覚えておけばよい。
ワークシートが複数ある場合は?
続いては、取得元のExcelファイルに「複数のワークシート」が含まれていた場合について解説していこう。
たとえば、以下の図のように「各日の売上データ」が個別のワークシートに記録されているExcelファイルがあったとしよう。「4月1日」~「4月5日」のワークシートには、同じ形式で各日の売上データが記録されている。
この場合、「ナビゲーター」ウィンドウにも「4月1日」~「4月5日」のシート名が表示される。いずれかのワークシートを選択して「データの変換」ボタンをクリックすると……、
そのワークシートに記録されているデータだけを取得した状態で「Power Query エディター」が表示される。上図のように操作した場合、「4月3日」のワークシートに記録されているデータだけが取得されることになる。
とはいえ、すべてのワークシートを結合してデータを取得したいケースもあるだろう。続いては、各ワークシートのデータを結合するときの操作手順を紹介していこう。
各ワークシートにあるデータ表を結合したい場合は?
すべてのワークシートからデータを一括取得するときは、「シート名」ではなく、「ファイル名」を選択する。この場合、プレビューは表示されないが、そのまま「データの変換」ボタンをクリックすればよい。
「Power Query エディター」が起動し、各ワークシートの情報が表示される。
続いて、各ワークシートのデータ(テーブル)を展開する。「Data」列の右端にあるボタンをクリックし、展開する列を指定する。通常は、すべて列が選択された状態のまま「OK」ボタンをクリックすればよい。
テーブルが展開され、各ワークシートのデータを結合した表が表示される。ただし、各列のヘッダーは「Data.Column1」などの列名になっており、正しく認識されていない。このため、データ表を整理していく必要がある。
まずは、不要な列(各ワークシートの情報)を削除しよう。「Item」、「Kind」、「Hidden」の列を選択し、「列の削除」コマンドから「列の削除」を選択する。なお、表の左端にある「Name」の列は日付データとして活用できるので、そのまま残しておく。
続いて、ヘッダーを指定する。現時点では、「列名」となるべき文字が「データの1行目」に配置されている。これをヘッダーに昇格させたいときは、「1行目をヘッダーとして使用」をクリックする。
各列の1行目がヘッダーになり、そのデータが「列名」に指定される。このとき、表の左端にある「Name」の列も、列名が「4月1日」に置き換えられる。このままでは適切でないので、列名の部分をダブルクリックし、列名を「日付」などに変更する。
データ表の2行目以降をよく見ていくと、各ワークシートのデータを結合した部分に「見出し」の文字列データが残っていることに気付くと思う。これらの行は不要だ。また、「売上」の合計を算出した行も不要であると考えられる。
これらの行はフィルターを使って削除する。今回の例の場合、「数量」の列が「合計」または「数量」の行を削除すればよい。よって、「数量」の列にある「▼」ボタンをクリックし、「合計」と「数量」のチェックを外してから「OK」ボタンをクリックする。
「合計の行」と「見出しの行」が削除され、データ部分だけを結合した表になる。これでデータ表を適切な形に加工することができた。
このように、各ワークシートのデータを結合して取得するには、データ表を適切な形に整形する処理を指定しなければならない。
「Power Query エディター」に慣れていないと少し難しく感じるかもしれないが、今回の連載で紹介したコマンド(処理)は、どれも基本的なものでしかなく、いつかは覚えなければならいコマンドといえる。これらのコマンドすら使えないようでは、「用途に合わせてデータ表を加工する」なんて、とうてい不可能だ。
各コマンドの使い方は、第11回以降の連載で詳しく説明していくので、焦らずに、ひとつずつ順番にマスターしていくとよいだろう。