毎月システムからCSVを出力し、Excelで不要な列を消し、並べ替え、表記をそろえる。この作業はPower Queryで一度作っておけば、翌月からは「ファイルを差し替えて更新」するだけで同じ整形をやり直せます。

ただし、作り方によっては翌月のファイルで止まったり、気づかないうちに古いデータのまま集計していたりします。この記事では、1つのCSVを毎月取り込む前提で、壊れにくいクエリの作り方、差し替えの方法、更新後の確認の順に説明します。

運用の方法は2通り

方法 毎月やること 向いている場面
A:同じ場所・同じ名前で上書きする 新しいCSVを決まったファイル名で保存し直す 手順をできるだけ単純にしたい
B:クエリの参照先を変える 月ごとのファイル名のまま、クエリが読むファイルを指定し直す ファイル名を変えずに保管したい

毎月の作業が少なく、間違えにくいのはAです。迷ったらAで始めてください。

最初の取り込みを作る

  1. 取り込み用のフォルダーとファイル名を決める(例:取込フォルダーの売上.csv)
  2. 今月のCSVをその名前で保存する
  3. Excelで「データ」→「テキストまたはCSVから」を選び、そのファイルを指定する
  4. プレビュー画面で「データの変換」を押し、Power Queryエディターを開く
  5. 列の削除・置換・並べ替えなどの整形をする
  6. 「ホーム」→「閉じて読み込む」でシートに読み込む

翌月に壊れないための作り方

整形するときは、翌月のファイルでも同じ結果になるかを意識します。特に次の点は、作った月にはうまくいっても翌月に問題が出やすいところです。

特定の月の値でフィルターしない

日付列のフィルターで「2026年9月」の値だけにチェックを入れると、その日付が式の中に固定されます。10月のファイルではどの行も条件に合わず、0件になります。数式バーに#date(2026, 9, 1)のような日付が直接書かれていないか確かめてください。毎月のファイルに当月分しか入っていないのであれば、月で絞るフィルターはそもそも不要です。

残す列を選んで「他の列の削除」を使う

使う列を選んでから右クリックし、「他の列の削除」を選ぶと、残す列の名前が式に記録されます。翌月のCSVに列が増えても、出力の列は変わりません。逆に、消したい列を選んで「列の削除」を使うと、増えた列はそのまま出力に入ってしまいます。また、消すはずの列がなくなると、その時点でエラーになります。

Columnsの固定に注意する

「ソース」ステップの式にColumns=8のような列数が入っていることがあります。CSVの列が9列に増えると、右端の列はエラーにならずに読み込まれません。列が増える可能性があるなら、Columns=8, の部分を削除しておくと、ファイルの中身から列数が決まります。

列名を参照するステップはエラーで知らせてくれる

「変更された型」や「他の列の削除」には列名が書き込まれています。出力元で列名が変わると、「列が見つからない」という趣旨のエラーで止まります。黙って間違った結果を出すより安全なので、このステップを外す必要はありません。後述する確認用クエリと組み合わせて、どの列が変わったのかをすぐ確かめられるようにします。

CSVは毎月同じ設定で出力する

出力元のメニューや出力設定(文字コード・区切り文字・見出し行の有無)は、毎月同じにします。Excelで開いて保存し直したCSVは使わず、システムから出たファイルをそのまま置きます。Excelで上書き保存すると、先頭の0や日付の形が変わることがあるためです。

方法A:ファイルを上書きして更新する

  1. 取り込み用フォルダーにある前月の売上.csvを、保管用フォルダーへ売上_2026-09.csvのように月付きの名前で移す
  2. 今月のCSVを取り込み用フォルダーに売上.csvとして保存する
  3. そのCSVをExcelなどで開いていたら閉じる(開いたままだと、更新で読み込めないことがあります)
  4. クエリのあるブックで「データ」→「すべて更新」を押す
  5. 下の「更新後の確認」に進む

