Power Query で入れ子になったテーブルを正しく展開する方法

内容

いくつかのスマート テーブルを含む Excel ファイルがあるとします。

Power Query で入れ子になったテーブルを正しく展開する方法

コマンドを使用して標準的な方法でこれらのテーブルを Power Query に読み込む場合 データ – データの取得 – ファイルから – 本から (データ — データの取得 — ファイルから — ワークブックから)、次に、次のようなものを取得します。

Power Query で入れ子になったテーブルを正しく展開する方法

この図は、多くの Power Query ユーザーにとって見慣れたものだと思います。 同様の入れ子になったテーブルは、クエリを組み合わせて (VLOOKUP 風に)、グループ化 (コマンド) した後に見ることができます。 グループ化する タブ 変換)、特定のフォルダーからすべてのファイルをインポートするなど。

この状況での次の論理的なステップは、通常、ネストされたすべてのテーブルを一度に展開することです。列ヘッダーにある二重矢印のボタンを使用します。 且つ:

Power Query で入れ子になったテーブルを正しく展開する方法

その結果、すべてのテーブルのすべての行が XNUMX つの全体にまとめられます。 すべてが良く、シンプルで明確です。 

ここで、新しい列 (Discount) がソース テーブルに追加されたか、既存の列の XNUMX つ (City) が削除されたとします。

Power Query で入れ子になったテーブルを正しく展開する方法

次に、更新後のリクエストにより、あまり美しくない画像が返されます。割引は表示されず、都市の列は空になりましたが、消えませんでした。

Power Query で入れ子になったテーブルを正しく展開する方法

その理由は簡単にわかります。数式バーでは、展開された列の名前が関数の引数にハードコードされていることがはっきりとわかります。 Table.ExpandTableColumn 中括弧内のリストとして。

この問題を回避するのは簡単です。 まず、関数を使用して任意の (たとえば最初の) テーブルのヘッダーから列名を取得しましょう テーブルの列名. 次のようになります。

Power Query で入れ子になったテーブルを正しく展開する方法

ここに:

  • #「他の列が削除されました」 – データを取得する前のステップの名前
  • 0 {} – ヘッダーを抽出するテーブルの番号 (0 から数えます。つまり、XNUMX が最初のテーブルです)
  • [データ] – 展開されたテーブルが配置されている、前の手順の列の名前

数式バーで得られた構造を関数に代入する必要があります Table.ExpandTableColumn ハードコードされたリストの代わりにテーブルを展開する段階で。 最終的には次のようになります。

Power Query で入れ子になったテーブルを正しく展開する方法

それで全部です。 また、ソース データが変更されたときに、ネストされたテーブルを展開する際の問題はなくなります。

  • Power Query で XNUMX つのシートからマルチフォーマット テーブルを作成する
  • 複数の Excel ファイルから異なるヘッダーを持つテーブルを作成する
  • 本のすべてのシートから XNUMX つのテーブルにデータを収集する

 

コメントを残す