見出し画像

【Lite版】Excelの怪しい行だけPythonで拾う


ExcelやCSVの入力ミスを、毎回ぜんぶ目で確認している
空欄、重複、日付ミス、金額ミス、ステータスの入力ズレ
1件ずつ見れば分かるけれど、毎回やるには地味に重い作業です

そこで今回は、ExcelやCSVの目視チェックを減らすための「小さなPythonツール」を作りました
コンセプトは、完全自動化ではなく、怪しい行だけを機械にチクらせること

1000行のデータを人間が全部見るのではなく、ツールが拾った怪しい30行だけを確認する
この形に変えるだけでも、毎回の確認作業はかなり軽くなります


人間の目は「単純な目視チェック」に向いていない

ExcelやCSVの確認作業は、ぱっと見だと簡単そうに見える

商品データを開く
顧客リストを確認する
請求一覧を眺める
在庫表の数値を見直す
CSVをアップロードする前に、Excelで開いてざっと見る

やっていることだけ見ると、たしかに難しくはない

でも、これが100行、500行、1000行になってくると話が変わる
しかも、ミスの種類がひとつではないからです

チェックしたい項目よくある「実務のミス」の具体例
空欄チェック
必須入力のはずの顧客IDやメールアドレスが抜けている
重複チェック
商品コードや顧客IDがなぜか2つ以上ある
形式チェック
日付の形式がバラバラ、金額欄に文字が混ざっている
数値の異常
数量がマイナス、本来ゼロにならないはずの金額が0円
入力のブレ
ステータスに「完了」「確認中」以外の謎の文字がある

人間の目は、こういう単純な確認にあまり向いていない

最初の30行くらいはちゃんと見る
でも、途中からだんだん目が滑ってくる
最後の方は、見ているのか、眺めているだけなのか分からなくなる

そして一番怖いのは、見たつもりになることです


「全部自動で直すツール」が静かな事故を量産する理由

入力ミス確認の相談で、たまに出てくるのがこれです

「ミスがあったら自動で直したいです」

気持ちは分かる
毎回同じミスなら、自動修正したくなる

ただ、実務ではいきなり自動修正まで行くと危ない場面も多い

たとえば、日付が「2026/6/1」なのか「2026-06-01」なのかは、
形式をそろえれば済むかもしれない
でも、金額が0円になっている行を見つけたとして、
それが本当にミスなのか、
キャンペーンや返品処理なのかは機械だけでは判断しにくい

数量がマイナスになっている場合も同じ
返品なら正しい
入力ミスなら直す必要がある

ここを全部機械に任せると、間違った修正を静かに量産することがある
静かな事故ほど面倒なものはないです
あとから発覚したとき、だいたい原因調査がつらい

だから最初は、

機械が怪しい行を拾う
人間が最後に判断する

このくらいがちょうどいい


このLite版ツールでやること

今回のLite版ツールは、ExcelやCSVを読み込んで、入力ミスの候補をExcelレポートにまとめるものです

できることは、ざっくり言うとこのあたり

・必須項目の空欄チェック
・重複チェック
・日付形式のチェック
・数値として読めるかのチェック
・許可された値以外の入力チェック
・ゼロ値チェック
・マイナス値チェック
・怪しい行だけをExcelレポートに出力

たとえば、顧客リストならメールアドレスや顧客IDの空欄を見る
商品データなら商品コードの重複や価格のマイナスを拾う
請求一覧なら請求日や金額欄を確認する
在庫表なら数量のゼロやマイナスをチェックする

このツールがやるのは、あくまで「確認候補を出す」ところまでです
勝手に元データを書き換えるものではありません

ここはわざとそうしています

元データをいきなり自動修正するツールは、便利な反面、事故ったときの影響が大きい
特に請求、商品登録、顧客情報あたりは、雑に直すとあとで人間が泣く

なぜ人間はExcelで泣く羽目になるのか
だいたい運用ルールが先に泣いているからです


黒い画面は不要。ノンプログラマーでも触れる「設定ファイル」の仕組み

このツールでは、チェックする列や条件を設定ファイル側で指定する形にしています

「設定ファイル」と聞くと、少し身構えるかもしれない
黒い画面に呪文を書くやつか、と思う人もいるはずです
まあ、気持ちは分かります
人間はすぐ黒い画面を怖がる

ただ、今回やりたいのはそこまで難しい話ではありません

イメージとしては、こんな感じです

