[[20190830172334]] 『ifand関数を続けるとエラーが出る理由が知りたいax(よしおか) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ifand関数を続けるとエラーが出る理由が知りたいです。』(よしおか)

すみません、お手数ですが
教えていただけますか。

AとBの条件が揃えば、C。DとEの条件が揃えば、Dという式を組みたいと考えています。

組み立てた式は以下です。

=IF(AND(K7="総合",(BF7<VLOOKUP(CA7,'ゾーン(計算用)'!$B$4:$E$10,2,FALSE)))=TRUE,"下限以下",IF(BF7>=VLOOKUP(CA7,'ゾーン(計算用)'!$B$4:$E$10,4,FALSE),"オーバー",IF(BF7<VLOOKUP(CA7,'ゾーン(計算用)'!$B$4:$E$10,3,FALSE),"ゾーン?T","ゾーン?U"))),IF(AND(K7="事務",(BF7<VLOOKUP(CA7,'ゾーン(計算用)'!$B$4:$E$10,2,FALSE)))=TRUE,"下限以下",IF(BF7>=VLOOKUP(CA7,'ゾーン(計算用)'!$B$4:$E$10,4,FALSE),"オーバー",IF(BF7<VLOOKUP(CA7,'ゾーン(計算用)'!$B$4:$E$10,3,FALSE),"ゾーン?T","ゾーン?U")))

#valueとなります。
文字列を確認しましたが、文字列はありません。
IF(AND(K7="総合"・・・とIF(AND(K7="事務"・・・の2つの式と捉えた場合、組み合わせてはいけないのでしょうか。
2つの式をそれぞれ単独式とすると式は成立します。分岐が間違っているのではないかとも思ってますが、解決できませんでした。

お手数ですが、どなたかわかる方教えていただけますでしょうか。
よろしくお願いいたします。

< 使用 Excel:Excel2016、使用 OS:unknown >


 単純にいうと 二つのIF関数をカンマでつないでいるだけですよね
 これではエラーになります

 前後の違いは

 K7="総合" と K7="事務"

 だけのようですから ORで判断して

 =IF(AND(OR(K7="総合",K7="事務"),BF7<VLOOKUP(CA7,'ゾーン(計算用)'!$B$4:$E$10,2,FALSE))=TRUE,"下限以下",IF(BF7>=VLOOKUP(CA7,'ゾーン(計算用)'!$B$4:$E$10,4,FALSE),"オーバー",IF(BF7<VLOOKUP(CA7,'ゾーン(計算用)'!$B$4:$E$10,3,FALSE),"ゾーン?T","ゾーン?U")))

 でいいのでは?

(渡辺ひかる) 2019/08/30(金) 18:05


渡辺ひかる様

回答ありがとうございます。
なるほど!理解できました。助かりました。

すみません、前後の違いが、 K7="総合" と K7="事務"だけではなく参照先も異なる場合は
どのように考えたらよろしいでしょうか。同じように、#valueとなってしまいます。。。

=IF(AND(K7="総合",(BF7<VLOOKUP(CA7,'ゾーン(計算用)'!$B$4:$E$10,2,FALSE)))=TRUE,"下限以下",IF(BF7>=VLOOKUP(CA7,'ゾーン(計算用)'!$B$4:$E$10,4,FALSE),"オーバー",IF(BF7<VLOOKUP(CA7,'ゾーン(計算用)'!$B$4:$E$10,3,FALSE),"ゾーン?T","ゾーン?U"))),IF(AND(K7="事務",(BF7<VLOOKUP(CA7,'ゾーン(計算用)'!$B$4:$E$10,2,FALSE)))=TRUE,"下限以下",IF(BF7>=VLOOKUP(CA7,'ゾーン(計算用)'!$B$14:$E$17,4,FALSE),"オーバー",IF(BF7<VLOOKUP(CA7,'ゾーン(計算用)'!$B$14:$E$17,3,FALSE),"ゾーン?T","ゾーン?U")))

(よしおか) 2019/09/02(月) 07:48


↑ごめんなさい、式に間違えが有りました。

=IF(AND(K7="総合",(BF7<VLOOKUP(CA7,'ゾーン(計算用)'!$B$4:$E$10,2,FALSE)))=TRUE,"下限以下",IF(BF7>=VLOOKUP(CA7,'ゾーン(計算用)'!$B$4:$E$10,4,FALSE),"オーバー",IF(BF7<VLOOKUP(CA7,'ゾーン(計算用)'!$B$4:$E$10,3,FALSE),"ゾーン?T","ゾーン?U"))),IF(AND(K7="事務",(BF7<VLOOKUP(CA7,'ゾーン(計算用)'!$B$14:$E$17,2,FALSE)))=TRUE,"下限以下",IF(BF7>=VLOOKUP(CA7,'ゾーン(計算用)'!$B$14:$E$17,4,FALSE),"オーバー",IF(BF7<VLOOKUP(CA7,'ゾーン(計算用)'!$B$14:$E$17,3,FALSE),"ゾーン?T","ゾーン?U")))
(よしおか) 2019/09/02(月) 07:50


 >同じように、#valueとなってしまいます。。。 

 だからIF関数を2つカンマでつないだだけではエラーになりますって

 質問者さんの数式では、それぞれのIF関数で何らかの結果が出ます。
 つまり、2つのIF関数でそれぞれの結果が出るので、2つの値が返ることになります。

 質問者さんが実際にどうしたいのか整理することが必要です

 数式を整理すると
 下記のようになります

IF(AND(条件A,条件B)=TRUE,"a",IF(条件C,"b",IF(条件D,"c","d")))
IF(AND(条件E,条件F)=TRUE,"a",IF(条件G,"b",IF(条件H,"c","d")))

 ここで前者がすべてFALSEで"d"になる場合に、後者のIF関数の評価をすればいいので

IF(AND(条件A,条件B)=TRUE,"a",IF(条件C,"b",IF(条件D,"c",IF(AND(条件E,条件F)=TRUE,"a",IF(条件G,"b",IF(条件H,"c","d"))))))

 とすればいいのではないですか?

 つまりこんな感じです

=IF(AND(K7="総合",BF7<VLOOKUP(CA7,'ゾーン(計算用)'!$B$4:$E$10,2,FALSE))=TRUE,"下限以下",IF(BF7>=VLOOKUP(CA7,'ゾーン(計算用)'!$B$4:$E$10,4,FALSE),"オーバー",IF(BF7<VLOOKUP(CA7,'ゾーン(計算用)'!$B$4:$E$10,3,FALSE),"ゾーン?T",IF(AND(K7="事務",BF7<VLOOKUP(CA7,'ゾーン(計算用)'!$B$14:$E$17,2,FALSE))=TRUE,"下限以下",IF(BF7>=VLOOKUP(CA7,'ゾーン(計算用)'!$B$14:$E$17,4,FALSE),"オーバー",IF(BF7<VLOOKUP(CA7,'ゾーン(計算用)'!$B$14:$E$17,3,FALSE),"ゾーン?T","ゾーン?U"))))))

 対象セル範囲に名前を付けて 数式を見やすくすることも必要かと思います

(渡辺ひかる) 2019/09/02(月) 09:53


渡辺ひかる様

同じこと聞いてしまいました。
お手数をおかけしました。

ご丁寧にありがとうございました。
おかげさまで、計算ができました!
大変助かりました。

(よしおか) 2019/09/02(月) 11:46


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.