if関数の順番 iserrorが認識されない
タイトルは検索用のためぶっきらぼうですが、よろしくお願いします。
以下のように、A列からB列までの日数を求めるのですが、AやBに ””(空白)や #VALUE!エラー が入ることがあるので、IF関数で回避させています。
A B C列
2行 10/1 10/25 =B2-A1+1
(C2は25となる)
↓
=IF(B2="","甲",B2-A1+1)
または
=IF(ISERROR(B2),"乙",B2-A1+1)
ところが、
=IF(ISERROR(A2),"丙",IF(ISERROR(B2),"乙",IF(B2="","甲",B2-A2+1)))
という複合式なら、甲、乙、丙はきちんと判別されるのに、
=IF(B2="","甲",IF(ISERROR(A2),"丙",IF(ISERROR(B2),"乙",B2-A2+1)))
という風に順を変えると、結果は
#VALUE!
になってしまいました。
A B C列
2行 10/1 #VALUE! =IF(B2="","甲",IF(ISERROR(A2),"丙",IF(ISERROR(B2),"乙",B2-A2+1)))
(C2は #VALUE! となる。乙にならない)
また、
=IF(OR(B2="",ISERROR(A2),ISERROR(B2)),"",B2-A2+1)
でも、同じように #VALUE!エラーになってします。
関数の順番を変えただけで、なぜ ISERROR が正常に値を返さないのでしょうか?
補足
さっそくの回答ありがとうございます。 参考になります。 あと、甲乙丙がABCにそれぞれ対応してるような感じがしてきましたが、あってますでしょうか? あとは、そもそも甲乙丙とはどういう区別か知りたいです。