質問: 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 が正常に値を返さないのでしょうか?
回答: 質問の主旨をどのようにとらえていいのか迷いますが・・・ =if(count(a2:b2)=2,b2-a2+1,"日付を入れて下さい") >関数の順番を変えただけで、なぜ iserror が正常に値を返さないのでしょうか? 式の順番に計算するからでは? =if(b2="","甲",~) b2=""の論理演算の時点でエラーとなります。