[商品コード] -> 空欄NG / 重複NG
[価格]      -> 数値のみ / マイナスNG
[登録日]    -> 日付として読める形式
[ステータス] -> 「未対応」「確認中」「完了」のみ許可

こういうルールを、設定ファイルに書いておく形です

Pythonのコードを毎回書き換える必要はありません
チェックしたい列や条件だけを変える
その方が、実務では使い回しやすい

たとえば、

「商品コード」は空欄NG
「商品コード」は重複NG
「価格」は数値のみ
「価格」はマイナスNG
「ステータス」は「未対応」「確認中」「完了」だけ許可
「登録日」は日付として読める形式にする

こういう条件を先に決めておけば、ツール側はそのルールに沿って怪しい行を拾います

もちろん、最初から完璧に条件を作る必要はない
むしろ最初は少なくていいと思っています

いきなり20項目チェックしようとすると、設定する側も疲れる
まずは空欄、重複、数値ミスくらいから始める

それで実際に使ってみて、
「ここも毎回見ているな」
と思ったら条件を足す

この進め方の方が、現場では続きやすい


CSVアップロード前の確認作業は、こう変わる

たとえば、毎朝の「CSVアップロード前の確認作業」で比べてみます

従来のやり方(Before)

  1. 毎朝CSVをダウンロードする

  2. Excelで開き、空欄がないか目で探す

  3. 商品コードが重複していないか神経を尖らせる

  4. 金額欄をざっと眺めて、問題なさそうならアップロードする

  5. あとでシステムエラーが出てから、またCSVを開いて原因を大捜索する

最後の5番が一番しんどい
しかも、だいたい急いでいるタイミングで起きる

「さっき見たはずなのに」
と思いながら、また同じCSVを開くことになる


このツールを使ったやり方(After)

  • ① ツールにCSVを読み込ませる
    対象のファイルを指定して、ツールを実行する

  • ② 自動でまとめてチェックする
    空欄、重複、日付ミス、数値ミスをプログラムがスキャンする

  • ③ Excelレポートを確認する
    ツールが出した「怪しい行だけ」を、人間がピンポイントで見る

  • ④ 必要なところだけ修正してアップロードする
    元データを直してから、安心してアップロードする

全部を見なくていい
怪しいところから見る

それだけで、目視確認の疲れ方はかなり変わります


「人が見るための一覧」を作るだけでも効果はある

自動化というと、どうしても「全部自動で処理するもの」を想像しがちです

でも、現場ではそこまでやらなくても効果が出ることが多い

たとえば、

・空欄がある行だけ一覧にする
・重複しているIDだけまとめる
・日付として読めない行だけ出す
・許可値以外のステータスだけ拾う
・金額が0円やマイナスの行だけ別シートに出す

これだけでも、人間の確認作業はかなり軽くなる

人間が1000行見るのではなく、機械が1000行をざっと見て、怪しい30行だけ人間に渡す
この形にするだけでいい

全部任せる必要はない
むしろ、最後の判断は人間が持っていた方が安全な場面も多いです


このツールが向いている作業

このLite版ツールは、こういう作業に向いています

商品データをCSVで管理している
顧客リストの空欄や重複を確認している
請求一覧の金額や日付を毎月チェックしている
在庫表の数量ミスを探している
ステータスの入力揺れに困っている
CSVアップロード前に、毎回Excelで目視確認している

逆に、向いていないものもあります

画像PDFから文字を読む
複雑な業務判断まで自動で行う
人によって正解が変わる内容を判定する
元データを自動で修正して完了まで持っていく

このあたりは、Lite版の範囲では少し大きい
別途ルール整理や個別対応が必要になります

最初から何でも詰め込むと、ツールが重くなる
そして、使う側も分からなくなる

小さい道具は、小さいまま使える方がいいです


有料部分には何が入っているのか

Excelの自由さと人間のうっかりが組み合わさると、現場は簡単にカオスになります

列名が少し変わる
日付形式が混ざる
CSVをExcelで開いたせいで、商品コードの先頭ゼロが消える
ステータスに「完了」「完了済」「済」が混ざる

Excel、自由すぎる
自由という名の混沌です

「もう毎回、目が滑るExcelと戦いたくない」
「安全に、でも確実に今の確認作業を軽くしたい」

そう思った方のために、有料部分には、手元で試せるツール一式を入れています

内容はこのあたりです

