【Excel】CSVの先頭0を消さずに取り込む方法:番号列を文字列にする

【Excel】CSVの先頭0を消さずに取り込む方法:番号列を文字列にする
🛡️ 超解決

CSVの顧客コード「00123」が、Excelで開くと「123」になる。郵便番号や商品番号の先頭の0が消えるのは、読み込み時に数字の並びを数値として解釈したためです。足し算をする金額と、桁や文字をそのまま保持したい番号は、取り込み時の型を分けます。

元のCSVに00123が残っているなら、顧客コード列を文字列として読み込み直す方法が確実です。すでに123へ変換してCSVを上書きした場合は、そのファイルだけから元の桁数を判断できません。まず元ファイルを別名で保管し、変換後の表で上書きしない状態で作業してください。

ADVERTISEMENT

1. CSVの中身とExcelの表示を分けて確認する

CSVは区切り文字で値を並べたテキストで、Excelのセルの表示形式や列のデータ型を保存する形式ではありません。ただし、ファイルの文字として00123を記録することはできます。「CSVだから0を保存できない」のではなく、読み取る側の解釈が問題です。

CSVをメモ帳などのテキストエディターで開き、対象の値を確認します。ここで00123なら取り込みをやり直せます。123になっている場合は、出力元から再取得するか、保管してある原本を探します。引用符で囲まれた”00123″も、CSVではフィールドを囲む記号であり、それだけでExcelの文字列型を保証するものではありません。

次の例ではcustomer_idとpostal_codeを文字列、amountを数値にします。番号の桁を守りながら、金額の合計2000を計算できる状態が目標です。

customer_id,postal_code,amount
00123,0123456,1200
00007,1000001,800
※ お探しの解決策が見つからない場合は、こちらの「Excelトラブル完全解決データベース」で他のエラー原因や解決策をチェックしてみてください。

2. [テキストまたはCSVから]で読み込む

Windows版Excelでは、空のブックを用意し、[データ]→[テキストまたはCSVから]を選んで元のCSVを指定します。プレビューで文字コード、区切り記号、列の分かれ方を確かめます。日本語が文字化けしていれば、読み込みを確定する前にファイルの元の形式を見直します。

データ型の検出方法を選べる画面では、[データ型を検出しない]を選び、[データの変換]へ進みます。Power Queryエディターでcustomer_idとpostal_codeを選び、列見出しの型アイコンまたは[データ型]から[テキスト]を指定します。amountだけは整数など、計算に使う数値型にします。

プレビューの最初の数行だけで安心せず、先頭0のある行と長いコードの行を見ます。データ型の推測は、選択した設定によって先頭の行だけを調べる場合があります。途中から英字を含むコードが出てくるデータでは、最初の行が数字だけでも列全体を数値と判断しないようにします。

3. すでに数値に変わった列は変換の順序を直す

エディター上で123になっている列に、後から[テキスト]を指定しても、通常は文字列の”123″になるだけです。元の00123を得るには、数値に変えた手順より前のデータから読み直す必要があります。右側の[適用したステップ]で[変更された型]などの手順を確認します。

元CSVの00123と00007から文字列へ直接取り込むと0が残る。いったん数値123と7へ変換した後に文字列化しても123と7のまま。
番号列の型は、数値へ変換される前の段階で指定します。

直前のステップを選び、そこでは00123が残っているか見ます。残っていれば、自動作成された型変換を削除するか、その型指定を置き換え、番号列を最初からテキストにします。[現在のものを置換]か[新しいステップの追加]かを尋ねられる場合は、数値化を後から文字列化する手順を積み重ねないよう、既存の型変換を修正します。

すでに後続の加工があるクエリでは、ステップ削除が別の列の処理に影響することがあります。作業前にブックを別名保存し、変更後は番号だけでなく列数、行数、金額も確認します。最初の取り込み段階でも0がないなら、元CSVの内容と選択したファイルが正しいかへ戻って調べます。

4. 旧テキストインポートウィザードを使う場合

従来のウィザードを使う環境では、[ファイル]→[オプション]→[データ]でレガシのデータインポートウィザードの[テキストから]を有効にできます。必要に応じてブックを開き直し、[データ]→[データの取得]→[従来のウィザード]からテキストの取り込みを選びます。表示名は版によって異なります。

