PR

Excelで16桁以上の数字が勝手に変わる原因|15桁の制限と正しく入力する方法

Excelで16桁以上の数字が勝手に変わる原因|15桁の制限と正しく入力する方法 Excel
記事内に広告が含まれています。

Excelで管理番号や会員番号などを入力したとき、

「16桁の数字を入力したのに、最後の数字が0になった」
「長い数字が勝手に変わってしまった」
「1.23457E+15のような表示になった」

ということはありませんか?

たとえば、

1234567890123456

と入力したはずなのに、

1234567890123450

のように変わってしまうことがあります。

これはExcelの不具合ではなく、Excelで数値として扱える精度が15桁までであることが原因です。
16桁以上の管理番号や商品コードなどは、計算する「数値」ではなく文字列として入力する必要があります。

16桁目が0になってしまった

Excelで16桁以上の数字が0になる原因

Excelでは、数値として正確に保持できる有効桁数が15桁までとなっています。

Microsoft公式の案内でも、16桁以上の番号を数値として入力すると、15桁を超える部分が0へ変わるため、文字列形式を使用するよう案内されています。

たとえば次のようになります。

入力した数字Excelで数値として扱った場合
123456789012345123456789012345
12345678901234561234567890123450
1234567890123456712345678901234500

15桁まではそのまま保持できますが、16桁目以降は正確な数字として保持できません。

そのため、

・会員番号
・顧客ID
・商品コード
・伝票番号
・カード番号
・その他の長い管理番号

など、計算する必要のない数字は文字列として扱うのが安全です。

16桁以上の数字を正しく入力する方法

方法1:入力する前にセルを[文字列]にする

複数の長い番号を入力する場合は、あらかじめセルの表示形式を[文字列]へ変更しておくのがおすすめです。

手順は次の通りです。

■入力前にセルを文字列へ変更する
1. 16桁以上の数字を入力するセルや列を選択
 ↓
2. [ホーム]タブを開く
 ↓
3. [数値の表示形式]から[文字列]を選択
 ↓
4. その状態で番号を入力する

これで、

1234567890123456

と入力した数字を、そのまま保持できます。

ホームタブから文字列を選択
文字列で16桁目も表示された

ポイントは、数字を入力する前に[文字列]へ変更することです。

方法2:数字の先頭に「’」を付ける

1件だけ長い番号を入力したい場合は、先頭に半角のアポストロフィ「’」を付ける方法も簡単です。

たとえば、

'1234567890123456

と入力します。

セル上では、

1234567890123456

と表示され、先頭の「’」は表示されません。

Excelはこのデータを文字列として認識するため、16桁以上でも元の番号を保持できます。
Microsoft公式でも、長い番号を保持する方法としてこの方法が案内されています。

アポストロフィをつけることで文字列化

方法3:Microsoft 365なら自動データ変換をオフにする

Microsoft 365版ExcelやExcel 2024では、16桁以上の数字を自動的に15桁へ変換しないよう設定することもできます。

■自動データ変換をオフにする方法
1. [ファイル]から[オプション]を開く
 ↓
2. [データ]にある[自動データ変換]まで移動する
 ↓
3. [ロング数値の最初の15桁を保持し、科学的記数法で表示する]のチェックを外し、[OK]

この設定をオフにすると、16桁以上の数字は数値へ変換されず、文字列として全桁を保持できます。

ロング数値の最初の15桁を保持し、科学的記数法で表示するのチェックを外す

ただし、この機能はMicrosoft 365やExcel 2024などで利用できる機能です。
古いExcelを使用している場合は、セルを[文字列]にしてから入力する方法が確実です。

すでに末尾が0になった数字は元に戻せる?

注意したいのが、16桁以上の数字を一度数値として入力したあとに[文字列]へ変更しても、元の数字には戻らないことです。

たとえば、

1234567890123456

を入力して、

1234567890123450

へ変わったあとに表示形式を[文字列]へ変更しても、

1234567890123456

には戻りません。

Microsoft公式でも、文字列形式への変更は、すでに入力されている数値には適用されず、その後に入力する値に対して有効になると案内されています。

そのため、元の番号が分かる場合は、

