Microsoft Excel|「=」と「exact関数」の違い

Excelで、2つのセルの値が同じかどうかを判定するとき、無条件に「=」を使用して比較していませんか。
Excelで値を比較する方法には、「=」を使用したものだけでなく「exact関数」を使用したものもあり、両者は微妙に異なります。

この記事では、どのような場合に違いが生じるのかをまとめます。

「=」と「exact 関数」の違い

大まかにいうと、「=」を使用した場合、形式の違いを無視して値が一致しているかどうかを比較しており、
「exact関数」を使用した場合は、文字列として比較したときに一致しているかどうかを判定しています。

実際に違いが出るケースを以下にまとめました。

「=」と「exact」関数の違い一覧

2行目|全角の「ア」と半角の「ア」の違い
「=」での比較では「TRUE」になっていますが、exact関数は「FALSE」と判定しています。

3行目|大文字の「ABCD」と小文字の「abcd」の違い
「=」での比較では「TRUE」になっていますが、exact関数は「FALSE」と判定しています。

2行目と3行目から、
「=」での比較においては、全半角の違いや大文字小文字の違いは無視して、その値が比較されていることがわかります。
一方で、「exact関数」においては、厳密に文字列として一致するかどうかが判定されていると言えます。

4行目|「0」とブランク(何も入力されていない状態)の違い
「=」での比較では「TRUE」になっていますが、exact関数は「FALSE」と判定しています。

Excelの内部では「ブランク」と「0」は同じものとして扱われています。
そのため、「=」を使用した比較では「TRUE」となります。
一方、「exact関数」では、文字列として「何もない」という状態と「0という文字がある」状態の違いを判定することができています。

5行目|数値の「1」と文字列「1」の違い
「=」での比較では「FALSE」になっていますが、exact関数は「TRUE」と判定しています。

左右どちらのセルにも半角の「1」が入力されていますが、セルの書式設定が異なります。
左のセルでは書式は「標準」となっており、右のセルでは「文字列」となっています。
入力されているのはどちらも「1」という文字だけなので「exact関数」は「TRUE」を返していますが、
Excelの内部では数値と文字列は違うものとして扱われるため、「=」での比較結果は「FALSE」となっています。

おわりに

「=」での比較と「exact関数」との比較は、一見しただけでは何が違うのかがわかりにくいと思います。
しかし、上記のような違いがあるので、ご自身の行いたいことに合わせて適切な方を選んでいただければと思います。