データの整理・集計

Excelの00123と123が同じコードとして一致しないのはなぜ?

先頭の0が実データなのか表示形式だけなのかで照合結果が変わります。コードをテキストとして扱う設定と、失われた0を復元できない理由を説明します。

説明図:登録表のテキスト00123・123・12.5と取引表の数値123・12.5
架空のデータを使った説明図です。実際の画面キャプチャではありません。

先頭の0が意味を持つ商品コードは、両方の列を「テキスト」として扱います。00123と123が別商品なら数値化して同じ値にしてはいけません。ただし、JOIN SHEETでテキストを選んでも、元データですでに失われた0は復元されません。

見た目と保存されている値は違う場合がある

Excelで数値123に5桁の表示形式を設定すると00123と表示できます。しかし、最初から文字列の00123として保存した値とは異なります。見た目をそろえるだけではコードの意味は確定しません。

架空の登録表には00123の部品Aと123の部品Bが別々にあり、取引表には数値123が入っています。すべて数値にすると別商品の取引を取り違えるおそれがあります。図はこのデータの説明図で、実際の画面ではありません。

両方のコードをテキストにする

  1. 登録と取引のシートを読み込みます。コードが計算対象の数値ではなく識別番号であることを確認します。
  2. 登録側の「登録コード」のデータ型バッジを押し「テキスト」を選びます。
  3. 取引側の「取引コード」も「テキスト」を選びます。数値123は文字列123として扱われます。
  4. コード同士を接続し「1つ目のシートの全行を保持」を選びます。一致しない登録コードも残して確認できます。

説明図:両方の列をテキストにして登録表の全行を保持する手順

一致しないことが正しい場合もある

登録コード 品名 取引コード 数量
00123 部品 A — —
123 部品 B 123 4
12.5 部品 C 12.5 2

説明図:123と12.5だけが一致し00123が別コードとして残る3行の結果

結果は3行です。00123と123は異なる文字列なので結合されません。別商品を表すなら、この空欄は不具合ではなく意図した結果です。

123を00123にそろえるには?

「すべて5桁で、123は必ず00123を意味する」といった業務ルールを確認し、元データをそのルールで修正して再度読み込みます。テキストへの変更は0の追加や桁数統一を自動で行う機能ではありません。すでに丸められた長い番号も復元できません。

データを作る段階でコード列をテキストとして保存し、読み込み後に先頭の0を含むコードを原本と照合してください。見た目が同じなのに一致しない場合は前後の空白も確認します。

自分のデータでも試してみましょう

繰り返しの作業を減らす

シートを接続・比較して、必要な結果を確認できます。

この記事はProプランの利用環境を前提としています。

JOIN SHEETを使ってみる ↗

Excel・CSVの作業はPCでご利用ください。新しいタブで開くため、作業中のデータは置き換わりません。

サンプルの検証日:

出典

How to stop Excel from Auto-formatting and making it work like a number crunching program — Super User

XLookup to lookup data from 2 sheets with leading zeros — Reddit r/excel

公開質問にあるデータ型と表示形式の違いを、架空の部品コードで説明しました。質問者の実ファイルやJOIN SHEETの利用経験を使用したものではありません。