
【エクセル パワークエリ】シートまたはテーブルの名前を条件にフィルタしてからデータの一括取得をする方法 【Excel PowerQuery】
やりたいこと
下の図のように売上データが複数のシートに分かれて存在しているとき、3つ全ての年度のシートを元データにしたピボットテーブルを作りたい。
手間も何も考えずにやるなら、3つのシートのデータをコピペして1シートにまとめ、それを元データにピボットテーブルを作ります。
もし年度ごとの売上データのレコード数が数万行程度なのであれば、もしくは年度が3期程度なら、その方法でもそれほど負担にはなりません。
しかし、1期当たりのレコード数が50万行を超えるとか、過去何十期のシートがあるとかになってくると話が変わってきます。
各年度のデータを手動で1つのシートにコピペしたくても、Excelシートに入力できる限界行数は104万行ちょっとなので、レコードの行数によっては、そもそも1つのシートに全部収まりません。
あるいは、売上データのシートが数十期分もあったりしたら、それを全てコピペするだけでも結構な手間です。
というわけで、このデータ取得作業をPowerQueryで自動化することにしました。
採用しなかった方法
まず、売上データのシートをそれぞれ個別のクエリで取得する、といった方法はとりません。
具体的には、まず1つのシートのデータをクエリに取得し、
これを売上データのテーブルの数だけ繰り返して
最後にクエリの結合で1つのテーブルに統合する。
やってることのイメージはこんな感じです。
この方法でも、104万行以上のデータを1つのテーブルにまとめることはできます。
しかし、方法が違うだけで、手間としては結局全てのシートをコピペすることとさほど変わりません。
しかも、新たな年度のシートが追加されるたびにクエリを手動で追加する必要があります。
では、もっとスマートに全ての売上データのシートをクエリに取り込む方法を考えます。
シート名を条件にして全てのシートのデータを一括取込・結合する
よければサポートしていただけると嬉しいです😀 有用な記事や動画を制作していけるように頑張ります❗️