BlueprintLab Deep Guide
ExcelでCSVの値が勝手に変わる理由――先頭ゼロ・15桁超・E表記・日付化を防ぐ
文字化けより気付きにくいのが、「普通に開けているのに値だけ変わっているCSV」です。Excelの親切な自動判定が、IDやコードでは事故の原因になることがあります。
CSVをExcelで開いた。
文字化けもしていない。列もちゃんと分かれている。
なので普通に編集して保存した。
ところが後で見ると、00123 が 123 になっていたり、長いIDが別の数字になっていたり、コードが日付に変わっていたりする。
これ、CSVトラブルの中ではかなり厄介です。
壊れているように見えないからです。
文字化けならすぐ止まれます。
でもExcelの自動変換は、むしろ「きれいな表」に見せてくれることがあります。
このガイドでは、Excelが何を見て変換するのか、どこが危ないのか、そして現在のExcelでどう避けるかを見ていきます。
Excelは勝手に意地悪しているわけではありません
CSVには、基本的に「この列は商品コード」「この列は日付」「この列は文字列」といった型情報が入っていません。
そこでExcelは、セルの値を見て意味を推測します。
123 なら数値。
2026-09-12 なら日付かもしれない。
普通の表計算では、この親切さが便利です。
数字を数字として読んでくれれば、そのまま計算できますからね。
問題は、数字に見えるけれど計算する数字ではない値です。
SKU、郵便番号、会員番号、注文ID、追跡番号などが典型です。
00123 が 123 になる。数字としては同じでも、IDとしては別物です
例えば商品コードが、
00123
だったとします。
Excelがこれを数値として読み込むと、先頭ゼロを落として 123 と扱うことがあります。
数量なら問題ありません。
でも商品コードなら、00123 という5文字そのものに意味があります。
ここで後からセルの表示形式を 00000 にして、見た目だけ 00123 に戻すこともできます。
ただし、元のCSVで本当に 00123 だったことを守るには、最初から文字列として扱う方が安全です。
見た目を戻すことと、元データを守ることは同じではありません。
長いIDは、「E表記になる」だけでは済まないことがあります
18桁、20桁の注文IDや外部システムID。
これも見た目は数字なので、Excelに数値として扱われやすい値です。
Excelの数値精度は15桁です。
16桁以上の数字列を数値として扱うと、最初の15桁を超える部分を正確に保持できないことがあります。
なので、
123456789012345678
のようなIDを「あとで表示形式を戻せばいい」と考えるのは危険です。
一度数値として精度を失った後では、元の末尾を画面表示だけから復元できません。
長いIDは、長い“数字”ではなく、数字で書かれた“文字列”として扱う。
この考え方が大事です。
123E5 や JAN1。数字だけでなく「数字っぽいコード」も変換対象になります
少し意外なのがここです。
注意するのは数字だけではありません。
123E5 は、Excelから見ると科学表記に見えます。
JAN1 のような文字列も、文脈によっては日付らしく見えることがあります。
人間には商品コード・型番・試料名でも、Excelは業務上の意味を知りません。
文字列の形から「これは数値でしょう」「これは日付でしょう」と判断します。
なので、コード列は「数字だけか」を見るのではなく、Excelが別の型だと解釈しそうな形かを見る必要があります。
日付は、変換されたことに気付いても“元の意味”が分からないことがあります
例えば、
03/04/2026
という値。
これは3月4日でしょうか。
4月3日でしょうか。
元データがMM/DD/YYYYなのかDD/MM/YYYYなのか分からなければ、見た目だけでは判断できません。
Excelが日付へ変換できたとしても、それが業務上正しい解釈とは限りません。
ここは「日付として開けたから成功」ではなく、元システムの日付規則を知っているかが重要です。
曖昧な日付は、自動変換する前に止める方が安全です。
現在のExcelには、「自動で変えない」ための設定があります
ここは昔のExcel情報だけで考えない方がいいところです。
Microsoftの現在のExcelには、Automatic Data Conversions(自動データ変換)の設定があります。
Microsoftは、Excel for Microsoft 365 / Mac、Excel 2024 / Macで、少なくとも次のような自動変換を制御できると案内しています。
- 先頭ゼロの削除
- 16桁以上の数字列の変換
Eを含む文字列の科学表記変換- 連続する文字と数字を日付へ変換する動作
つまり「Excelが勝手に変える」というのは都市伝説のような話ではなく、Excel自身に制御項目が用意されている正式な挙動なんです。
バージョンによって利用できる設定は違うので、使っているExcelの版も確認します。
大事なCSVは、ダブルクリックより[テキストまたはCSVから]で読み込みます
CSVをダブルクリックすると、すぐシートが開きます。
便利なんですが、重要な業務CSVでは「Excelがどう解釈したか」を確認する間がありません。
Excelを先に起動して、[データ]→[テキストまたはCSVから] を使うと、読み込み前のプレビューを見られます。
ここで、
- 区切り文字
- 文字コード
- ID・コード列
- 日付らしい列
を確認します。
Power Query側で列をテキストとして扱う方法もあります。
CSVが10万行あっても、最初に全行を見る必要はありません。
変換されたら困る種類の列を先に見つける方が効率的です。
型推定は便利ですが、「integerと出たから数値にしてよい」ではありません
BlueprintLabのCSV列型プロファイラーのように、値の並びから「整数っぽい」「日付っぽい」と見るツールは、怪しい列を探すのに便利です。
ただし、これは業務上の型を決めるものではありません。
00123 が1000行並んでいれば、見た目としては整数らしい。
でも列名が sku なら、業務上は文字列です。
型は、見た目と意味の2段階で見る。
ここを分けると、CSVをかなり安全に扱えます。
一番危ないのは、自動変換に気付かないまま保存してしまうことです
Excelで値が変わった。
でも画面上では自然に見える。
そのままCSVで上書き保存する。
すると、次に開いたときには「Excelが変えた後の値」が新しい原本のように見えてしまいます。
なので、重要なCSVではこの流れにします。
- 原本をコピーして残す。
- Excelへ意図して読み込む。
- ID・長い番号・日付らしい列を文字列として守る。
- 編集する。
- 原本とは別名でCSVへ出力する。
- 出力したCSVをもう一度検査する。
- 少量で取込テストする。
「Excelで正しく見えるか」ではなく、相手へ渡すCSVが正しいかまで見るのがポイントです。
例えば、この4つが入っていたら先に止まって見ます
00123
123456789012345678
123E5
03/04/2026
それぞれ、
- 先頭ゼロ付きID
- 16桁以上の長いID
- 科学表記に見えるコード
- 地域によって意味が変わる日付
です。
こういう値を1つずつ代表サンプルとして見ておくと、10万行を全部目視しなくても、危ない変換をかなり拾えます。