- ベストアンサー
多数の条件式
OR関数の条件式で多数のセルと値を比較する場合、 OR(A1<B1,A1<B2,A1<B3,A1<B4,A1<B5,・・)と記述していますがこれを OR(A1<(B1:B30)(←この記述は使えませんが、、)などのように簡略化した表記はできませんでしょうか?
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
何の問題もありません。 =IF(OR(A1<B1:B30),"A1は小さい","A1は小さくない") (Ctrl + Shift + Enter)
その他の回答 (6)
- sige1701
- ベストアンサー率28% (74/260)
=IF(COUNTIF(B1:B30,">"&A1),~ でもいいですね
お礼
回答ありがとうございます。参考にさせていただきます。
- goomania
- ベストアンサー率56% (84/149)
>OR関数の条件式で多数のセルと値を比較する場合、 >OR(A1<B1,A1<B2,A1<B3,A1<B4,A1<B5,・・)と記述しています・・・ OR関数を使用して A1<B1,A1<B2,A1<B3,A1<B4,A1<B5,・・のいずれかの条件が 成立していれぱTRUEを返すことを実現しようとしているので 配列数式を使ってC1に {=IF(SUM(IF(A1<(B1:B30),1,0))>0,"A1は小さい","A1は小さくない")}・・・・・・・・・式1 ({}は配列数式として入力した結果<数式の入力時に Ctrl キーと Shift キーを押しながら Enter キーを押す>であり、括弧を入力するわけではありません) 上記の方法でOR関数の真偽を判別すると同じ結果が得られます。 #2さんの方法では不等号の向きが変わると、 不等号の向きの変更とあわせて、MAXという関数そのものを変更しなければなりません。 しかし、上記の方法は不等号の向きを変えるだけで済みます。 (当然のことですが"A1は小さい","A1は小さくない"を"A1は大きい","A1は大きくない"に変更する必要はあります) また不等号でなく等号(いずれかが一致するという条件)の場合は、式1のA1<(B1:B30)をA1=(B1:B30)にに変更すればOKです。 {=IF(SUM(IF(A1=(B1:B30),1,0))>0,"A1はB列に等しいものあり","A1はB列に等しいものなし")} さらにOR関数の代わりに、AND関数を使用する場面なら、並列された条件の数が (A1とB1からB30までを比較するとして)30個とすれば、 {=IF(SUM(IF(A1<(B1:B30),1,0))=30,"A1はB列すべてより小さい","A1はB列すべてより小さいとは言えない")} AND関数の真偽を判別すると同じ結果が得られます。 作業列を用意して上記の意味を確認できます。 D1に =IF(A1>B1,1,0) D2に =IF(A1>B2,1,0) D3に =IF(A1>B3,1,0) 以下同様とし最終行の次の行 D31に =sum(D1:D30)と記述することとします。 複数ある条件のうち一つでも成立した場合、D列に1が立つので、D31は0より大きくなります。 つまり、D31が0より大きければ複数あるOR条件のうちいずれかが成立したことを意味します。
お礼
回答ありがとうございます。配列数式を知らなかったので勉強になりました。
- sige1701
- ベストアンサー率28% (74/260)
No3 さんへ ANDの場合にMINになりますね A1=4 B1=1 B2=5 B3=3 の場合で検証してください
- imogasi
- ベストアンサー率27% (4737/17069)
20個の数のうちの、どれでも1つより小さければよい(TRUE)ので =IF($A$1<MIN($B$1:$B$20) $は考えている問題によっては不要かも。 #2のご回答も有るので、あるいは私の間違いか自信がグラつくが。 内容によってはVLOOKUPのTRUE型の利用すべきケースの臭いもする。 具体例を上げないで、自分の思いつきの方式の延長線で解決しようとしている例のような気がする。 回答者の良い解法を出させて、もしあれば自分がまねするのが上達の途。IF文を多用するのは初心者に多いよ。
- sige1701
- ベストアンサー率28% (74/260)
質問の条件であれば A1<MAX(B1:B30)
- yokomaya
- ベストアンサー率40% (147/366)
B1:B30を並べ替えしておけばVLOOKUPが使えますよ。仮にIFの結果入れたい値をC1:C30に羅列するなら=VLOOKUP(A1,$B$1:B30,2)みたいな感じで。
補足
説明不足で申し訳ありません。セルC1にこのように記述しています。 =IF(OR(A1<B1,A1<B2,A1<B3,A1<B4,A1<B5,・・),"A1は小さい","A1は小さくない") この中でB1からB30まですべてについてA1と比較したいと考えています。
お礼
回答ありがとうございます。配列数式を知らなかったので勉強になりました。