• ベストアンサー

エクセルで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の条件が入る場合のやり方がわかりません。 このようなやり方は可能なのでしょうか?

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

  • ベストアンサー
  • Masa2072
  • ベストアンサー率51% (94/182)
回答No.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の値で検索をかけます。

rin_2
質問者

お礼

ご回答ありがとうございます。 確認が大変遅くなり、申し訳ありませんでした。 Masa2072さんの方法が最も単純でわかりやすかったので なんとか成功させることができました。 先日まで別の業務に従事していたため先送りにしておりましたが、 明日からまた本格的にこちらの作業を進めてまいろうと思います。 ありがとうございました。

その他の回答 (2)

  • mako_sea
  • ベストアンサー率47% (62/130)
回答No.2

一例ですが、条件の一覧と、実績(または成績?)を別々に考えてみてはどうでしょうか。 <条件対応コード>   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列先頭から終わりです。 文系的な視点になってしまい、スマートではないかもしれませんが。 式の意味を理解しメンテナンスしやすくはあると思います。

rin_2
質問者

お礼

ご回答ありがとうございます。 確認が大変遅くなり、申し訳ありませんでした。 コードを作成するという方法もあるのですね。 参考になりました。 ただ、表が大きくなるのに加えて関数も増加してしまい、 今の私の経験値ではいささか高度な内容でした。 いずれExcelを使いこなせるようになったらもう一度目を通してみたいと思います。 ありがとうございました。

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

ヒントを・・・ A1が10以下で、B1が100以下の場合、”A"を表示するにはC1の式を  =IF(AND(A1<=10,B1<=100),"A","") とするとできます。(条件を満たさなければ""表示) 36通りあるので、もう一工夫したいところですね。

rin_2
質問者

お礼

ご回答ありがとうございます。 確認が大変遅くなり、申し訳ありませんでした。 このようなやり方も試してみようとしたのですが、ご指摘のように 通りの数が大きくなってしまい、早々に挫折してしまいました。 ただ、おかげさまでIF関数はだんだんわかるようになってきました。 ありがとうございました。

関連するQ&A