- ベストアンサー
エクセルで2種類の範囲を指定して答えを出すには
タイトルがわかりにくくて申し訳ありません。 導き出したいのは、 A1が10以下でB1が100以下の場合はC1にAを、 同様に A1が10以下でB1が101~200の場合はC1にBを、 A1が10以下でB1が201~300の場合はC1にCを、 A1が10以下でB1が301~400の場合はC1にDを、 A1が10以下でB1が401~500の場合はC1にEを、 A1が10以下でB1が501以上の場合はC1にFを表示させる。 さらに、 A1が11~20でB1が100以下の場合はC1にGを、 A1が11~20でB1が201~300の場合はC1にHを、 ・・・ そして A1が21~30でB1が100以下の場合はC1にLを、 ・・・ と続けたいのです。 C1に入るのは(ここではA~Lと書きましたが)任意の数字です。 A1に入るのは10以下、11~20,21~30,31~40,41~50,51以上の6条件。 B1に入るのは100以下、101~200,201~300,301~400,401~500,501以上の6条件です。 これがB1の条件だけであればIF関数で解決できるのはわかります。 しかし、A1の条件が入る場合のやり方がわかりません。 このようなやり方は可能なのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
| 0|11|21|31|41|51 0| A| G|... 101| B| H|... 201| C| I|... 301| D| J|... 401| E| K|... 501| F| L|... 上記の表がA3~G9に入っているとして =VLOOKUP(B1,A4:G9,MATCH(A1,B3:G3,1)+1) MATCH関数で検索値A1以下の最大値を調べ、相対的な位置を返します。 つまりA1が0から10なら1、11~20なら2となります。 これを列数に見立てVLOOKUP関数を使いB1の値で検索をかけます。
その他の回答 (2)
- mako_sea
- ベストアンサー率47% (62/130)
一例ですが、条件の一覧と、実績(または成績?)を別々に考えてみてはどうでしょうか。 <条件対応コード> A B C D E F 1 条件1 条件2 第一コード 第二コード 結合コード ランクコード 2 10以下 1~100 10 100 10100 A 3 10以下 101~200 10 200 10200 B 4 10以下 201~300 10 300 10300 C 5 10以下 301~400 10 400 10400 D 6 10以下 401~500 10 500 10500 E 7 10以下 501以上 10 600 10600 F 8 20以下 1~100 20 100 20100 G 9 20以下 101~200 20 200 20200 H 10 20以下 201~300 20 300 20300 I 11 20以下 301~400 20 400 20400 J 12 20以下 401~500 20 500 20500 K 13 20以下 501以上 20 600 20600 L 14 30以下 1~100 30 100 30100 M ・ ・ ・ <実績表> I J K L M 1 No,1 Key No,2 Key 第一コード 第二コード LANK 2 5 450 =IF(I7>50,60,(ROUNDDOWN((I7+9),-1))) =IF(J7>500,600,ROUNDUP(J7,-2)) =VLOOKUP(K2&L2,$E$1:$F$45,2,FALSE) ※M列の"$E$1:$F$45"は、条件対応コードのE:F列先頭から終わりです。 文系的な視点になってしまい、スマートではないかもしれませんが。 式の意味を理解しメンテナンスしやすくはあると思います。
お礼
ご回答ありがとうございます。 確認が大変遅くなり、申し訳ありませんでした。 コードを作成するという方法もあるのですね。 参考になりました。 ただ、表が大きくなるのに加えて関数も増加してしまい、 今の私の経験値ではいささか高度な内容でした。 いずれExcelを使いこなせるようになったらもう一度目を通してみたいと思います。 ありがとうございました。
- fujillin
- ベストアンサー率61% (1594/2576)
ヒントを・・・ A1が10以下で、B1が100以下の場合、”A"を表示するにはC1の式を =IF(AND(A1<=10,B1<=100),"A","") とするとできます。(条件を満たさなければ""表示) 36通りあるので、もう一工夫したいところですね。
お礼
ご回答ありがとうございます。 確認が大変遅くなり、申し訳ありませんでした。 このようなやり方も試してみようとしたのですが、ご指摘のように 通りの数が大きくなってしまい、早々に挫折してしまいました。 ただ、おかげさまでIF関数はだんだんわかるようになってきました。 ありがとうございました。
お礼
ご回答ありがとうございます。 確認が大変遅くなり、申し訳ありませんでした。 Masa2072さんの方法が最も単純でわかりやすかったので なんとか成功させることができました。 先日まで別の業務に従事していたため先送りにしておりましたが、 明日からまた本格的にこちらの作業を進めてまいろうと思います。 ありがとうございました。