shikumika’s diary

日々の事務作業で手間なことを簡単にできる仕組み(自動化、方法など)、困ったことの解決方法を調べた備忘録

【Power Query】複数行ごとの表を1行に変換(一つ下の値を参照)

Power Queryで複数行ごとの表を1行に変換する事例として、一つ下の行の値を参照する方法です。他にも変換する方法はありますが、Excelのセル参照による変換イメージに近い方法です。

内容:

使用のExcelは「Microsoft® Excel® for Microsoft 365 MSO」(バージョン2403)です。

アウトプットイメージ

下図のように、Excelで「3行分に1件分のデータが入力されている表」をPowerQueryで1行に変換します。

複数行ごとの表が1行に変換したテーブルが作成できている

Power Queryで複数行ごとの表を1行に変換のイメージ

Excelのみを用いた場合の処理事例は次のとおりで、この内容をPowerQueryで実現するイメージです。

PowerQueryを用いると、繰り返し変換が必要な場合の作業を自動化(効率化)できます。

shikumika.org

 

事例の前提

この事例を理解する前提として、【Power Query】Excelのように一つ上の行の値を参照する方法が基本です。この内容をもとに、一つ下の行の値等を参照します。

以降は、上記で「インデックス列」を追加した後の主な手順です。

手順

上記で「インデックス列」を追加した後の状態が次とします。

「申請者」の列、「備考」の列は複数行に1件分のデータがあります

「インデックス列」を追加した後の状態

1.「カスタム列」の追加(一個目)

「列の追加」タブー「カスタム列」をクリックし、カスタム列の設定画面に次のような数式を入力する。

新しい列名: 申請者_担当

カスタム列の式: 追加されたインデックス[申請者]{[インデックス]+1}

カスタム列の式に、追加されたインデックス[申請者]{[インデックス]+1} を入力

「カスタム列」の追加イメージ

上記で「OK」をクリックし、「カスタム列」の追加されたイメージは次のとおり。

[申請者]列について、一つ下の行の値が取得できている

「カスタム列」の追加後イメージ

2.「カスタム列」の追加(その他)

他の値も上記1と同様に実施する。この事例では、次のように入力している。

新しい列名: 申請者_電話

カスタム列の式: 追加されたインデックス[申請者]{[インデックス]+2}

 

新しい列名: 備考2

カスタム列の式: 追加されたインデックス[備考]{[インデックス]+1}

3.データの整理(フィルター、並び替えなど)

最後に、余分なデータを削除するため以下を実施する。

  • [NO]列で、nullの行を非表示にフィルター
  • [インデックス]列の削除
  • 列をアウトプットにしたい順番に変更

以下は、Excelにデータを反映する前の状態。冒頭のアウトプットイメージの状態になっている。

冒頭のアウトプットイメージの状態になっている

PowerQueryで設定完了後の状態

以上、Power Queryで、複数行ごとの表を1行に変換(一つ下の値を参照)する方法でした。