低所得の青色申告個人事業主のブログ

開業から経験で得た情報をお知らせしていきたいと思います。

= グローバル ナビゲーション =

【Excel】IF関数の落とし穴【EXACT関数】【ISBLANK関数】


[ スポンサー リンク ]

Amazonのアソシエイトとして、当メディアは適格販売により収入を得ています

IF関数はExcelでよく使う関数ですが、ときどき思った通りの動作をしてくれないときがあります。その一例を紹介します。

 

データ型の不一致(Exact関数)

VLOOKUP関数でもそうですが、見た目がほぼ同じでも数値と文字が異なると一致していると判定されません。

C1セルに以下のような数式をセットします。

  A B C
1 7 7 =IF(A1=B1,"一致","不一致")

同じ '7' ですが、A1は数値、B1は文字です。

そのため、C1は '不一致' と返します。

  A B C
1 7 7 不一致

ともにTEXT関数などで文字に変換して比較すると同じだと判定してくれるのですが、それをしてくれるのが EXACT関数 です。

  A B C
1 7 7 =EXACT(A1,B1)
  A B C
1 7 7 TRUE

ちなみに、EXACT関数は数値の '7' と '7.0' は一致していると判定します。

 

 

ISBLANK関数の落とし穴

私は ISBLANK関数 を好んで使うのですが、おすすめできる関数ではありません。

 ISBLANK関数 は空白はどうかを判定する関数です。

この関数は、数式をセットしたセルに対しては注意が必要です。

A1セルは未入力で、B1、A2、B2セルにそれぞれ以下のように数式をセットします。

  A B
1   =A1&""
2 =ISBLANK(A1) =ISBLANK(B1)

そうすると、以下のように値を返します。

  A B
1    
2 TRUE FALSE

B1は確かに空白なのですが、 ISBLANK関数 は空白でないと判定しています。

実は ISBLANK関数 は、その対象に数式がセットされていると、その数式が返す値に無関係に 'FALSE' を返します。

数式がセットされているかどうかを判定する機会はあまりないと思いますが、なぜかこのような仕組みになっています。

IF関数の条件文に 'B1=""' や 'LEN(B1)=0' などと指定すると、数式がセットされていても空白だと判定されます。

 


ご質問は下の 「コメントを書く」 からお願いします。

ExcelVBA全般に関わる質問で、比較的簡単にお答えできるものはできる限り回答したいと思います。

回答を公開でなくメールでやり取りしたいという場合は、その旨記載していただければ非公開で回答することも可能です。

有償での作業依頼は非公開にしますので、条件等をお知らせください。