[EXCELトラップ]同じに見えても違うデータの見破り方と対処方法
関連記事:データクレンジング
【まとめ】

・セルの中身が同じに見えても、データとしては違う場合がある(違って見えても同じ場合もある)。
・判別方法の一例
=セル①=セル② の結果が
「TRUE」⇒「セル①」と「セル②」は同じ
「FALSE」⇒「セル①」と「セル②」は違う。
・同じに見えて違う例
1 数値と文字列
2 小数点以下が隠れている
3 単位が入っている
4 スペースが隠れている
5 改行されている
6 小さな「ヶ」と大きな「ケ」
7 全角と半角
8 ハイフン入りとハイフンなし
【説明】
2つセルを比べることは結構多い
エクセルでは複数(通常は2つ)のセルが同じか否かを確認する機会がよくあります。
例えば
・手入力したデータと、元から入っているデータが同じか
・縦計と横計が同じか
・外部から持ってきたデータが内部データと同じか、など。
あるいは、集計結果(SUMIFSやCOUNTIFS)が合わない、XLOOKUP関数がうまく機能しない、といった際のデータ確認の際にも「データの同一性」を確認する必要が生じます。
2つのデータが同じか否かを調べる一番簡単な方法は、どこかに
「=セル①=セル②」と入れることです。
【まとめ】のとおり、
結果が「TRUE」(真/しん)なら①と②は同じ
「FALSE」(偽/ぎ)なら①と②は違う、ということになります。
見た目が同じでも違うデータ
厄介なのは、見た目は同じに見えるけれど、実は同じでないデータがある、ことです。
いくら2つのセルを見比べてもも、人間には分かりません。
例えば・・・

冒頭にも出したこの2つ。
実は違うデータです。
①は「1」ですが、②は「1.05」なのです。

エクセルでは、こんな「見た目は同じだけれど違うデータ」が、結構出てきます。
逆に「見た目は違うけれど同じデータ」もあります(分かりやすい例:「2025/1/1」と「R7.1.1」)。
以下、「同じに見えて違うもの」と、その対処法を挙げていきます。
1 数値と文字列

同じ「1」でも①は数値、②は文字列です。
そのため、①と②は「FALSE(違う)」とされます。
(判別方法)
・数式バーの頭に「 ’ 」があれば「文字列」
②の「1」は、上の数式バーを見ると「’1」となっています。
頭に「 ’ 」を付けて入力すると、セル内は文字列になります。
「 ’ 」があれば、このセルは「文字列」といえます。
ただし「セルの書式設定」(Ctrl + 1)で「文字列」と指定されていると、「 ’ 」がなくても「文字列」となっているので注意が必要です。
・セル左上に緑三角が出ていれば「文字列」
セルの左上に緑の三角マーク(エラー表示)が出ていれば「文字列かな」と疑えます。
ただし、この緑三角は「エラーを無視する」等の選択で消すこともできるので、消されていると見破れません。

・結論(一番確実で早い方法)
「セルの書式設定」(Ctrl + 1)で「文字列」でないか確認する。
(対処方法)
・「セルの書式設定」(Ctrl + 1)で「文字列」か調べる。
・文字列なら以下のいずれかの方法で数値に戻す。
① 緑三角マークがあれば「数値に変換する」を選ぶ。
② 文字列に1を掛ける
③「=VALUE(文字列)」とする。

2 整数と小数点
同じ「1」でも「違う」ものです。

上でも挙げた例です。
②は整数表示では「1」となっていますが、実際は「1.05」なので、整数である①の「1」とは「違う(FALSE)」とされます。
(判別方法)
・数式バーを見れば、小数点以下の有無が分かります。
・Alt ⇒ H ⇒ 0 で小数点以下が表示されます(押す度に増える。減らすなら Alt ⇒ H ⇒ 9)。
(対処方法)

小数点以下第1位を
四捨五入
・「=ROUND(数値,0)」で四捨五入する(最後の「0」は、小数点以下0桁まで表示する、つまり、小数点以下1桁を四捨五入して整数表示する、という意味)I
・「=INT(数値)」で小数点以下切り捨てる(小数点以下は全て切り捨て)。

(小数点以下切り捨て)
3 単位なしと単位あり(数値と文字列の派生)
下の表では、②の上セルも下セルも「1,000円」ですが、上セルは①と「違う(FALSE)」、下セルは①と「同じ(TRUE)」となっています。

②の上セルが「違う(FLASE)」理由は、「文字列」として入力され、セル内に単位の「円」も入っているからです。

(判別方法)
・数式バーを見れば単位が入っているか分かります。
・「セルの書式設定」を見れば、数値に自動で単位を表示するようになっているか分かります。
(対処方法)
・セル内の単位は削除します。
列指定したら「置換」(Ctrl + H)で一気に消しましょう。上に単位、下は空欄で「すべてを置き換え」押下です。

