毎月システムからCSVを出力し、Excelで不要な列を消し、並べ替え、表記をそろえる。この作業はPower Queryで一度作っておけば、翌月からは「ファイルを差し替えて更新」するだけで同じ整形をやり直せます。
ただし、作り方によっては翌月のファイルで止まったり、気づかないうちに古いデータのまま集計していたりします。この記事では、1つのCSVを毎月取り込む前提で、壊れにくいクエリの作り方、差し替えの方法、更新後の確認の順に説明します。
運用の方法は2通り
| 方法 | 毎月やること | 向いている場面 |
|---|---|---|
| A:同じ場所・同じ名前で上書きする | 新しいCSVを決まったファイル名で保存し直す | 手順をできるだけ単純にしたい |
| B:クエリの参照先を変える | 月ごとのファイル名のまま、クエリが読むファイルを指定し直す | ファイル名を変えずに保管したい |
毎月の作業が少なく、間違えにくいのはAです。迷ったらAで始めてください。
最初の取り込みを作る
- 取り込み用のフォルダーとファイル名を決める(例:
取込フォルダーの売上.csv) - 今月のCSVをその名前で保存する
- Excelで「データ」→「テキストまたはCSVから」を選び、そのファイルを指定する
- プレビュー画面で「データの変換」を押し、Power Queryエディターを開く
- 列の削除・置換・並べ替えなどの整形をする
- 「ホーム」→「閉じて読み込む」でシートに読み込む
翌月に壊れないための作り方
整形するときは、翌月のファイルでも同じ結果になるかを意識します。特に次の点は、作った月にはうまくいっても翌月に問題が出やすいところです。
特定の月の値でフィルターしない
日付列のフィルターで「2026年9月」の値だけにチェックを入れると、その日付が式の中に固定されます。10月のファイルではどの行も条件に合わず、0件になります。数式バーに#date(2026, 9, 1)のような日付が直接書かれていないか確かめてください。毎月のファイルに当月分しか入っていないのであれば、月で絞るフィルターはそもそも不要です。
残す列を選んで「他の列の削除」を使う
使う列を選んでから右クリックし、「他の列の削除」を選ぶと、残す列の名前が式に記録されます。翌月のCSVに列が増えても、出力の列は変わりません。逆に、消したい列を選んで「列の削除」を使うと、増えた列はそのまま出力に入ってしまいます。また、消すはずの列がなくなると、その時点でエラーになります。
Columnsの固定に注意する
「ソース」ステップの式にColumns=8のような列数が入っていることがあります。CSVの列が9列に増えると、右端の列はエラーにならずに読み込まれません。列が増える可能性があるなら、Columns=8, の部分を削除しておくと、ファイルの中身から列数が決まります。
列名を参照するステップはエラーで知らせてくれる
「変更された型」や「他の列の削除」には列名が書き込まれています。出力元で列名が変わると、「列が見つからない」という趣旨のエラーで止まります。黙って間違った結果を出すより安全なので、このステップを外す必要はありません。後述する確認用クエリと組み合わせて、どの列が変わったのかをすぐ確かめられるようにします。
CSVは毎月同じ設定で出力する
出力元のメニューや出力設定(文字コード・区切り文字・見出し行の有無)は、毎月同じにします。Excelで開いて保存し直したCSVは使わず、システムから出たファイルをそのまま置きます。Excelで上書き保存すると、先頭の0や日付の形が変わることがあるためです。
方法A:ファイルを上書きして更新する
- 取り込み用フォルダーにある前月の
売上.csvを、保管用フォルダーへ売上_2026-09.csvのように月付きの名前で移す - 今月のCSVを取り込み用フォルダーに
売上.csvとして保存する - そのCSVをExcelなどで開いていたら閉じる(開いたままだと、更新で読み込めないことがあります)
- クエリのあるブックで「データ」→「すべて更新」を押す
- 下の「更新後の確認」に進む
先に前月分を移しておけば、上書きで前月のファイルを失うことがありません。
方法B:クエリの参照先を変えて更新する
次のどれかで、読み込むファイルを指定し直します。
- 「データ」→「データの取得」→「データソースの設定」で対象のファイルを選び、「ソースの変更」から新しいファイルを指定する
- Power Queryエディターで「ソース」ステップの右の歯車アイコンを押し、ファイルパスを指定し直す
- 数式バーで、
File.Contents("...")の中のパスを書き換える
変更したら「すべて更新」を押します。パスをシートのセルに書いておき、クエリがそのセルを読むようにする方法もあります。毎月パスを書き換える人がPower Queryに慣れていない場合は、そちらも検討してください。
更新後の確認
更新がエラーなく終わっても、正しいファイルを正しく読んだとは限りません。毎月、次の4点を確認します。
| 確認 | 見る場所 | 照合先 |
|---|---|---|
| 行数 | 「クエリと接続」のクエリ名の下に出る読み込み行数 | 出力元が表示した件数。セル内改行がなければ、メモ帳で開いた行数から見出しの1行を引いた数でもよい |
| 期間 | 日付列の最小値・最大値 | 今月分の期間になっているか |
| 列名 | 下の確認用クエリの結果 | 不足・増加が「なし」になっているか |
| 合計 | 金額列の合計 | 出力元の帳票や画面の合計 |
期間は、読み込んだテーブルの横に=MIN(売上[日付])と=MAX(売上[日付])を置いておくと、更新のたびに目で確かめられます(売上は読み込み先のテーブル名、日付は列名です)。前月の日付が出ていたら、ファイルの差し替え忘れか、参照先の変更漏れです。
行数も、前月の記録と比べて極端に違わないかを見ておきます。
列名の変化を一覧で見る確認用クエリ
整形用のクエリが列名のエラーで止まると、どの列が変わったのかがわかりにくくなります。そこで、見出しを読むところまでを別のクエリに分け、列名を比べるクエリを並べておきます。
- Power Queryエディターで整形用のクエリを開き、「昇格されたヘッダー」の次のステップ(多くは「変更された型」)を右クリックして「前を抽出」を選ぶ
- 新しいクエリの名前を
元データにする。整形用のクエリは元データを参照する形になります - 左のクエリ一覧で
元データを右クリックし、「参照」を選んで新しいクエリを作り、名前を列チェックにする 列チェックを選んで「ホーム」→「詳細エディター」を開き、次の内容に置き換える
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点を毎月確かめます。差し替え忘れや列の変化に、その場で気づけるようになります。
