皆さんよくExcel上でのデータ操作はするだろうと思います。各種の情報を結合したり、編集結果をプログラムに流しこんだりなども。
私はExcel上でガリガリと手で操作をするのは極力避けています。その代わりにプログラムあるいはマクロを書きます。なぜそうしているのかというと結局Excel上で人が手で操作をすると時間もかかるし間違えるし、一度で済めばよいですが何度も繰り返し同じ作業をするはめになることが多いからです。プログラムを書いておけば何度でも同じプロセスを繰り返せますし、ミスや処理の追加があってもその箇所だけ修正、追加できます。
と、思っていたのですが、最近Power Queryの事を知りました。Power Queryを使えば複数のソースから情報を持ってきて目的に合うように加工してシートに収めることをGUIで簡単に行え、しかもそれを何度でも実行できます。例えば私が今回おこなった処理は以下の様なものです。
- 他のExcelファイルからシートを読み込む - 先頭の不要な行を削除する - 一意のIDとなる列を先頭列に移動する - 一意のIDとなる列の形式を数値にする - 一意のIDとなる列の重複を排除する 上記の操作を3つのExcelファイルに対して行い3つのシートに情報を格納しました。
このプロセスは非常に簡単に行なえ、ボタン一発で何度でも再実行可能になります。Power Queryいいですね。
今回はさらにそれぞれの情報を一意のIDを元に結合して集計しました。そこに対しては、Power Pivotを使ってGUI上でテ-ブル同士のリレーションシップを定義し、あとはピボットテーブルで簡単に集計できました。
また、抜粋した情報をまとめた別の表を作成したく、それにはVLOOKUP関数を使ったのですが(リレーションを元にフラットなピポッドテーブルを使って作れそうだったけど意図した形にならず断念)、最新のEXCELではセルの範囲指定(絶対参照とか相対参照とか)ではなくテーブル自体を範囲として指定したり、テーブル内の列を指定したりすることが出来るようになっており大変作業がはかどりました。最近といっても2007のころからの機能らしいですが。
というわけで、ここまで簡単に繰り返しに耐えられる形でのデータ操作ができるなら、もっと積極的にExcelを使うのもありだなといまさらながら思いました。