多分一番要望として多いからだと思うんですが、複数のファイルを一括で読み込むクエリの質問が増えてきています。
Image may be NSFW.
Clik here to view.
ただ、ヘルパークエリどころかパワークエリがどんなものかすら、よくわからないまま使っている人がかなり多い印象があります。なので質問がちんぷんかんぷんということもよくあります。
「ノーコード・ローコードといっても意味不明なまま触るんだったら VBAマクロと変わらんじゃないか」ということで、もういっそコピーして貼り付けたら動く件のクエリを作ってみようかと思い立ちました。いやだって、読み込みエラーが起きても原因がどこにあるかさっぱりわからないクエリなんて、マクロと変わらないじゃないですか。
まずは空のクエリを作成します。作り方が分からない方は、「新規クエリを作成する」を参照してください。
続いて[ホーム]→[詳細エディタ]を開いて元のコードを削除し、下記のコードを丸ごと貼り付けます。「★」のところに参照するフォルダパス(「C:\...\...\フォルダ名」のようなもの)を記載してください
複数ファイルの1つ目のシートを読み込んで結合するクエリlet ソース = Folder.Files("★)", //★にフォルダパスを入力してください。 列の追加 = Table.AddColumn( ソース, "x", each Table.PromoteHeaders( Excel.Workbook([Content]){0}[Data] ), type table ), 列の選択 = Table.SelectColumns( 列の追加,{"Name", "x"} ), 列の展開 = Table.ExpandTableColumn( 列の選択, "x", Table.ColumnNames(列の選択{0}[x]) ) in 列の展開
このコードでは1行目は見出し行であるものとしています。見出しがなく、1行目からデータがある場合は「Table.PromoteHeaders()」を取り除いてください。
元のブックの1行目からデータがある場合let ソース = Folder.Files("★)", //★にフォルダパスを入力してください。 列の追加 = Table.AddColumn( ソース, "x", each Excel.Workbook([Content]){0}[Data]), type table ), 列の選択 = Table.SelectColumns( 列の追加,{"Name", "x"} ), 列の展開 = Table.ExpandTableColumn( 列の選択, "x", Table.ColumnNames(列の選択{0}[x]) ) in 列の展開
反対に頭に空白行が何行かある場合は「上位行の削除」をコードに追加する必要があります。
元のブックの先頭に空白行が3行ある場合let ソース = Folder.Files("★)", //★にフォルダパスを入力してください。 列の追加 = Table.AddColumn( ソース, "x", each Table.PromoteHeaders( Table.Skip(Excel.Workbook([Content]){0}[Data], 3) ), type table ), 列の選択 = Table.SelectColumns( 列の追加,{"Name", "x"} ), 列の展開 = Table.ExpandTableColumn( 列の選択, "x", Table.ColumnNames(列の選択{0}[x]) ) in 列の展開
他の下処理(Excelファイル以外を除外するとか)があるなら、別途ステップを追加してください。「Excel.Workbook([Content]){0}[Data]」に対してカスタム関数を作ってやってもいいです。そこまできたらヘルパークエリを作るほうがいいとは思いますが。
上記は元のファイルが Excelファイル(ブック)という前提です。対象が CSVファイルの時は、下処理が多いので別の方法でやってください。