システムから出したCSVをExcelで開いたら、こうなった。
- 日本語が
���や譁�蟄怜喧縺�のように化けている - 社員番号
00123が123になっている - 商品コード
1-2が2001/1/2になっている 3.10が3.1になっている- 長い数字
12345678901234が1.23457E+13になっている
全部、Excelの仕様どおりの動きです。不具合ではないので、待っても直りません。対処は2方向あります。
なぜ起きるか(1分だけ)
CSVは、ただのテキストです。どの列が何の型なのかという情報を持っていません。
なので Excel は、開くときに中身を見て推測します。
00123→ 数値だな → 前ゼロは不要 →1231-2→ 日付っぽいな →2001/1/2- 長い数字 → 桁が多いな → 指数表記に
文字化けのほうは別の話で、文字コードの取り違えです。日本語のCSVは UTF-8 か Shift_JIS のどちらかで書かれていますが、CSVにはそれを示す情報が無いことがあり、Excelが違うほうだと思って開くと化けます。
対処1:開き方を変える(相手のCSVを変えられない場合)
化けるだけなら、いちばん簡単な方法
ファイルをダブルクリックで開かない。これだけで解決することが多いです。
Excel を先に起動して、[データ]→[テキストまたはCSVから]で読み込みます。この画面では、
- 文字コードを選べる(65001: UTF-8 / 932: 日本語 Shift-JIS)
- プレビューで、化けていないほうを選べばいい
型が壊れるのを防ぐ
同じ読み込み画面で、[データの変換]に進むと列ごとの型を指定できます。ここで、
- 社員番号・商品コード・電話番号・郵便番号 → テキスト
- 日付 → 日付(形式を指定)
「コードっぽいものは全部テキスト」と覚えておけば、だいたい事故りません。コードは計算しないので、文字として扱って困ることはありません。
化けているかどうかは、メモ帳で開けば分かります。メモ帳で正常に読めるのに Excel で化けるなら、文字コードの問題です。メモ帳でも化けているなら、出したシステム側の問題です。切り分けが1分で済むので、覚えておくと便利です。
対処2:出し方を変える(自分たちで出す場合)
自動化の中でCSVを作るなら、こちらのほうが根本的です。
文字コードは UTF-8(BOM付き)にする。「BOM」は、ファイルの先頭に付ける短い印です。これが付いていると、Excel は UTF-8 だと判断してくれるので、ダブルクリックで開いても化けません。日本語のCSVをExcelに渡すなら、BOM付きUTF-8がいちばん事故が少ないです。
コード類は、囲むだけでは足りない。"00123" のようにダブルクォートで囲んでも、Excelは前ゼロを落とします。囲むのはカンマ対策であって、型の指定ではありません。
どうしても崩したくないなら、
- 受け渡しをCSVではなく .xlsx にする(型を持てます)
- あるいは、渡し先で「テキストとして読み込む」運用を決める
前者が可能ならそれがいちばん確実です。Power Automate でも Excel ファイルとして書き出せます。
対処3:壊れたことに気づける形にする
いちばん怖いのは、化けたことではなく気づかずに次の処理へ流れることです。
自動化に組み込むなら、取り込んだ直後にこれを見ます。
- 件数が想定と合っているか(0件で正常終了していないか)
- キーになる列(社員番号、取引先コード)に空欄が無いか
- 突き合わせで一致しなかった件数が、いつもより多くないか
3つめが実務的です。前ゼロが落ちたときの典型的な症状が「突き合わせが軒並み失敗する」なので、一致しなかった件数がいつもと違ったら止める。これだけで、間違ったデータが下流に流れるのを防げます。
相手先のシステムが古いCSVしか出せない場合
「Shift_JISでしか出せない」「ヘッダー行が2行ある」「末尾に合計行が入る」——よくあります。
そのときは、受け取ってから整えるステップを1つ挟むのが定石です。
- 元のCSVは触らずに保管する(後で「元はどうだったか」を確認できるように)
- 整えたものを別名で保存する(文字コード変換、余分な行の削除、型の指定)
- 以降の処理は、整えたほうだけを見る
元データを直接いじらない。これは自動化全般の原則で、事故ったときに戻れるようにするためです。
突き合わせが合わないときのチェック順
前ゼロ以外にも、突き合わせが失敗する原因は決まっています。上から見てください。
| 症状 | 原因 |
|---|---|
| 全部一致しない | 文字コード違い、または列がずれている |
| 一部だけ一致しない | 前ゼロ、全角半角、スペース混入 |
| 見た目は同じなのに一致しない | 末尾に半角スペース、または改行が混ざっている |
| 数値が微妙に違う | 小数の丸め、指数表記への変換 |
3行目が曲者です。目で見ても分かりません。疑ったら、LEN() で文字数を比べると一発で分かります。TRIM() で前後の空白を落とすのが定番の対処です。
まとめ
- 文字化けは文字コードの取り違え、前ゼロ消失や日付変換はExcelの型推測。どちらも仕様
- ダブルクリックで開かない。[データ]→[テキストまたはCSVから]で文字コードと型を指定する
- コードっぽいものは全部テキストにする
- 自分で出すなら BOM付きUTF-8。型を守りたいなら .xlsx で渡す
- 自動化に組むなら、件数・空欄・不一致件数を取り込み直後に確認する
- 元データは触らない。整えたものを別名で作る
- 突き合わせが合わないときは、末尾のスペースを疑う(
LEN()で分かります)
このあたりは、Excelの転記作業を自動化する前に の「入力元の表の形を先に固定する」と同じ話です。受け取る形が安定していないと、その先は何を作っても壊れます。
実際のCSVを見せてもらえれば、どこで壊れているかはすぐ分かります。
この記事で使うシートを配っています
業務棚卸しシート
「どの業務から手をつけるか」を決めるためのシートです。作業を書き出して時間・回数・重要度・判断の有無を埋めると、優先度が自動で並びます。実際の打ち合わせで使っているものをそのまま置いています。
ダウンロード(無料・登録不要)読んだうえで「うちの場合はどうか」を話したい方へ
OKD SOFT は、生成AI(Microsoft 365 Copilot / Copilot Studio)と Power Platform を使った業務改善・内製化支援をしています。作って渡して終わりにせず、担当の方が自分で直せる状態までご一緒します。
「何から手をつければいいか分からない」の段階でも大丈夫です。まずは現状をうかがうところから。