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' などと指定すると、数式がセットされていても空白だと判定されます。
ご質問は下の 「コメントを書く」 からお願いします。
ExcelやVBA全般に関わる質問で、比較的簡単にお答えできるものはできる限り回答したいと思います。
回答を公開でなくメールでやり取りしたいという場合は、その旨記載していただければ非公開で回答することも可能です。
有償での作業依頼は非公開にしますので、条件等をお知らせください。