[[20070620160227]] 『IF関数とOR関数の複合について』(みにら) ページの最後に飛ぶ

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

 

『IF関数とOR関数の複合について』(みにら)

=IF(I8="",0,IF(OR(V9=$H$313,V9=$H$314),7,IF(OR(T9=$H$313,T9=$H$314),6,IF(OR(R9=$H$313,R9=$H$314),5,IF(OR(P9=$H$313,P9=$H$314),4,IF(OR(N9=$H$313,N9=$H$314),3,IF(OR(L9=$H$313,L9=$H$314),2,IF(OR(J9=$H$313,J9=$H$314),1,0))))))))

 長くて申し訳ないですが、上の関数を入れるとどうしてもエラーが出てしまいます。
 エラーになって一番最後のorの部分が指定されるのですがなぜでしょうか?
 IF関数とOR関数を組み合わせる際のルールみたいなものがあるのでしょうか?

 宜しければお教え下さいませ。

 エクセルのバージョンはExcel2002
 OSはWindowsXP です。
 お願い申し上げます。

 (oni)削除

  ネストは7つまでだからではないですか?

 (Ohagi)

 衝突しっぱなし〜w
 
 IF関数などの、組合せ(ネスト)には限界があります。
 7つまでのネストしか出来ません。
 
 試しに、
 =IF(I8="",0
 と、後ろの ) を一つ取ってみてください。
 それでしたら動くでしょ?
 
 (キリキ)(〃⌒o⌒)b

 数式の関数の階層が、多いからです。=OR()をこのように換えたらどうでしょう? (6UP)

 =IF(I8="",0,
 IF((V9=$H$313)+(V9=$H$314),7,
 IF((T9=$H$313)+(T9=$H$314),6,
 IF((R9=$H$313)+(R9=$H$314),5,
 IF((P9=$H$313)+(P9=$H$314),4,
 IF((N9=$H$313)+(N9=$H$314),3,
 IF((L9=$H$313)+(L9=$H$314),2,
 IF((J9=$H$313)+(J9=$H$314),1,0))))))))

 以前6UPさんが回答されていたものを参考にしてみました。(ROUGE)
=--LEFT(IF(I8="",0,"")&
IF(OR(V9=$H$313,V9=$H$314),7,"")&
IF(OR(T9=$H$313,T9=$H$314),6,"")&
IF(OR(R9=$H$313,R9=$H$314),5,"")&
IF(OR(P9=$H$313,P9=$H$314),4,"")&
IF(OR(N9=$H$313,N9=$H$314),3,"")&
IF(OR(L9=$H$313,L9=$H$314),2,"")&
IF(OR(J9=$H$313,J9=$H$314),1,0))

 ROUGEさんへ。
 この場合は、すこし状況が異なることも考えられるのでは、ないでしょうか? 
 外側からプライオリティがあるようにも見受けられます。     (6UP)

さっそくのご回答ありがとうございます。
6UPさんのやり方で出来るようになりました。

Rougeさんせっかくご回答頂いたのに
申し訳ございません。
次の参考にさせて頂きたいと思います。

(みにら)


 6UPさんへ。
 どのような状況でしょうか。
 σ(^-^;)には考え付きませんでした。。。orz
 (ROUGE)

 V9=T9、T9=R9などの場合を申し上げています。   (6UP)

 V9=$H$313、V9=T9、T9=R9 の場合、
 =--LEFT("76")=--"7"=7
 となるようにしたつもりですが、ダメでしょうか?
 (ROUGE)

 ROUGEさんへ。

 大変申しわけありません。
 数式をよく拝見せず、事実と異なる掲載をしてしまいました。

 ご提示の数式は、検査の条件の複数一致のプライオリティは、処理済です。
 また、この部分IF(OR(J9=$H$313,J9=$H$314),1,0))で数値変換が保証されています。
 的確、十分な数式です。

 ROUGEさん並びにこの口座をご覧の皆さんに深くお詫び申し上げます。    (6UP)

 いえいえ、いつも勉強させて頂いています。
 これからもご指導よろしくお願いします。(ROUGE)

 =IF(I8="",0,
 max(((V9=$H$313)+(V9=$H$314))*7,
     ((T9=$H$313)+(T9=$H$314))*6,
     ((R9=$H$313)+(R9=$H$314))*5,
     ((P9=$H$313)+(P9=$H$314))*4,
     ((N9=$H$313)+(N9=$H$314))*3,
     ((L9=$H$313)+(L9=$H$314))*2,
     ((J9=$H$313)+(J9=$H$314))*1))

       (Asa)

 IF(OR(V9=$H$313,V9=$H$314),7,"")&
 IF(OR(T9=$H$313,T9=$H$314),6,"")&
 IF(OR(R9=$H$313,R9=$H$314),5,"")&   3条件trueの場合  765 にならないかな???

 Asaさんへ。

 =--LEFT("765")=--"7"=7
 ですよ。

 ところで、ご提示の数式は $H$313=$H$314 の場合はどうなりますか?
 (ROUGE)

 $H$313=$H$314  なら V9=$H$313,V9=$H$314 までする必要もなし
まず有り得ないと解釈
$H$313 $H$314 に数式の結果なら 回避策も できるでしょう
(Asa)
       

 $H$313=$H$314 の場合というのは表現がまずかったかもしれませんが、
 V9=$H$313,V9=$H$314 が同時に成立する可能性が0とはどこにもありませんよね?

 通常Asaさんのような数式を組む場合は、
 (((V9=$H$313)+(V9=$H$314))>0)*7
 とか、
 OR(V9=$H$313,V9=$H$314)*7
 などとすべきと考えます。

 あらゆるケースを想定し、堅牢な数式を組むべきではありませんか?
 (ROUGE)

ネスト回避案の1例であって
>あらゆるケースを想定し
は2の次

(Asa)
765 にならないかな??? は疑問に思っただけの事 


 少なくとも、OR(V9=$H$313,V9=$H$314)*7 とすればネストレベルがひとつ下がりますが?
 回避策というのであれば、もっと少ないネストでかつ堅牢なものを提示する方が良いと考えます。

 >まず有り得ないと解釈
 と仰っている以上、
 >ネスト回避案の1例であって
 というのはどうかと思いますが?
 (ROUGE)

 [[20070620215119]]『ネストの限界について』(みにら)
 別スレ立てちゃいましたよ?(^_^;)

 (Ohagi)

 (ROUGE)さんへ
ネストにこだわりすぎるのもどうかな
所詮数式上のはんだん


 どなたか分かりませんが、別にネストレベルにこだわっているわけではありません。

 すべての発端は↓です。
 > 3条件trueの場合  765 にならないかな???

 本件は、私と6UPさんとのやり取りを見ていただければすべて解決されるべき問題であるはずなのに、それを蒸し返してきたわけです。
 確かな指摘であれば真摯に受け止めます。
 ちなみに本件に対する私の見解を再度掲載しましたが、それに対する返事は一向に得られていません。

 また、提示された数式を確認させて頂きましたが、私が指摘している部分に対する回避処置がされていませんでした。

 > 所詮数式上のはんだん
 と書かれていますので、もう一度よくご覧下さい。
 私が指摘したケース(Asaさんにはありえないと言われましたが)では期待値は得られないと思います。

 (ROUGE)#これ以上、このスレにコメントはつけません。

コメント返信:

[ 一覧(最新更新順) ]


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