• ベストアンサー

AND関数に入れる条件を簡略化する方法

A列にA1から順に数字が入力されていて、数字の大きさに例えば A1<A2<A3 という関係があるとき、B3にXと入力し、それ以外の場合何も入力しないとき B3に =IF(AND(A1<A2,A2<A3),"X","") と入力すればよいと思いますが、A1<A2<A3<・・・・・<A100 という条件をすべて満たすとき、B100にXと入力したいとき、同じような条件式を入力しようとすると、AND関数の中に99個も不等式を入れなければなりません(そもそもそんなに条件が入れられるかどうかももわかりませんが)。 簡単に条件式を作る方法はありますか。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.5

#2でえす >理解できるようにはもう少し勉強が必要なようです。 ということなので少し解説。 添付図参照 C2セルに =A1<A2 下へオートフィル 真偽(TRUE/FALSE)の結果が出る ほしい値は すべてTRUEなら × つまり、=IF(AND(A2:A100),"×","") 作業列をひとつの数式にまとめてしまうのが#2で回答した数式(抜粋) =IF(AND(A1:A99<A2:A100),"×","") ただし、このままではANDの中身が表示させるセル(B3)に影響され =IF(AND(A3<A3),"×","") となってしまい おのおのの作業列で行ったような計算をしてくれない。 (「=A2:A100」 とB3セルに入力するとA3セルの値が出てしまう) よって、A1:A99<A2:A100 を99行1列の配列とみなす必要がある そこで登場するのが、[Ctrl]+[Shft] +[Enter] で確定。 配列とみなしてほしい場合に使う。 COUNTの理由は 空白セルや文字の書いたセルがあるとき、どのように処理してよいか質問には書いてなかったため。

blackleon
質問者

お礼

詳しい解説ありがとうございました。 大変勉強になりました。

すると、全ての回答が全文表示されます。

その他の回答 (4)

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.4

No.1です。 > もしお手数でなければ、SUMPRODUCT(1*(A1:A99<A2:A100))=99 という式で A1<A2<A3<・・・・・<A100 という条件がなぜ表現できるのか教えていただけるとうれしいです。 この式は、A1<A2が成り立てば1、成り立たなければ0 と言うのをA99<A100まで(99回)行い、その合計を出して居ます。この値が99と言う事は、全ての条件が成り立ったという事になり、つまりはA1<A2<・・・<A99<A100 と、言う事になります。 こんなもので如何でしょう。

blackleon
質問者

お礼

ありがとうございました。 理解できました。

すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! すでにスマートな回答が出ていますので、 参考程度で目を通してみてください。 かなり泥臭い方法になります。 ↓の画像のようにA列を挿入させてもらい、作業用の列にしています。 元データがB列に移動し、表示させるセルがC3セルになります。 A2セルを =SIGN(B2-B1) として、フィルハンドルでダブルクリック(A100までコピーできない場合はオートフィルで下へA100までコピーします) そしてC3セルに =IF(SUM(A2:A100)=99,"X","") という数式を入れています。 以上、参考になれば幸いですが、 あまりスマートではないですね! どうも失礼しました。m(__)m

blackleon
質問者

お礼

ありがとうございました。私にとってはわかりやすいご回答でした。

すると、全ての回答が全文表示されます。
回答No.2

数値の確認処理も入れてみました =IF(COUNT(A1:A100)<>100,"不足あり", IF(AND(A1:A99<A2:A100),"×","")) [Ctrl]+[Shft] +[Enter] で確定、配列数式です({}で囲まれる)

blackleon
質問者

お礼

ありがとうございます。 理解できるようにはもう少し勉強が必要なようです。

すると、全ての回答が全文表示されます。
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

=IF(SUMPRODUCT(1*(A1:A99<A2:A100))=99,"×","") もっと良い式が在りそうですが、とりあえずこれで如何でしょう?

blackleon
質問者

お礼

ご回答ありがとうございました。 SUMPRODUCTという関数を調べてみたところ、配列の積の和という説明がされていますが、使い方がまだよくわかりません。 もしお手数でなければ、SUMPRODUCT(1*(A1:A99<A2:A100))=99 という式で A1<A2<A3<・・・・・<A100 という条件がなぜ表現できるのか教えていただけるとうれしいです。

すると、全ての回答が全文表示されます。

関連するQ&A