Power Queryで複数行ごとの表を1行に変換する事例として、一つ下の行の値を参照する方法です。他にも変換する方法はありますが、Excelのセル参照による変換イメージに近い方法です。
内容:
使用のExcelは「Microsoft® Excel® for Microsoft 365 MSO」(バージョン2403)です。
アウトプットイメージ
下図のように、Excelで「3行分に1件分のデータが入力されている表」をPowerQueryで1行に変換します。
Excelのみを用いた場合の処理事例は次のとおりで、この内容をPowerQueryで実現するイメージです。
PowerQueryを用いると、繰り返し変換が必要な場合の作業を自動化(効率化)できます。
事例の前提
この事例を理解する前提として、【Power Query】Excelのように一つ上の行の値を参照する方法が基本です。この内容をもとに、一つ下の行の値等を参照します。
以降は、上記で「インデックス列」を追加した後の主な手順です。
手順
上記で「インデックス列」を追加した後の状態が次とします。
1.「カスタム列」の追加(一個目)
「列の追加」タブー「カスタム列」をクリックし、カスタム列の設定画面に次のような数式を入力する。
新しい列名: 申請者_担当
カスタム列の式: 追加されたインデックス[申請者]{[インデックス]+1}
上記で「OK」をクリックし、「カスタム列」の追加されたイメージは次のとおり。
2.「カスタム列」の追加(その他)
他の値も上記1と同様に実施する。この事例では、次のように入力している。
新しい列名: 申請者_電話
カスタム列の式: 追加されたインデックス[申請者]{[インデックス]+2}
新しい列名: 備考2
カスタム列の式: 追加されたインデックス[備考]{[インデックス]+1}
3.データの整理(フィルター、並び替えなど)
最後に、余分なデータを削除するため以下を実施する。
- [NO]列で、nullの行を非表示にフィルター
- [インデックス]列の削除
- 列をアウトプットにしたい順番に変更
以下は、Excelにデータを反映する前の状態。冒頭のアウトプットイメージの状態になっている。
以上、Power Queryで、複数行ごとの表を1行に変換(一つ下の値を参照)する方法でした。