見出し画像

【エクセル パワークエリ】シートまたはテーブルの名前を条件にフィルタしてからデータの一括取得をする方法 【Excel PowerQuery】


やりたいこと


下の図のように売上データが複数のシートに分かれて存在しているとき、3つ全ての年度のシートを元データにしたピボットテーブルを作りたい。

画像1



手間も何も考えずにやるなら、3つのシートのデータをコピペして1シートにまとめ、それを元データにピボットテーブルを作ります。


もし年度ごとの売上データのレコード数が数万行程度なのであれば、もしくは年度が3期程度なら、その方法でもそれほど負担にはなりません。


しかし、1期当たりのレコード数が50万行を超えるとか、過去何十期のシートがあるとかになってくると話が変わってきます。


各年度のデータを手動で1つのシートにコピペしたくても、Excelシートに入力できる限界行数は104万行ちょっとなので、レコードの行数によっては、そもそも1つのシートに全部収まりません。


あるいは、売上データのシートが数十期分もあったりしたら、それを全てコピペするだけでも結構な手間です。


というわけで、このデータ取得作業をPowerQueryで自動化することにしました。



採用しなかった方法


まず、売上データのシートをそれぞれ個別のクエリで取得する、といった方法はとりません。


具体的には、まず1つのシートのデータをクエリに取得し、

画像3



これを売上データのテーブルの数だけ繰り返して

画像4



最後にクエリの結合で1つのテーブルに統合する。

画像5

画像6

画像7



やってることのイメージはこんな感じです。

画像2


この方法でも、104万行以上のデータを1つのテーブルにまとめることはできます。


しかし、方法が違うだけで、手間としては結局全てのシートをコピペすることとさほど変わりません。

しかも、新たな年度のシートが追加されるたびにクエリを手動で追加する必要があります。



では、もっとスマートに全ての売上データのシートをクエリに取り込む方法を考えます。



シート名を条件にして全てのシートのデータを一括取込・結合する


ここから先は

1,073字 / 17画像
この記事のみ ¥ 500

サポートに対して特典等の提供ができず申し訳ありません。サポートはこれからも記事の執筆や動画の制作等の活動を続けるためのモチベーションにさせていただきます。