こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

EXCELの条件式

たとえばA列に数値が降順に並んでいて、A1の数値がいくら以上、A3の数値がいくら以上、A5の数値がいくら以上の場合、指定したセルにパターン1と出力する条件式を考えています。
また、数値の組み合わせのパターンはパターン2、パターン3と複数あります。
この場合どのように条件式を作ればよいのでしょうか。
マクロ等を使って頂いてもかまいませんので教えてください。

投稿日時 - 2006-12-31 20:49:46

QNo.2636559

困ってます

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

これは新しいタイプの質問ですね。
スマートでないかもしれないが、VLOOKUP関数のTRUE型を使います。
基準表を3つとして
G1:L5に(G、I,K列は昇順に並べておくこと)
0X0H0A
200Y20I5B
600Z50J25C
900U70K50D
1500V120L75E
とする。エントリ数(行数)は各基準で違っていても良い。
x-Y、H-L、A-Eはランクを示す記号です。
データがA,B,C列に有るとして
1503513
5506535
8907845
100064
160015080
D1に
=VLOOKUP(A1,$G$1:$H$6,2,TRUE)
E1に
=VLOOKUP(B1,$I$1:$J$6,2,TRUE)
F1に
=VLOOKUP(C1,$K$1:$L$6,2,TRUE)
と入れて、各列で下方向に式を複写する。
結果C1:E5に
XIB
YJC
ZKC
UHA
VLE
これを1セルに結合する
M1に=D1&E1&F1 下へ式を複写
XIB
YJC
ZKC
UHA
VLE
これの組み合わせにコードを割り振る。組み合わせがすぐ多数になる

そこでまた組み合わせとコードの対応表を使って、VLOOKUPのFALSE型を使ってコード化する。
以上質問を誤解していないか心配ですが。
ーーー
SUMPRODUCT関数で3系列の範囲条件を指定して、コード化する手もありそう。
ーーー
VBAでやってもCASE文で分けるぐらいで、単純なコードになりそうにない。

投稿日時 - 2006-12-31 22:46:45

お礼

お礼が遅くなりました。
なんとかできました。
ありがとうございました。

投稿日時 - 2007-01-08 17:06:12

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

A1=10、A3=5、A5=30のとき、B~E列以下のようににデシジョンテーブルを作成します。(B,C,D列をキーに並べ替えが必要)

B列   C列   D列    E列
5    3    10    パターン1
5    3    20    パターン2
5    5    10    パターン3
5    5    20    パターン4
10    3    10    パターン5
10    3    20    パターン6
10    5    10    パターン7
10    5    20    パターン8
15    3    10    パターン9

任意のセルに
=INDEX(E1:E9,SUMPRODUCT(MAX((B1:B9<=A1)*(C1:C9<=A2)*(D1:D9<=A3)*ROW(D1:D9))))
の式を入れると「パターン8」の答えが得られます
意味はA1の値がB列以上、A3の値がC列以上、A5の値がD列以上の最も大きいパターンを選択しています。(この場合パターン8)

質問では「ある値以上」が複数合致する場合小さい方を選ぶのか、大きい方を選ぶのか明示されていませんが、この応用で対応できそうに思います

投稿日時 - 2006-12-31 21:19:54

お礼

お礼が遅くなりました。
なんとかできました。
ありがとうございました。

投稿日時 - 2007-01-08 17:05:58

ANo.1

条件が抽象的すぎます。「例えば」ではなく、ある程度実用の例を示さないと
=if(and(a1>=いくら,a3>=いくら,a5>=いくら),"パターン1","")
こんな式しか回答されませんよ。

投稿日時 - 2006-12-31 20:56:40

補足

申し訳ありません。補足します。
自分で読み返してもわかりにくかったです。
あと、行と列を間違えてました。すいません。

  A B C D E F G 
1 100 95 90 80 77 75 70…    パターン1
2  97 92 85 82 81 70 69…
3  92 90 88 86 84 82 80…    パターン2

上のような数字が並んでいるとします(行数はもっとあります)。
たとえば、A列目が95以上でC列目が90以上、E列目が75以上でパターン1を指定したセルに出力(上記の場合ですと1行目があてはまる)。
また、複数パターンがありましてA列目が90以上でC列目が86以上、E列目が82以上の場合ですとパターン2を指定したセルに出力していく(上記の場合ですと3行目があてはまる)という感じです。パターンは複数ありパターン同士が重なることはありません。

本当に申し訳ありませんでした。

投稿日時 - 2007-01-01 01:22:28

お礼

お礼が遅くなりました。
なんとかできました。
ありがとうございました。

投稿日時 - 2007-01-08 17:05:41

あなたにオススメの質問