- ベストアンサー
エクセルの関数で2つの条件に合うものを探す。
エクセルの関数で下記のことをしたいのです。 表(1) T>=0.6 0.6>T>=0.3 0.3>T>=0.15 U<2 A B C 2<=U<3 B B-C D 3<=U<4 C C D 4<=U<6 D C-D D 6<=U E D D 別の表(2)に U T 1.5 0.3 0.9 0.8 5.9 0.13 ・ ・ ・ ・ とあります。 そのためUの値とTの値で表(1)のAからE値を抽出し別の表にAからEを表示したいのです。エクセルの関数(IF,AND,LOOKUP等)を試してみたのですがうまくいきません。できるだけエクセルの関数のみで、よい方法があれば教えてください。よろしくおねがいします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
A B C D E F G H 1 U T 対応値 U\T 0.15 0.3 0.6 2 1.5 0.3 B 0 C B A 3 0.9 0.8 A 2 D B-C B 4 5.9 0.13 #N/A 3 D C C 5 … … … 4 D C-D D 6 … … … 6 D D E C2: =HLOOKUP(B2,F$1:H$6,MATCH(A2,E$1:E$6))
その他の回答 (3)
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
表の作り方がポイントです。こういうときのセオリーは「検査値以 下の最大値とマッチする」「検査範囲は昇順にしておく」ですね。 で、表1を画像のように組み替えます。-999は想定される値の下限 より小さい負の数なら何でもいいです。B列はエラーや空欄対策の ためで、実は=""という空文字列が入っています。肝心の数式は、 J2: =vlookup(G2,$A$2:$E$6,match(H2,$A$1:$E$1,1),1) これだけ。
お礼
ありがとうございます。 表の作り方を変えるだけで、vlookupとmatchで短くできるのですね。 表の作り方が1つのキーになることがわかりました。早速表から作り直して見ます。
- kmetu
- ベストアンサー率41% (562/1346)
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 一例ですが・・・ ↓に画像をアップしてみました。 U・Tの値が ○以上△未満という条件なので 勝手に表1のTの値を昇順に並び替えさせてもらっています。 (○を超えて、△以下という条件なら降順に並び替えます) 表1は実際は水色部分と A~Dが入っている表だけでOKなのですが 理解しやすいように未満の列・行も作っています。 表2のC2セルに =IF(COUNTBLANK(A2:B2)>0,"",INDEX($H$4:$J$8,MATCH(A2,$E$4:$E$8,1),MATCH(B2,$H$1:$J$1,1))) という数式を入れて、オートフィルで下へコピーすると 画像のような感じになります。 尚、質問にではTの値が0.15以上になっていますので U=5.9 T=0.13 の場合はエラーになっています。 以上、参考になれば幸いですが 他に良い方法があれば読み流してくださいね。m(__)m
お礼
ありがとうございます。 INDEXとMATCHは使ったことがなくて関数の本を読んでも、これに使えると思わなかったです。早速試してみます。
お礼
ありがとうございます。 HLOOKUPを使ってもできるのですね。 皆さんのを見ていて表の作り方次第でできることがわかってきました。 もっといろいろ方向を変えて考える事が必要なんですね。