- ベストアンサー
OR関数 困っています(><。)
excel関数で複数条件の組合せに悩んでいます。 U20=10か空白だったらK20をAQ16~AV24から探して5列目を表示し、 「5列目&AQ26」を表示させる。 もしくは、U20=5だったら、K20をAQ16~AV24から探して5列目を表示し、 「5列目&AQ27」を表示させたいです。 下記の式、どこが間違っているでしょうか。 #VALUEが出てしまいます。 =OR(IF(OR(U20=10,U20=""),"",IF(ISERROR(VLOOKUP(K20,$AQ$16:$AV$24,5,TRUE)&$AQ$26),"",VLOOKUP(K20,$AQ$16:$AV$24,5,TRUE)&$AQ$26)),IF(U20=5,IF(ISERROR(VLOOKUP(K20,$AQ$16:$AV$24,5,TRUE)&$AQ$27),"",VLOOKUP(K20,$AQ$16:$AV$24,5,TRUE)&$AQ$27),"")) すみません。教えて下さい。。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
なんか、カッコの位置、ずれてません? こういう長い式を一つのセルに一気に書くと間違いやすいので、 短い式を別々にセルに分けて書く方がいいですよ。見栄えを気に されるなら、セルの表示形式でフォントの色を「白」にすれば 見えなくなりますし・・・。 で、ですねえ。とりあえずBA列は空いてるとして。 BA1:=VLOOKUP(K20,$AQ$16:$AV$24,5,TRUE)&$AQ$26) BA2:=VLOOKUP(K20,$AQ$16:$AV$24,5,TRUE)&$AQ$27) これが探し出す「結果」ですよね。でも相手なしエラーもあるかもなので、 BA3:=IF(ISERROR(BA1),"",BA1) BA4:=IF(ISERROR(BA2),"",BA2) これでエラーが消せます。で、これを表示するのは「U20=10か空白」で BA3、「U20=5」でBA4になりますよね BA5:=IF(OR(U20=10,""),BA3,"") BA6:=IF(U20=5,BA4,"") で、このどちらかを表示するんですが、U20=5とU20=10は排他ですよね。 ですから何も考えず"&"でひっつけて問題無い筈。 =BA5&BA6 これが求める結果の筈です。 式の中にVLOOKUPを多用すると処理速度が落ちることがあります。セルを 分けることは処理速度向上になることもありますし、何より「後で見て 中間結果も把握できるので分かりやすい」ですよ。
その他の回答 (1)
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
一番外側がor関数だと、帰ってくる値はTRUEかFALSEかエラーです。 そこが大きな間違いですね。で、#valueエラーになるのはその一番 外側のor関数に空白か文字列しか与えてないから。 まず、「K20をAQ16~AV24から探して5列目を表示」する条件を整理 しましょう。「U20が5、10、空白のいずれか、かつK20がAQ16~AQ24 で見つかる」ですね。それ以外は全部空白を返します。次に、後ろ にAQ27を付けるかAQ26を付けるかは、U20が5かそれ以外(10または空 白)かで決まります。 =if(and(or(U20=5, U20=10, U20=""), not(iserror(match (K20,AQ16:AQ24,0)))), vlookup(K20,$AQ$16:$AV$24,5,FALSE)&if (U20=5,$AQ$27,$AQ$26), "") こんな感じかなぁ。
お礼
早速のご回答、ありがとうございました。 OR関数の初歩的なところから解っていませんでした。 grumpy_the_dwarfサマのように、 式を整理しながら、答えを求めようと思います。 ありがとうございました。
お礼
早速のご回答、有難うございました。 とても丁寧に説明頂き、無事求めていた結果がでました。 >こういう長い式を一つのセルに一気に書くと間違いやすいので、 短い式を別々にセルに分けて書く方がいいですよ。 >見栄えを気にされるなら、セルの表示形式でフォントの色を 「白」にすれば見えなくなりますし・・・。 >式の中にVLOOKUPを多用すると処理速度が落ちることがあります。セルを 分けることは処理速度向上になることもありますし、何より「後で見て 中間結果も把握できるので分かりやすい」ですよ。 なるほど~の連続です。 これから、excelをさわる上でとても参考になりました。 本当に有難うございました。