いずれにせよ、セルに単位を入れるのはダメです。御法度です。
セル内は数値のみとします。
こちらもどうぞ
・セルに単位を入れてはいけない(セルには数値だけ入れる)
②の下セルは数値で「1000」と入っており、「セルの書式設定」(Ctrl + 1)で「円」を付けています。

セルの書式設定(Ctrl + 1)

「#,##0”円”」とあるので、
単位が付き、かつ桁区切り表示されています。
4 スペースでの均等割り
下の図は、①も②も同じ「東京都」ですが、②の上セルは「違う(FALSE)」、下セルは「同じ(TURE)」となっています。

②の上セルはは「東 京 都」と、スペースが入っています。そのため、「東京都」とは「違う」と判断されています。

②の下は「東京都」のままですが、スペースが入っているように見えます。

これは「セルの書式設定」(Ctrl + 1)の「配置」の「文字の配置」の「横位置」で「均等割り付け(インデント)」が選択されているためです。文字間にスペースは入っていません。

このように、文字間にスペースがあると、データの突合ができません。
文字間にスペースを入れてはいけません。御法度です。
(判別方法)
・数式バーを見ればわかると思います。
ただし、一つ一つ見比べるより、下の方法で一気にスペースをなくす方が楽でしょう。
(対処方法)
・範囲指定して、置換(Ctrl + H)で、「検索する文字列」欄にスペースを入れ、「すべて置換」を押下。これを「半角スペース」と「全角スペース」で行います。

5 セル内で改行されている
下の図で①も②も「東京都品川区」と入っていますが、②の上セルは「違う(FALSE)」、下セルは「同じ(TRUE)」とされています。

①のセルは「東京都品川区」と改行なく並んでいますが、「セルの書式設定」の「配置」で「折り返して全体を表する」に☑が入っていると改行されたように見えます。

これに対し、②の上セルは、「東京都」と「品川区」の間に改行が入っています。

このため、①と②の上セルは「違う(FALSE)」ものと判断されます。
なお、②の下は、①と同じく改行がない「東京都品川区」ですが、「セルの書式設定」の「配置」で「縮小して全体を表示する」に☑がされているため、文字サイズが少し小さくなっています(あまり違わない)。でも、①とはデータは同じです。
(判別方法)
これはちょっと難しい。
セルの幅を変えないと分かりません。
あるいは、数式バーを見る。ただし、数式バーが1行だけだと気づきづらいでしょう。
(対処方法)
以下の手順で改行を消します。
① セル(列)を範囲選択
②「置換」(Ctrl + H)の「検索する文字列」に「J」を入れて、「全て置換」を押下。
データとして扱う場合、セル内の改行は御法度です(項目の場合も、項目が計算式の条件になる場合があるので、できるだけ避ける)。
こちらもどうぞ
・セル内で改行する方法(集計データではご法度)
・セル内で改行してはいけない(セル内での改行のマイナス面)
・セル内の改行を削除(消去)する方法
「ヶ」と「ケ」
これは分かりやすいでしょう。
ただし、文字サイズが小さかったり、見づらいフォントだと、気づかない場合があります。
私も、これに気づかす、データが合わずにかなり悩んだことがあります。

(判別方法)
・「違うかも」という目で見比べればすぐにわかると思います(「ちからわざ」な方法ですみません。)
(対処方法)
・上と同じく「置換」で「ケ」を「ヶ」にします。
6 全角と半角
これもわかりやすいでしょう。
全角の数字は「文字列」です。
住所の番地などでは、フォントや文字サイズによっては、全角と半角が判別しづらい場合もあります。

(判別方法)
・これは分かりづらいです。フォントを変えたりも、文字サイズを変えたりするとはっきりする場合が多いです。
(対処方法)
・全角を半角にするなら、ASC関数を使います。
・半角を全角にするなら、JIS関数を使います。
7 ハイフン入りとハイフンなし
①も②もハイフンが入っていますが、「違う」ものと判断されています。
①にはセル内の数字の中にハイフンが入っています。

②は、数字のベタ打ちですが「セルの書式設定」でハイフンが入っています。

(判別方法)
・数式バーを見ればすぐにわかります。
「セルの書式設定」でもわかります。
(対処方法)
・①を「置換」で「-」を取る。ただし、頭「0」が消えるので、②の書式のみをコピーする。
サクッと書こうとおもっのに、4日掛かってしまいました…
お役に立てば幸いです。
他にも、「同じに見えて違う」理由はありますが、上で示したものが基本的なものかと思います。
サクッと書こうと思ったのですが、結局、週またぎになってしまいましたが、お役に立てば幸いです。
(作業 3日 4h)