・Pythonツール本体
・サンプルCSV
・サンプルExcel
・チェック条件を書く設定ファイル
・出力されるExcelレポート例
・使い方の手順
・エラーが出たときの確認ポイント
・実務で使う前に注意したいこと

Pythonを少し触ったことがある人なら、サンプルから動かして確認しやすい形にしています

いきなり自社データで試すのではなく、まずはサンプルで動きを見る
そのあとで、自分のExcelやCSVに合わせて列名やチェック条件を変えていく

最初から本番データに突っ込むのは、あまりおすすめしません
人類はなぜか本番データで試したがる
だいたい事故の入口です


有料部分を買ったあとに迷わないように

購入後に、

「で、どこに何を置けばいいの?」

となると、かなりもったいないです
せっかくツールを買っても、最初の配置でつまずくと一気に面倒になる

有料部分では、ファイルの置き方も分かるようにしています

イメージとしては、こういう形です

input_check_tool/
├─ main.py
├─ config.txt
├─ sample_data/
│  ├─ sample_input.csv
│  └─ sample_input.xlsx
├─ output/
│  └─ check_report.xlsx
└─ README.txt

まずはサンプルデータを使って動作確認
そのあとで、自分のExcelやCSVに差し替える

この順番なら、いきなり本番データで事故る可能性を減らせます


使う前に決めておきたいこと

このツールを実務で使うなら、最低限ここは決めておくと楽です

まず、どのファイルを確認するのか
ExcelなのかCSVなのか
毎回ファイル名は変わるのか
列名は固定なのか

次に、どの列をチェックするのか
全部の列を見る必要はありません
ミスが起きやすい列からでいい

たとえば、

商品コード
顧客ID
メールアドレス
日付
金額
数量
ステータス

このあたりはチェック対象になりやすい

そして、何をミスとして扱うのか
ここが曖昧だと、ツール側も判断できない

空欄ならNG
重複ならNG
マイナスならNG
許可リストにない文字ならNG

このように、機械が判断できる形まで落とす必要があります

逆に言うと、ここさえ決まれば小さな自動化は進めやすい


いきなり大きく作らなくていい

入力ミス確認の自動化は、最初から大きく作らない方がいいと思っています

理由は単純で、現場のデータはだいたい揺れるからです

先月は「完了」だったのに、今月は「対応済」になる
日付の列名が「登録日」から「作成日」に変わる
商品コードの頭にゼロが付いたり消えたりする
CSVをExcelで開いたせいで、数字が勝手に変換される

このあたりは、実務ではかなりよくある話です

だから、最初は小さく試す

まずはサンプルデータで動かす
次に、実際のデータをコピーして試す
問題なければ、日々の確認作業に入れてみる
必要になったらチェック条件を増やす

この順番が安全です


まとめ

ExcelやCSVの入力ミス確認は、全部を目で見る必要はありません

もちろん、最後の判断は人間がした方がいい

金額が本当に間違っているのか
数量のマイナスが返品なのか
ステータスの揺れをどう扱うのか

そこは業務を知っている人の判断が必要です

ただ、その前段階までは機械に任せやすい

空欄を拾う
重複を拾う
日付ミスを拾う
数値ミスを拾う
許可値以外の入力を拾う
ゼロやマイナスを拾う
怪しい行だけExcelレポートにまとめる

これだけでも、毎回の確認作業はかなり軽くなる

全部自動化しなくていい
まずは、見るべき行を減らす

入力ミス確認の自動化は、このくらい地味なところから始めるのが現実的です


あわせて読みたい記事

似たようなテーマで、Excel・CSV・Python自動化まわりの記事も書いています

・「全部チェックして」はNG?Excel入力ミス確認を自動化する前の5条件
・CSVの目視確認をPythonで軽くする最初の一歩
・そのExcel自動化は本当に黒字か?ChatGPTに頼む前のI/O整理術


こういう業務改善やPython自動化まわりの記事を、noteで少しずつ書いています

Excel作業、CSV整理、ファイル管理、GAS、VBA、Pythonあたりで、
「これ、毎回人間が見るしかないのかな」
と思う作業がある方は、他の記事も読んでもらえるとうれしいです

地味な作業ほど、少し減るだけで効いてきます


ここから先は

3,703字 / 1ファイル

¥ 1,980

Amazon Payで支払うと最大2%還元のチャンス! 9/30まで

「役に立った」「こういう記事を増やしてほしい」と感じていただけたら、応援いただけると嬉しいです。 今後の検証や記事制作の励みになります。