「商品名|4月|5月|6月」のように月が横に増える表は、Power Queryの列のピボット解除で「商品名|月|金額」という縦持ちに変換できます。毎月の集計やグラフ作成に使うなら、品目などの識別列を固定し、月だけを属性列へ変える方法が基本です。

月別列が増える表の問題点

元表の例は「商品A、4月100、5月120、6月90」「商品B、4月80、5月70、6月95」です。横持ちのままでは7月の列を追加するたびに参照範囲や数式が変わりやすくなります。まず商品コードと商品名など、月が増えても固定の項目を確認し、それ以外が本当にすべて月列かを調べます。備考や合計列を月として誤変換しないことが重要です。

識別列を残して列のピボット解除

Power Queryエディターで商品コード・商品名などを複数選択し、[変換]→[その他の列のピボット解除]を選びます。これにより未選択列が「属性」「値」列になり、属性を「月」、値を「金額」へ改名できます。M式なら次のような形です。

Table.UnpivotOtherColumns(前のステップ, {"商品コード", "商品名"}, "月", "金額")

「合計」や「備考」が混在する場合はピボット解除する対象列を明示的に選ぶ方式を使います。

月列を日付・金額列へ整える

月名が4月など文字列なら、「年度」「月番号」を別に持たせ、対象日付を作ります。4月だけで日付を作ると年が不明なので、会計年度の列と組み合わせる必要があります。金額は数値に変換し、数値化できない文字(-や未定)は例外として記録します。

元表との月別合計を検算する

元の3か月合計が商品Aで310、商品Bで245なら、縦持ち後の同商品別合計も一致するか検算します。行数の目安は商品2件×月3列=6行ですが、元データにnullが含まれると、ピボット解除の結果行数だけで判断できない場合があります。金額合計に加え、月ごとの欠損数も確認します。

参考資料

おすすめの記事