3
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PowerQueryでフォルダからデータの取得をした場合にヘルパークエリの生成を回避する(Excel/csv)

Last updated at Posted at 2021-03-25

#フォルダからデータ接続 便利!
image.png

たとえば、フォルダ内の複数ファイルを連結したり
たどえば、フォルダ内の一番新しいファイルを読み取るようにしたり…

かなり利用頻度は高いのですが、

◆取り込みたいフォルダを選んで(必要なら読みたいファイルだけを絞り込んで)
image.png

◆CONTENTの「↓↓」を押して
image.png

◆(Excelの時のみ)読み込みたいシートを選ぶと…
image.png
##ヘルパークエリめっちゃできるやん!

データは結合できるんですが、インポートするファイルの種類ごとにどんどんヘルパークエリが(しかも3つも!)生成されてしまって処理が分かりにくくなってしまうのが不満でした。
何種類か元データを使いたいときって、ヘルパークエリばっかりどんどん増えちゃうし。
 (Excelって、複数シートにデータが入ってて、それぞれくっつけたかったりするので)

M関数で回避するよ(Excel版)

1.フォルダからデータ取得するため、フォルダを指定する
image.png

2.列の追加タブからカスタム列を追加を選択し、以下の式を入力
image.png

Excel.Workbook([Content],true){[Item="Sheet1",Kind="Sheet"]}[Data]

 -Item=”Sheet1”部分:読み込む任意のシート名を記載
 ‐Excel.Workbook([Content],true):データ範囲の1行目をタイトルとして扱う場合
  Excel.Workbook([Content]):データ範囲の1行目からデータとして扱う場合

3.ファイルのプロパティ部分を、いる列だけにする
image.png
 ※今回はファイル名だけ残してみましたが、最終更新日時なんかを残すのも利用用途が多そうです。

4.展開する
image.png
image.png

5.ヘルパークエリなしで結合できた!
image.png

#CSVの場合

2.の部分の式をこちらにさしかえる

Table.PromoteHeaders(Csv.Document([Content])

 なお、上の式は1行目がヘッダーの場合。
 1行目からデータとして扱いたい場合はPromoteHeadersの文が不要なので以下の式になる

Csv.Document([Content]
3
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?