CSVをExcelで開いたら、商品コード「00072」が「72」になった。長い受付番号の末尾も変わっている。そんなときは、ゼロを付け足す前に、受け取った元のCSVに正しい番号が残っているかを確認してください。
元のCSVが正しければ、取り込み方法を変えてやり直せます。一方、番号が変わった状態で上書きされ、正しい原本もない場合は、表示形式を変えるだけでは元に戻せません。この記事では、商品コード・会員番号など「計算しない番号」の確認と再取り込みに絞って説明します。
手順はWindowsのデスクトップ版Excelで、[テキスト/CSVから]とPower Queryエディターが使える環境を想定しています。画面名は版によって異なります。以下の番号は説明用の架空例で、当サイトによるExcel実機試験の結果ではありません。
まず上書きせず、CSVの中身をExcel以外で確認する
問題のCSVと、まだ編集していない受領時のファイルを分けて保管します。メールの添付やシステムからの再出力で原本を確保できるなら、それを比較の基準にします。すでにExcelで開いていても、異常に気付いた段階で元ファイルへ保存しないことが大切です。
原本のコピーを、社内で利用が認められたローカルのテキストエディターで開き、問題の行の番号を読みます。Windowsのメモ帳などで文字として確認し、保存はしません。顧客データをオンラインのCSV変換サービスへアップロードする必要はありません。
たとえば、原本の該当欄に「00072」と書かれているのにExcelでは「72」なら、取り込み後の変化を調べます。原本自体が「72」なら、Excelを設定し直しても「00072」が正解だとは判断できません。商品マスターや出力元の記録との照合が先です。
| 原本とExcelの状態 | 次にすること |
|---|---|
| 原本は正しく、Excelだけ違う | 新しいブックへ文字列として取り込み直す |
| 受領した原本の時点で違う | 出力元へ仕様・再出力の可否を確認する |
| 上書き済みで、原本がない | バックアップ・添付・管理システムを探す。推測で補わない |
CSVを通常の方法で開くと、Excelは既定の設定で列の値を解釈します。ファイル名がCSVのままでも、画面には解釈後の値が表示されるため、「Excelで見えた文字=ファイルに書かれた文字」とは限りません。MicrosoftのCSV入出力の説明も、この違いを案内しています。
ゼロ落ち・長い番号・指数表示を同じ問題にしない
先頭ゼロが消えた場合
「72」を5桁の表示にすれば「00072」と見せられます。しかし、元のコードが「072」か「00072」かは、その値だけでは分かりません。桁数が決まっていないコードへ、一律にゼロを足すのは避けましょう。
「全商品が5桁」という正式な仕様があり、別の記録でも一致を確認できる場合には、ゼロ埋めを検討できます。それでも、表示を整えることと、原本を照合して復元することは分けて扱います。別システムへ渡すコードは、見た目だけで判断しないでください。
16桁以上の番号の末尾が変わった場合
Excelの数値の有効桁数は15桁です。16桁以上の識別番号は、最初から文字列として扱う必要があります。たとえば、架空の受付番号「8472619350741826」を数値として扱い、末尾が変わった後に文字列へ設定し直しても、失われた数字は復元できません。Microsoftの先頭ゼロ・大きい数値の保持方法では、この制限と文字列での取り込みを説明しています。
原本が残っていない場合は、担当者の記憶や連番の前後から末尾を推測しないでください。別人の受付番号や別商品のコードを作ってしまうおそれがあります。
「8.47E+15」のように見える場合
指数表示だけでは、桁が失われたかどうかは断定できません。表示の問題と、値自体の変化を切り分けるため、原本の番号と照合します。列幅を広げたり表示形式を変えたりして全桁が見えても、原本と一致しなければ修正完了ではありません。
原本が正しいなら、新しいブックへ文字列として取り込む
既存の集計ブックを書き換える前に、空の新しいブックで対象のCSVだけを確認します。ここで行うのは、手元のCSVの読み込みです。既存マクロや、動作不明の外部接続を実行する必要はありません。
- 新しいExcelブックを開き、[データ]→[テキスト/CSVから]で原本のコピーを選びます。
- プレビューで文字コード・区切り文字・見出しを確認します。1列に固まっている、文字が崩れている場合は、列の型を直す前に読み込み条件を見直します。
- [読み込み]で確定せず、[データの変換]からPower Queryエディターを開きます。
- 右側の[適用したステップ]を見て、コード列がどの段階で変わるかを確認します。自動作成された[変更された型]などの前後を選び、値を比べます。
- コード列が数値になる型変換のステップを選び、対象の列見出しをクリックします。列見出し左の型アイコン、または[変換]の[データ型]から[テキスト]を選びます。型変更時に[現在のものを置換]が表示される場合は、その選択で既存の変換を置き換えます。末尾へ文字列変換を追加するだけで済ませず、最初に数値になる段階を確認してください。
- コードが原本どおりに見えることを確かめ、[閉じて読み込む]でシートへ戻します。読み込んだ後の番号も原本と照合します。
Power QueryはCSVなどの列の型を自動判定し、型を変えるステップを追加することがあります。つまり、列名が「商品コード」でも、数字だけなら必ず文字列になるわけではありません。Microsoft Learnのデータ型の説明を参考に、識別用の列は明示的にテキスト型へ設定します。金額や数量など、計算する列まで一律に文字列にしないようにしましょう。
型変換より前の段階ですでに番号が違う場合は、後続の変換を増やさず、選んだCSVが正しいかを見直します。複雑な既存クエリでは、ステップの削除で他の処理も変わる可能性があります。構造が分からなければ、今回は新規ブックでの確認までにとどめてください。
自動変換の設定は予防策。保存済みデータの修復機能ではない
対応するExcelでは、自動データ変換の設定で先頭ゼロの除去や長い番号の数値化を抑制できます。Microsoftはこの機能の対象としてMicrosoft 365版とExcel 2024のWindows/Mac版を案内しています。Windowsでは[ファイル]→[オプション]→[データ]から確認できます。Microsoftのデータ取り込みオプションで、各項目の動作を確認してください。
設定を変えても、すでに変化して保存された番号は戻りません。また、Power Query内の既存の型変換ステップは別に確認します。設定項目が見当たらない場合も、警告を無効化したりマクロを有効にしたりせず、前節のように取り込み時に列の型を指定する方法を検討します。
確認は件数・合計だけでなく、番号そのものを照合する
商品コードが変わっても、行数や売上合計が一致する場合があります。そのため、この問題の確認では「件数が合った」だけを合格条件にしません。
まず、問題が起きた番号について、受領原本・Power Queryの最終段階・読み込み後のシートの3か所を突き合わせます。架空例なら「00072」は5文字のまま、「8472619350741826」は末尾まで同じであることを確認します。この2例だけで実データ全体の正しさを保証できるわけではないので、業務で使う前に対象列全体の照合方法も決めます。
作業用のブックは原本CSVと別名の.xlsxとして保存します。CSVでの納品やシステム取り込みが必要なら、書き出したCSVをテキストエディターで確認し、受け手側の取り込み条件も合わせます。もう一度Excelでダブルクリックして見るだけでは、同じ自動変換が起きて判断を誤る可能性があります。
外注が必要なのは、単発の開き直しより再発する仕組みの見直し
原本が正しく、上の取り込み手順で解決し、担当者が続けられるなら、それだけを理由に外注する必要はありません。社内で「コード列は文字列」「原本は残す」と決め、手順を共有するところから始められます。
一方、毎月複数のCSVをまとめるたびに発生する、取引先ごとに列や桁数のルールが違う、取り込んだ後にマスター照合まで必要、といった場合は取り込みの仕組みを見直す価値があります。相談前に「原本では正しいか」「最初に変わる段階」「正しい番号の例」を整理しておくと、単なる表示調整ではなく、必要な調査の範囲を伝えられます。
月次処理全体の依頼を検討する場合は、ExcelのCSV集計を外注する前の入力仕様と検収項目を確認してください。原本が失われた番号の復元と、今後番号を壊さない取り込みの整備は別問題です。「外注すれば必ず復元できる」とは考えず、まず正しい照合元を確保しましょう。


コメント