Excelの00123と123が同じコードとして一致しないのはなぜ?
先頭の0が実データなのか表示形式だけなのかで照合結果が変わります。コードをテキストとして扱う設定と、失われた0を復元できない理由を説明します。
先頭の0が意味を持つ商品コードは、両方の列を「テキスト」として扱います。00123と123が別商品なら数値化して同じ値にしてはいけません。ただし、JOIN SHEETでテキストを選んでも、元データですでに失われた0は復元されません。
見た目と保存されている値は違う場合がある
Excelで数値123に5桁の表示形式を設定すると00123と表示できます。しかし、最初から文字列の00123として保存した値とは異なります。見た目をそろえるだけではコードの意味は確定しません。
架空の登録表には00123の部品Aと123の部品Bが別々にあり、取引表には数値123が入っています。すべて数値にすると別商品の取引を取り違えるおそれがあります。図はこのデータの説明図で、実際の画面ではありません。
両方のコードをテキストにする
- 登録と取引のシートを読み込みます。コードが計算対象の数値ではなく識別番号であることを確認します。
- 登録側の「登録コード」のデータ型バッジを押し「テキスト」を選びます。
- 取引側の「取引コード」も「テキスト」を選びます。数値123は文字列123として扱われます。
- コード同士を接続し「1つ目のシートの全行を保持」を選びます。一致しない登録コードも残して確認できます。
一致しないことが正しい場合もある
| 登録コード | 品名 | 取引コード | 数量 |
|---|---|---|---|
| 00123 | 部品 A | — | — |
| 123 | 部品 B | 123 | 4 |
| 12.5 | 部品 C | 12.5 | 2 |
結果は3行です。00123と123は異なる文字列なので結合されません。別商品を表すなら、この空欄は不具合ではなく意図した結果です。
123を00123にそろえるには?
「すべて5桁で、123は必ず00123を意味する」といった業務ルールを確認し、元データをそのルールで修正して再度読み込みます。テキストへの変更は0の追加や桁数統一を自動で行う機能ではありません。すでに丸められた長い番号も復元できません。
データを作る段階でコード列をテキストとして保存し、読み込み後に先頭の0を含むコードを原本と照合してください。見た目が同じなのに一致しない場合は前後の空白も確認します。
繰り返しの作業を減らす
シートを接続・比較して、必要な結果を確認できます。
この記事はProプランの利用環境を前提としています。
JOIN SHEETを使ってみる ↗Excel・CSVの作業はPCでご利用ください。新しいタブで開くため、作業中のデータは置き換わりません。
サンプルの検証日:
出典
XLookup to lookup data from 2 sheets with leading zeros — Reddit r/excel
公開質問にあるデータ型と表示形式の違いを、架空の部品コードで説明しました。質問者の実ファイルやJOIN SHEETの利用経験を使用したものではありません。