先に前月分を移しておけば、上書きで前月のファイルを失うことがありません。

方法B:クエリの参照先を変えて更新する

次のどれかで、読み込むファイルを指定し直します。

  • 「データ」→「データの取得」→「データソースの設定」で対象のファイルを選び、「ソースの変更」から新しいファイルを指定する
  • Power Queryエディターで「ソース」ステップの右の歯車アイコンを押し、ファイルパスを指定し直す
  • 数式バーで、File.Contents("...")の中のパスを書き換える

変更したら「すべて更新」を押します。パスをシートのセルに書いておき、クエリがそのセルを読むようにする方法もあります。毎月パスを書き換える人がPower Queryに慣れていない場合は、そちらも検討してください。

更新後の確認

更新がエラーなく終わっても、正しいファイルを正しく読んだとは限りません。毎月、次の4点を確認します。

確認 見る場所 照合先
行数 「クエリと接続」のクエリ名の下に出る読み込み行数 出力元が表示した件数。セル内改行がなければ、メモ帳で開いた行数から見出しの1行を引いた数でもよい
期間 日付列の最小値・最大値 今月分の期間になっているか
列名 下の確認用クエリの結果 不足・増加が「なし」になっているか
合計 金額列の合計 出力元の帳票や画面の合計

期間は、読み込んだテーブルの横に=MIN(売上[日付])と=MAX(売上[日付])を置いておくと、更新のたびに目で確かめられます(売上は読み込み先のテーブル名、日付は列名です)。前月の日付が出ていたら、ファイルの差し替え忘れか、参照先の変更漏れです。

行数も、前月の記録と比べて極端に違わないかを見ておきます。

列名の変化を一覧で見る確認用クエリ

整形用のクエリが列名のエラーで止まると、どの列が変わったのかがわかりにくくなります。そこで、見出しを読むところまでを別のクエリに分け、列名を比べるクエリを並べておきます。

  1. Power Queryエディターで整形用のクエリを開き、「昇格されたヘッダー」の次のステップ(多くは「変更された型」)を右クリックして「前を抽出」を選ぶ
  2. 新しいクエリの名前を元データにする。整形用のクエリは元データを参照する形になります
  3. 左のクエリ一覧で元データを右クリックし、「参照」を選んで新しいクエリを作り、名前を列チェックにする
  4. 列チェックを選んで「ホーム」→「詳細エディター」を開き、次の内容に置き換える
let
    ソース = 元データ,
    期待する列 = {"日付", "店舗", "商品コード", "数量", "金額"},
    実際の列 = Table.ColumnNames(ソース),
    不足 = List.Difference(期待する列, 実際の列),
    増加 = List.Difference(実際の列, 期待する列),
    結果 = #table(
        {"項目", "内容"},
        {
            {"行数", Text.From(Table.RowCount(ソース))},
            {"不足している列", if List.IsEmpty(不足) then "なし" else Text.Combine(不足, ", ")},
            {"増えた列", if List.IsEmpty(増加) then "なし" else Text.Combine(増加, ", ")}
        }
    )
in
    結果

期待する列には、今のCSVの見出しを正しく書き写します。最後に列チェックをシートに読み込み、元データは「読み込み先」で「接続の作成のみ」にしておきます。

列チェックは見出しを読むところまでしか使わないので、整形用のクエリが列名のエラーで止まっても結果が出ます。不足している列に名前が出たら、出力元で列名が変わったか、出力設定が違っていたかを確かめます。そのうえで、整形用のクエリの列名と期待する列を直します。

まとめ

毎月のCSV取り込みは、取り込み用のファイルを決まった名前で上書きし、「すべて更新」を押すだけにするのがいちばん単純です。翌月に壊れないよう、特定の月の値でのフィルター、Columnsの固定、列の消し方に注意して作ります。更新したあとは、行数・期間・列名・合計の4点を毎月確かめます。差し替え忘れや列の変化に、その場で気づけるようになります。

おすすめの記事