同じ数字なのにif関数では「不一致」になる理由

数字同士をif関数で比較する場合に、

どう見ても、条件を満たしているように見えるのに、
条件を満たしていない扱いになってしまう、

という場合があります。

どう見ても一致しているのに。if関数のバグ?

A1セルとA2セルは、
同一の内容に見えるのに、
if関数で比較すると「違う」と判定されてしまう場合。

原因は、いくつか考えられます。

  1. セルに入力されている数値が違う
  2. 演算誤差が生じている
  3. データ型が違う
  4. まとめ

以下、順番に見ていこうと思います。

1.セルに入力されている数値が違う

書式設定の影響で、
見かけ上同じ数字に見えてしまっているが、

実際に入力されている数値は違う、という場合。

if関数で比較しても一致しません。

ifokashii_1_1

例えば、
以下のように、

  • A1セルに「0.8」
  • A2セルに「1.2」

と入れている状態で、
A1セル、A2セルの書式を「小数点以下の桁数 0桁」
に設定してしまうと、

セルの表示上は、A1セル・A2セルともに「1」に見えてしまいます。

ifokashii_1_2
ifokashii_1_3

でも、if関数で比較をする際には、
A1セル、A2セルに入っている実際の値で比較をします。

「A1セル:0.8」≠「A2セル:1.2」

ですから、
if関数では不一致と判定されます。

2.演算誤差が生じている

小数どおしで比較をする場合には、

「演算誤差」の影響により、
一致しているはずなのに一致しない、という場合があり得ます。

syousuugosa_1

なぜ、こういうことが起きるのか?

詳細は、小数をif関数、vlookup関数に使うときは演算誤差に注意をご覧ください。

3.データ型が違う

例えば、下記のように、
A1セル、B1セルのどちらかの左上に緑三角マークがついている場合。

ifokashii_1_4

if関数が一致しないのは、
データ型が違うことが原因である可能性が高いです。

「データ型」というのは、

エクセルに入力された値を記録する「方法」のことで、

多くの場合、
次の2つの「データ型」のどちらかに分類されます。

  • 数値
  • 文字列

「データ型」なんて
見たことも聞いたこともないかもしれませんが、
それもそのはず。

「データ型」は、エクセルの「隠し属性」のようなもので(笑)、
おおっぴらに語られることはありません。

※実は、「データ型」という言葉自体、
 私が勝手に言っているもので、
 マイクロソフトがオフィシャルに言っているものではありません。

さて、話をif関数に戻します。

if関数で、
「データ型」が違うもの同士で比較をした場合、

たとえ、見た目が同一であっても、
if関数での比較では「不一致」と判定されてしまうのです。

今回の例では、

A1セルは数値の「1」
B1セルは文字列の「1」

が入力されており、

両者のデータ型が一致していないので、
両者を比較しても「不一致」と判定されてしまうのです。

データ型の見分け方

話を簡単にするために、
「数字」同士の比較に限定してみると、

どちらのデータ型に分類されるかは、
セルの書式設定に依存しています。

セルの書式が文字列の場合

データ型は「文字列」

それ以外の書式の場合

データ型は「数値」

つまり、
セルの書式設定が、

  • 片方は文字列
  • 片方は文字列「以外」

になっている状態で、

if関数で、一致しているかどうかの判断を行うと、
仮に、同じ数字が入っていても「不一致」と判断されてしまうのです。

4.まとめ

ということで、
if関数を使うときには、

  • セルの書式設定
  • 小数を条件にする計算式

には細心の注意を払いましょう。

知らないと、ドツボにはまりますよ。

エクセル基礎講座 「無料」動画マニュアル

「経理事務のためのエクセル基礎講座(初級編)」(動画マニュアル 総収録時間162分)を無料プレゼント中です!

このマニュアルで解説していることを一通り学べば、経理事務を行う上で最低限必要となる知識が得られます。

ご登録者の方には、合わせて、公認会計士が実体験を通して身に付けたエクセルを使う技をメールにてお伝えしていきます!

無料動画講座 登録フォーム

※ご登録頂いたメールアドレスに、エクセルを使いこなすための情報を配信するメールセミナー「エクセル倍速講座」も合わせて配信させていただきます。