• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル 該当する範囲の名称を返すには?(その2))

エクセルで該当する範囲の名称を返す方法

このQ&Aのポイント
  • エクセルで特定の範囲にあるデータから、条件に合致する名称を取得する方法について教えてください。
  • 資料作成のために、エクセルで職種とグレードに基づいて給与のレンジを判定したいです。
  • 具体的には、エクセルの特定のシートにおいて、職種、グレード、給与額が格納されており、別のシートにおいて職種とグレードが与えられている場合、該当する給与レンジを取得する方法について教えてください。

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

  • ベストアンサー
noname#204879
noname#204879
回答No.2

Sheet2!D2: =INDEX(Sheet1!E$1:E$13,SUMPRODUCT((Sheet1!A$1:A$13=A2)*(Sheet1!B$1:B$13=B2)*(Sheet1!C$1:C$13<=C2)*(Sheet1!D$1:D$13>=C2),ROW(A$1:A$13)))

11manu
質問者

お礼

出来ました!素晴らしいです! 式を読み込んで、自分なりに理解してみます。 大変ありがとうございました。

その他の回答 (1)

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

相当込み入った回答になるので、印刷して、じっくり考えて ●VLOOKUP関数のTRUE型に持ち込む ●ポイントは、職種により、VLOOKUP関数の引くテーブル(セル範囲)を割り出す仕方にある。 ●職種は列方向に(横方向に)下記の例のように組み替えて 表を作る。 ●VLOOKUP関数のTRUE型の利用に都合の良いように給与帯を昇順に並べ変えておく(組み変える) ーーー 例データ 質問のデータを(ここではSheet2とする) 営業職4 営業職3 営業職 4 330,000 339,900 I 営業職 3 270,000 286,600 I 営業職 4 340,000 349,900 II 営業職 3 286,700 303,300 II 営業職 4 350,000 360,000 III 営業職 3 303,400 320,000 III 第1行の「営業職4」などは検索に便利なように(2つに分かれていると面倒)、結合した情報セルを作る。 ーー Sheet3のA1:E1に A列  B列   C列   D列  E列 営業職 3 営業職3 290000 II A列、B列は指定のため入力。 C列は関数=A1&B1で作る。 D列は給与額を入れる。 問題はE列の関数式。 =VLOOKUP(D1,OFFSET(Sheet2!$A$1,0,MATCH(C1,Sheet2!$A$1:$X$1,0)+1,100,3),3,TRUE) 意味は =VLOOKUP(D1,職種+グレードで決まる3列のセル範囲,3列目を採る,TRUE型) VLOOUP関数TRUE型は範囲帯から該当コードをみつける仕組みの関数。 さて職種+グレードから検索に使う表範囲を求める方法 OFFSET(Sheet2!$A$1,0,MATCH(C1,Sheet2!$A$1:$X$1,0)+1,100,3) について MATCH(C1,Sheet2!$A$1:$X$1,0)の部分は、 職種+グレードで決まる最初列を見つけている。2列右から開始なのでずれは+1しておく(OFFSET関数はずれ列数指定するもの) 100はここでは最高100列の意味、3は3列 270,000 286,600 I 286,700 303,300 II 303,400 320,000 III 第2列は要らないと思うが時間がなくて確認不備。 第1列も数を変えるべきかもしれないが時間がなくて確認不備。 ーー 実際のデータの場合チェックケースの件数を十分にしてください。 ーー これよりむつかしい関数の型が2,3あるが、まあそれに次ぐ難しい タイプでしょう。

11manu
質問者

お礼

相当読み込まないと理解できなさそうですね・・・ 印刷して頑張ってみます。 ありがとうございました。

関連するQ&A