[[20110309102156]] 『ISERRORを使っても#N/Aが消えない』(ちい) ページの最後に飛ぶ

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

 

 『ISERRORを使っても#N/Aが消えない』(ちい)

 いつもお世話になっております。

 C4とD4の値からH4に時間を出しています。

 C4がブランクの時に#N/Aが出るためISERRORを以下のように入れたのですが
 このエラー表示が消えません。

 =IF(OR(ISERROR(VLOOKUP(C4&"_"&D4,時間帯,9,FALSE)),(VLOOKUP(C4&"_"&D4,時間帯,9,FALSE)=0)),"",VLOOKUP(C4&"_"&D4,時間帯,9,FALSE))

 日にち毎にセルの色を変えているので条件付き書式でエラー表示セルの
 文字色を白にすることもできません。

 この式のどこが間違っているのか、ご教示いただけませんでしょうか。

 どうぞよろしくお願いします。

 (ちい)

 ORの引数にエラーがあったらORの結果はエラー。
 だから
 VLOOKUP(C4&"_"&D4,時間帯,9,FALSE)
 がエラーになるとき、
 OR(ISERROR(VLOOKUP(C4&"_"&D4,時間帯,9,FALSE)),(VLOOKUP(C4&"_"&D4,時間帯,9,FALSE)=0))
 はOR(TRUE,#N/A)になるんで結果は#N/Aエラー。
 そしてIFの条件がエラーだったらIFの結果はエラーなんで結局エラーになっちゃう。

 だから
 =IF(ISERROR(VLOOKUP(C4&"_"&D4,時間帯,9,FALSE)),"",IF(VLOOKUP(C4&"_"&D4,時間帯,9,FALSE)=0,"",VLOOKUP(C4&"_"&D4,時間帯,9,FALSE)))
 のように
 VLOOKUP(C4&"_"&D4,時間帯,9,FALSE)=0
 はVLOOKUP(C4&"_"&D4,時間帯,9,FALSE)がエラーでない場合にだけ判断させないと駄目。
 (春日野馨)

 衝突しちゃいましたが、そのまま載せておきます。。。

 =OR( TRUE , #N/A ) の結果は
 TRUE ではなく #N/A に成ります。

 =IF(ISERROR(・・・),IF(VLOOKUP(・・・)=0,"",VLOOKUP(・・・))
 の様に、VLOOKUP関数がエラーで無かった時に VLOOKUP関数の戻り値を
 確認する様にしてみて下さい。

 ネストで困った時は、一つずつ確認してみると
 良いと思いますよ。

 I4セルに =VLOOKUP(C4&"_"&D4,時間帯,9,FALSE)
 J4セルに =ISERROR(I4)
 K4セルに =I4=0
 L4セルに =OR(J4,K4)
 M4セルに =IF(L4,"",I4)
 フィルドラッグした時に、L列の判定が希望した結果に成っているか確認。

 (HANA)

 春日野馨さま
 HANAさま

 早々にお返事をいただきありがとうございます。

 お二人の別々の説明ですごく分りやすいです。
 式を分解してセルに入れてみるのもなるほどっと。

 ただ、=OR(TRUE,#N/A)の結果が#N/Aになるというのがちょっと。

 もう少し考えてみます。

 取り急ぎご親切なご教示にお礼を申し上げます。
 春日野馨さまが書いて下さった式でうまくいきました。

 ORの結果がエラー(偽)なら、IF関数では偽の場合の処理をするから
 VLOOKUPをそのまま実行して、#N/Aが答えならそのままそれが
 表示されるということでしょうか・・・ORのこと考えてみます。

 ありがとうございました。

 ちい

 エラーと条件が偽とは別物だよ。

 セルに=1=1と入力したらTRUE、=1=2って入力したらFALSEと表示されるように真はTRUE、偽はFALSE。
 IFで条件がエラーだったらそこで真の場合の処理も、偽の場合の処理もしないでエラーを返すようになってる。

 関数では引数にエラーがあると関数の処理をしないでそのままエラーを返すのが多いよ。
 (OR関数もそう)

 追記
 =IF(NA(),1,2)
 と入力したら2じゃなくてエラー(#N/A)になるんでIF関数で条件がエラーの場合には偽の処理を
 するんじゃないってのがはっきりするかな。
 (春日野馨)

 あ〜・・・済みません
 >>=IF(ISERROR(・・・),IF(VLOOKUP(・・・)=0,"",VLOOKUP(・・・))
 >>の様に、VLOOKUP関数がエラーで無かった時に VLOOKUP関数の戻り値を確認
 この式じゃ、下の文章と合ってないですよね。。。

 =IF(ISERROR(・・・),"",IF(VLOOKUP(・・・)=0,"",VLOOKUP(・・・)))
 でした。

 >=OR(TRUE,#N/A)の結果が#N/Aになるというのがちょっと。

 ORに関しては「そう言う物だ」と思って
 付き合って行かなければ成らないレベルの問題だと思います。
 ヘルプに「エラー値を引数に指定すると、エラーになります。」
 とは書いて有りませんが。

 (HANA)

コメント返信:

[ 一覧(最新更新順) ]


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