Power QueryでグループごとのTableから値取得する事例です。
この方法は、複数の「単票形式のExcelシート」を処理したい場合や、複数行ごとの表を一行に変換したい場合などに活用できます。
内容:
使用のExcelは「Microsoft® Excel® for Microsoft 365 MSO」(バージョン2403)です。
アウトプットイメージ
列フィールドにあるTableから値を取得し、一覧表を作成します。
テーブルから値を取得する場合の「基本的な考え方」は次のとおりです。
テーブル名[フィールド名]{インデックス位置}
事例の前提
今回の事例の題材は、複数行ごとの表を一行に変換したい場合として、次の事例と同様の処理をします。
今回は、上記事例の手順で
1.対象のデータをPowerQueryに取り込み
2.同じ1件を識別するため「NO」列の値を「フィル」で埋める
3.1件分のレコードごとの「Table」を作成
が完了している状態とします。
なお、この事例は、Tableの値を参照するカスタム列を一つずつ追加する方法です。
「ピボット解除」の機能を使用しないので、Excelの数式に近いイメージで、カスタム列の設定数が少ない場合に適した方法と思います。
具体的な手順
事例の前提のとおり、【Power Query】複数行ごと(例外あり)の表を一行に変換する方法において、
3.1件分のレコードごとの「Table」を作成
まで設定が完了した状態が下図です。
グループ化したデータが「Table」に変換された状態です。
なお、上図のとおり該当の「Table」を選択すると、PowerQueryエディターの画面下側で「Table」内容を確認することができます(上図は、「グループ別テーブル」列の1行目の「Table」を選択した状態)。
1.Tableから該当する値を取得
「列の追加」ー「カスタム列」をクリックし、カスタム列の式を次のようにします。
「グループ別テーブル」列にTableがあり、そのTable内の「申請者」列の1番目に該当する値を取得したい場合
カスタム列の式: [グループ別テーブル][申請者]{0}
PowerQueryは”0”からカウントするので、”0”が1番目に該当します。
上記の結果、新しい列が追加され、指定した値が取得できました。
2.手順1を繰り返す(値取得をしたい回数)
他の値も同様に手順1を繰り返します。
最終的なPowerQueryの設定イメージ(全体)は下図のとおりです。
適用したステップ「グループ化された行」のあとは、「追加されたカスタム」というステップが抽出したい数だけ存在し、最後に余分な列を削除しています。
その他の方法(列のピボット解除)
この手順は、Tableの値を参照するカスタム列を一つずつ追加する方法です。
そのため、抽出したい値が多い場合は設定が手間となります。その場合は、事例の前提で示した次の「ピボット解除」の機能を使用した方法が効率的かもしれません。
以上、Power QueryでグループごとのTableから値取得する事例でした。