Excel結合前チェックキット|列名の違い・列の欠け・小計行・金額列の文字をPythonで報告(Power Queryの結合クエリ・見本20ファイルつき)
- Digital680 JPY

毎月、各店舗や拠点から届く売上Excelを1つの表にまとめるとき、結合の前に、元のファイルに次のような違いがないかを確かめておくと、直す場所を見つけやすくなります。 ・あるファイルだけ列が1つ足りない(例: 「商品カテゴリ」の列がない) ・誰かが列名を変えている(例: 「店舗名」が「支店名」、「売上金額」が「売上額」) ・列の順番が入れ替わっている(例: 「数量」と「売上金額」) ・途中に「小計」や「合計」の行が入っている(1列目にその言葉が書かれている場合) ・金額の列に「未定」「ー」などの文字が入っている このキットのPythonスクリプトは、フォルダ内の .xlsx について1行目の列名と2行目以降の値を見て、上の5つを報告します。列の入れ替わりは「N列目名称違い」として報告されます。 金額以外の列(日付や数量など)に入った文字は調べません。たとえば日付の列の「未定」は見つかりません。 ■ 元のファイルは読み取り専用で開きます 対象フォルダの .xlsx を読み取り専用で開き、元のファイルには書き込みません。 書き出すのは検査結果のCSV(audit_result.csv、UTF-8 BOM付き)1つです。ファイルの結合や、新しいExcelファイルの書き出しはスクリプトでは行いません。結合は同梱のPower Queryのクエリ(列名で6列にそろえて1つの表にまとめる)で行います。 ■ 同梱ファイル(ZIP) ① check_excel_columns.py:Python版の検査スクリプト。結果を画面とCSVに出します。異常が1件でもあれば終了コードは1、なければ0です。 ② check_excel_columns.ps1:①を呼び出すPowerShell用のスクリプト。Python と①が必要です。 ③ merge_query_powerquery.txt:Power Query(M言語)のクエリ。Excelの空のクエリに貼り付けて使います。値の検査や修正はしません。 ④ make_sample_monthly_20files.py:練習用の売上Excelを20ファイル作るスクリプト。 ・samples フォルダ:④で作った練習用の20ファイル(架空のデータ。4ファイルに不具合を入れています)と、①で検査した結果のCSV ・README.md:使い方と、自分の列に合わせる書き換え方 練習用データで①を実行すると、20ファイル中、正常16/異常4と表示されます(6列目の見出しが「売上額」、商品カテゴリの列がない、金額の列の「ー」「未定」、15行目の小計行)。 ■ 動作を確かめた環境 ・Windows 11、Python 3、openpyxl(`pip install openpyxl` で入れます) ・③は Excel for Microsoft 365 で確かめました。 Pythonなしでは動きません。マクロは使いません。 ■ ご注意 ・各ブックの、保存したときに選ばれていたシートだけを読みます。 ・期待する列名は、スクリプト先頭の一覧(日付、店舗コード、店舗名、商品カテゴリ、数量、売上金額の6列)を書き換えて合わせます。あってもなくてもよい列を指定する設定はありません。 ・金額の列として調べるのは6列目です。位置が違う場合は、READMEの手順でスクリプトの1か所を書き換えます。 ・個人・法人を問わず、自分の業務や受託した作業に使えます。スクリプト単体の再配布・転売はご遠慮ください。
