• ベストアンサー

エクセル 該当する範囲の名称を返すには?

業務上、以下の処理をエクセル上でしないといけません。 ・以下のような表がある。とあるセルに値を打つと、 範囲に該当するレンジ名を返す レンジ名  下限   上限 (3)    200,000  300,000 (2)    150,000  200,000 (1)    100,000  150,000 例として、”175,000”とA1に打てば、B1に”(2)”を 返す、という意味合いです。 プログラム書く能力はありませんので、どなたかお分かりに なられる方、ご指導よろしくお願いいたします。

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

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

次の数式は如何でしょうか。 表はシート1のA1:C4範囲とし、シート2で抽出します。 上限・下限値が重複しているので下限値超、上限値以下としています。 B1に=INDEX(Sheet1!A:A,SUMPRODUCT((A1>Sheet1!$B$2:$B$4)*(A1<=Sheet1!$C$2:$C$4)*ROW(Sheet1!$A$2:$A$4)))

11manu
質問者

お礼

早速の回答ありがとうございます。 出来ました! INDEX、ROW関数は使ったことがありませんので、 自分で数式の解読をしてみます。

11manu
質問者

補足

頂いた回答を基に、抱えている問題を解決しようと 思っていたのですが、応用しきれませんでした・・・ 皆様方が相当お詳しそうですので、失礼承知で再度 質問させていただきます。 当方は企業の人事担当者で、昇給資料を作らなければ なりません。グレード別レンジ別評価別に昇給が決まると いう仕組みで、社員の給与とグレードと評価は分かるの ですが、レンジのデータが得られていない状況です。 以下のようなことをしたいのです。 ・データテーブル(Sheet1!A1:E13) 職種 グレード 下限 上限 レンジ 営業職 4 350,000 360,000 III 営業職 4 340,000 349,900 II 営業職 4 330,000 339,900 I 営業職 3 303,400 320,000 III 営業職 3 286,700 303,300 II 営業職 3 270,000 286,600 I 技術職 4 370,000 380,000 III 技術職 4 360,000 369,900 II 技術職 4 350,000 359,900 I 技術職 3 313,400 330,000 III 技術職 3 296,700 313,300 II 技術職 3 280,000 296,600 I ・Sheet2!A1:C3に以下内容を入力 職種 グレード 給与額 営業職 3 310,000 技術職 3 310,000 このときに、Sheet2!Dにそれぞれ”III”、”II” を返したい 長くなって申し訳ないです。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

こんななの、事務で使う場合では有名な VLOOKUP関数のTRUE型で簡単に出来るよう見える。 こんな関数も知らないで、沢山の関数ナリの使い方のポケットを増さないで、仕事をエクセルで処理するというのは??。 ーー 例データ 検索表を例えばF1:G5に 0 A 150000 B 200000 C 300000 D 1000000 のように作る A列に数が入るとして、該当コードをB列対応行に出すには 式 B1に =VLOOKUP(A1,$F$1:$G$5,2,TRUE) 下方向に式を複写する。 結果 A列  B列( 20000 A 0 A 10 A 149999 A 150000 B 199999 B 200000 C 299999 C 300000 D 999999 D 1200000 D 空白のA列に式を複写するとAになるがこれを防ぐのは B1に=IF(A1="","",VLOOKUP(A1,$F$1:$G$5,2,TRUE)) という式に変えると良い。

11manu
質問者

お礼

回答ありがとうございました。 複雑な式に頼らずとも対応できるということで、 勉強になりました。

  • koko88okok
  • ベストアンサー率58% (3839/6543)
回答No.3

IF関数で場合別けするなら、次のような数式でも可能です。 なお、1000,000未満と300,0000を超えた場合は「範囲外」としました。 =IF(AND(A1<300000,A1>=200000),"(3)",IF(AND(A1<200000,A1>=150000),"(2)",IF(AND(A1<150000,A1>=100000),"(1)","範囲外")))

11manu
質問者

お礼

これなら分かります。 ありがとうございました。 実は、表が90行ほどあるため、IF文直接入力では きついなと思って質問した次第でした。 すみません。そこまで書かなければいけなかった ですね。。

  • nobu555
  • ベストアンサー率45% (158/345)
回答No.2

下記数式で如何でしょう。 表はセルD1:F4にあるとして レンジ名  下限   上限 (1)    100,000  150,000 (2)    150,000  200,000 (3)    200,000  300,000 とし、下限を以上、上限を未満とすると =IF(OR(A1<100000,A1>=300000),"範囲外",OFFSET(D1,MATCH(FLOOR(A1,50000),E2:E4),0)) 表に無いレンジは、範囲外の表示にしました。

11manu
質問者

お礼

これも出来ました! でも、考え方がよく分かりません・・・ OFFSET関数、FLOOR関数が初めてで、 関数のヘルプを見ても私のレベルでは理解不能 でございます・・・ 差し支えなければ、考え方を教えてもらえれば 助かります。 (お忙しければスルーで構いません)

関連するQ&A