Power QueryでCSVの列ずれ・列名変更に対処する方法
毎月同じCSVを取り込んでいても、提供元の仕様変更で「商品名」が「商品名称」になったり、新しい列が途中に追加されたりします。すると、先月まで動いていたPower Queryが突然エラーになることがあります。
大切なのは、列順の違い、列名の変更、列の追加・欠落を別の問題として確認することです。
元ファイルを保存したまま、どの列と処理ステップが変化の影響を受けたか確認します。手作業で直すと、翌月も同じ修正が必要になります。
最初に変化の種類を見分ける
| 変化 | よくある症状 | 主な確認場所 |
|---|---|---|
| 列順だけ変わった | 列名で処理していれば動く場合が多い | 列の選択・並べ替え |
| 列名が変わった | 「列が見つかりません」 | 名前変更、型変更、列選択 |
| 列が追加された | 不要列が結果に混ざる | 必要列だけを選ぶ工程 |
| 列が欠落した | 型変更や計算列でエラー | 必須列の有無、欠落時の扱い |
| 見出し行がずれた | Column1などの仮名になる | 先頭行の削除、ヘッダー昇格 |
1.エラーになったステップを特定する
- Power Queryエディターを開きます。
- 右側の「適用したステップ」を上から順にクリックします。
- 正常に表示される最後のステップを確認します。
- その次のステップで参照している列名と、現在のCSV見出しを比較します。
多くの場合、「変更された型」「名前が変更された列」「削除された他の列」など、特定の列名を使うステップで止まります。エラー表示だけを消すのではなく、最初に列名が変わった場所を直します。
2.フォルダー結合では「サンプル ファイルの変換」を確認する
複数CSVをフォルダーから結合すると、見本ファイルに対する変換が各ファイルへ適用されます。左側のクエリ一覧から「サンプル ファイルの変換」または同じ役割のクエリを開き、ヘッダー、列名、データ型を確認します。
Power Queryのファイル結合は、基本的に同じ構造のファイルを一つのテーブルへまとめる機能です。仕組みはMicrosoftのファイル結合の概要で確認できます。
3.列名変更は一か所で標準名へそろえる
「商品名」と「商品名称」のように提供時期で名称が変わった場合は、後続処理で使う標準名を一つ決めます。名前をそろえるステップを、型変更や計算より前に置くと管理しやすくなります。
Mコードで、存在しない旧列を無視して名前変更する例です。
Table.RenameColumns(
前のステップ,
{{"商品名称", "商品名"}},
MissingField.Ignore
)
MissingField.Ignoreを指定すると、対象の列が存在しない場合はその名前変更を無視できます。詳しい構文はTable.RenameColumnsの公式資料にあります。
「商品名」と「商品名称」が両方存在するCSVでは、どちらを正とするか決めずに同じ名前へ変更すると衝突します。
4.必要列を名前で選び、順番もそろえる
途中に新しい列が増えても結果へ混ざらないよう、最後に必要列を名前で選びます。列の一覧順が、そのまま出力順になります。
Table.SelectColumns(
前のステップ,
{"注文日", "注文番号", "商品コード", "商品名", "数量", "単価"},
MissingField.UseNull
)
MissingField.UseNullを使うと、指定した列が欠けている場合にnullの列を作れます。Table.SelectColumnsの公式資料
ただし、欠落を自動で許可してよい列だけに使います。商品コードや数量など処理に不可欠な列は、nullで処理を続けるより更新を止めて確認する方が安全です。
5.列が欠けたときのルールを決める
| 列の種類 | 欠けたときの例 |
|---|---|
| 必須列 | 処理を止め、提供元の仕様と元CSVを確認する |
| 任意列 | null列を追加し、欠落件数を記録する |
| 後から追加された列 | 利用目的が決まるまで出力対象へ入れない |
何でもMissingField.Ignoreで通すと、重要な欠落を見逃します。「処理を継続できる」と「正しい結果になる」は別です。
更新時の確認チェック
- すべてのCSVで見出し行の位置が同じ
- 必須列が全ファイルに存在する
- 旧列名と新列名が混在していない
- 追加列が意図せず出力されていない
- nullになった列と件数を確認した
- 結合後の行数と数量・金額の合計が元データと一致する
まとめ
列ずれに見える問題でも、原因は列順、列名、追加、欠落、見出し位置に分かれます。まずエラーになったステップを特定し、列名の標準化、必要列の選択、欠落時のルールを順番に整えると、翌月以降も直しやすいクエリになります。