1段階目で区切り文字で分かれたデータを選び、文字コードと読み込み開始行を確認します。2段階目でカンマなどの区切り文字、文字列の引用符を指定し、プレビューで列が正しく分かれることを見ます。3段階目で番号列をクリックし、列のデータ形式を[文字列]にします。別の番号列にも同じ指定を繰り返します。

金額列まで文字列にする必要はありません。各列の見出しに表示される型を確認してから完了し、データの配置先を選びます。既存データに重ならない空のシートを使うと、上書きを避けられます。使い終わって表示を戻す場合は、オプションのレガシウィザードのチェックを外します。

5. 自動データ変換の設定は適用範囲に注意する

対応するMicrosoft 365やExcel 2024では、[ファイル]→[オプション]→[データ]に自動データ変換の設定があります。先頭の0を削除して数値に変換する処理や、長い数値を15桁の精度で数値化する処理を無効にできるため、CSVを直接開く運用でも変換を抑えられます。

この設定がない版では、前述の取り込み時の列指定を使います。また、このオプションを変えればPower Query内の型変換も不要になる、というわけではありません。Power Queryではクエリに記録された型指定を確認します。既存のブックですでに失われた0や末尾桁を復元する設定でもありません。

アプリ全体の設定なので、変更前の状態を記録し、他のCSVや通常の入力への影響も確かめます。0を保つ代わりに数値が文字列として入る列が増えることがあります。特定の取り込みだけに条件を持たせたい場合は、列の型を明示したクエリとして保存する方法が管理しやすくなります。

6. 0の補充で戻せる場合と戻せない場合

「顧客コードは必ず5桁」と決まっていて、失われたのが先頭0だけなら、123から00123を作ることはできます。別列で次の式を使います。ただしこれは既知の桁数に合わせて補う処理で、元ファイルを復元しているわけではありません。

=TEXT(A2,"00000")

3桁、5桁、7桁の番号が混在していた場合、123が123だったのか00123だったのかは、この式では判断できません。また、16桁以上の番号を数値に変換して末尾が変わった場合は、先頭0を補っても元へ戻りません。Excelの数値精度は15桁なので、計算しない長い番号は最初から文字列で保持します。

表示形式の00000は数値123を00123と見せるだけで、文字列の5桁コードとは異なります。別システムへの受け渡しでは、画面の見た目だけでなく書き出されたファイルの値を確認します。復元できる前提がない番号に、一律で桁埋めをかけないでください。

7. 更新と保存の前に代表行を照合する

[閉じて読み込む]でシートへ出した後、例の00123、00007、0123456が残っていることを確かめます。顧客コードがA2なら、別セルで=ISTEXT(A2)がTRUE、=LEN(A2)が5になることも確認できます。金額列は合計2000となるかを見ます。

Power Queryの出力表を手入力で修正しても、次回の更新で上書きされる可能性があります。継続的な変換ルールはクエリ側に残し、修正が必要な原データは出力元へ戻って直します。更新後にも先頭0、長い番号、空欄、日本語を含む代表行を点検してください。

クエリやセル型を保つ作業用ファイルはExcelブックとして保存します。CSVとして保存し直す必要がある場合は別名にし、保存後にテキストとして開いて出力内容を確認します。再びExcelで直接開いたときの表示だけでは、保存時と読み込み時のどちらで変わったか分からなくなります。

8. 失敗したら原本からやり直せる状態を保つ

取り込みがおかしいときは、原CSVの文字、区切りと文字コード、型変換の順序、読み込み先の順に調べます。元のCSVを残していれば、加工済みの番号を推測で直すより、正しい型で読み込み直せます。

番号列を文字列、金額や数量を数値として区別し、その設定を次回にも使える形で保存する。これが先頭0の消失を防ぐ基本です。最初の数行が正しく見えるだけで完了とせず、桁の長い値や0で始まる値を確認してから、集計や照合作業へ進みましょう。

📊
Excelトラブル完全解決データベースこの記事以外にも、様々なエラー解決策をまとめています。困った時の逆引きに活用してください。
この記事の監修者
📈

超解決 Excel・Word研究班

企業のDX支援や業務効率化を専門とする技術者チーム。20年以上のExcel・Word運用改善実績に基づき、不具合の根本原因と最短の解決策を監修しています。ExcelとWordを使った「やりたいこと」「困っていること」「より便利な使い方」をクライアントの視点で丁寧に提供します。

🏆
超解決 Excel検定 あなたのExcel実務能力を3分で測定!【1級・2級・3級】