■失われた番号を元データから再入力する
1. セルを[文字列]へ変更
 ↓
2. 元データを確認
 ↓
3. 正しい番号をもう一度入力

という手順で修正しましょう。

「E+」表示になっただけの場合との違い

長い数字を入力したとき、

1.23457E+15

のような表示になることもありますが、これは指数表記と呼ばれる表示です。

ここで重要なのは、「E+表示になったこと」と「16桁目以降の数字が失われたこと」は別の問題という点です。

状態何が起きている?
15桁以内でE+表示表示方法だけが指数表記になっている可能性がある
16桁以上を数値として入力16桁目以降を正確に保持できない
16桁以上を文字列として入力元の番号をそのまま保持できる

Excelの[標準]表示では、大きな数値が指数表記になることがあります。
一方で、Excelの数値精度自体は15桁までのため、16桁以上の場合は表示形式だけを変更しても元の数字は復元できません。

15桁以内の数字がE+表示になっているだけなら、[セルの書式設定]から数値形式を変更することで通常の数字として表示できます。

E+表示の数字を[数値]で変更させ、表示させる

16桁以上の管理番号を正確に残したい場合は、最初から[文字列]で入力しましょう。

👉Excelでは、長い数字以外にも「1-1が日付になる」「先頭の0が消える」「数字がE+になる」など、入力した内容が自動的に変わることがあります。
そのほかの自動変換についてはこちらの記事でまとめています。

CSVなどから長い番号を取り込む場合も注意

CSVなどに16桁以上の管理番号が入っている場合も注意が必要です。

長い番号をExcelが数値として認識すると、同じように15桁を超える部分が失われる可能性があります。

CSVなどから取り込む場合は、[データ]→[テキストまたはCSVから]を使用し、対象の列を文字列として取り込む方法が安全です。Microsoft公式でも、Power Queryで対象列のデータ型を文字列へ変更する方法が案内されています。

Power Queryで自動追加された[変更された型]ステップが対象列を数値へ変換している場合は、その変換を文字列へ置き換えてください。数値化した後の値を文字列へ戻すだけでは、失われた桁は復元できません。

毎回16桁以上の管理番号を扱う場合は、入力・取込時点から「この列は文字列」と決めておくとトラブルを防ぎやすくなります。

まとめ

Excelで16桁以上の数字が勝手に変わるのは、Excelの数値精度が15桁までであることが原因です。

たとえば、

1234567890123456

を通常の数値として入力すると、

1234567890123450

のように16桁目以降が変わる場合があります。

16桁以上の管理番号などを正確に保存したい場合は、

・入力前にセルを[文字列]へ変更する
・先頭に「’」を付けて入力する
・Microsoft 365なら自動データ変換をオフにする
・CSVなどから取り込む場合も列を文字列にする

といった方法を使用しましょう。

また、すでに16桁目以降が0へ変わったあとで[文字列]に変更しても元の数字には戻りません。
元データを確認し、セルを文字列に設定してから正しい番号を再入力してください。

ろじゃー

仕事・子育てに奮闘中の社会人です。
仕事でも日常生活でも、ちょっとでも便利になることが紹介できるブログを書いています!
 
仕事柄、PC操作やエクセル、VBAなどは得意です!
Excel歴は10年以上の事務職。
関数やVBAを活用して、資料作成やデータ分析をはじめとした様々な業務の効率化・自動化に取り組んできました。
 
このブログでは、実際の業務で使える効率化テクニックを発信しています。
「わからない」や「困った」など問題を抱える方や、もっと効率化したいと思っている方に、少しでも役立てれば幸いです!

ご質問・ご相談など、お気軽にご連絡ください。

🥷 「現代で暮らすゆる忍者」ラインスタンプシリーズ公開中!日常や仕事、夫婦の会話など様々なシーンを製作しています
▶ LINEスタンプ一覧はこちら

ろじゃーをフォローする
ご質問・ご相談はこちらへ!
 ろじゃー|日々、ちょっとずつ良くなることを目指すブロガー
Excel歴10年以上。VBAや関数、業務効率化などを発信中。
📩 お問い合わせはこちら
Excel
シェアする
ろじゃーをフォローする

コメント

タイトルとURLをコピーしました