• ベストアンサー

複数の検索条件がある場合の関数

このような条件から、条件に合致したものをあるセルに返したい場合、どのような関数を使うと一番簡単にできるでしょうか? 例)条件1 売上額の範囲      (1000円~10000円、10001円~20000円) 条件2 遅刻回数     0~1回     2~5回 たとえば、売上額が10000円で、遅刻回数が1回なら評価S、      売上額が10000円で、遅刻回数が2回なら評価A      売上額が20000円で、遅刻回数が2回なら評価B などとしたいのですが、このような場合の関数の作り方を教えてください。よろしく願いいたします。

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

B2=売上額、C2=遅刻回数として 遅刻回数/売上額 ______0__1000__10001__20001 0_____A_____S_____SS____SSS 2_____A_____A______B______C 5_____A_____A______A______B のような表を作成上記がAA1:AE4の範囲なら D2=INDEX($AB$2:$AE$4,MATCH(C2,$AA$2:$AA$4,1),MATCH(B2,$AB$1:$AE$1,1)) または D2=VLOOKUP(C2,$AA$2:$AE$4,MATCH(B2,$AB$1:$AE$1,1),TRUE) または D2=HLOOKUP(B2,$AB$1:$AE$4,MATCH(C2,$AA$2:$AA$4,1),TRUE)

akaohanako
質問者

お礼

ありがとうございます。やってみます。

その他の回答 (1)

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

一発でという関数は無いと思います。 ーーーー 無理して関数をネストせずに書いて見ます。 そこで、2列のワーク列とVLOOKUP表を2つ、INDEX用の基準表をやむを得ず使います。 (1)条件1で判別されるデータの入っている列に対し、VLOOKUP関数(TRUE型)でランク記号化します (2)条件2を適用する列に対し、VLOOKUP関数(TRUE型)でランク記号化します (3)(1)(2)の記号組み合わせ表(2次元表)に対し、行列でINDEX関数で表を引き、最終的に評価の記号を得ます ーーー VLOOKUPの表(2つ)の例は G列  H   I    J 0 A 0 X 1000 B 1 Y 10000 C 3 Z 20000 D 5 U 100000 E 7 V 10 W G列とH列は売上額ランク化記号用 I,Jは遅刻回数ランク化用の表の例。 ーーー A-D列のデータ例と結果は(A、Cは入力列、B、Dは後述の関数により導出) A列  B    C   D 12 A 0 X 2345 B 3 Z 11000 C 5 U 20023 D 2 Y 199999 D 8 V 1000 B 11 W 10000 C 6 U 0 A 0 X A列は売上データ、C列は遅刻回数のデータの例 B列の関数  B1に =VLOOKUP(A1,$G$1:$H$4,2,TRUE) を入れてそれを縦方向に式を複写 D列の関数  D1に =VLOOKUP(C1,$I$1:$J$7,2,TRUE) を入れてそれを縦方向に式を複写 ーーー INDEXの(基準に使う)表 最終の評価記号(私の例では、数字コードにしていること、全部違う 数字コードを割り当てているが、同じ数字コードが出るマスがあっても良い。むしろ普通ではあるでしょう。)実際問題にあわせ、実情で表を作ってください。 L1:Q6 X Y Z U V W A 1 2 3 4 5 6 B 7 8 9 10 11 12 C 13 14 15 16 17 18 D 19 20 21 22 23 24 E 25 26 27 28 29 30 売上Aランク、遅刻Zランクは9を与えるという表の例。 ーーーー 最終評価を出す列 E1セルの式 =INDEX($L$2:$Q5,MATCH(B1,$K$2:$K$5,0),MATCH(D1,$L$1:$Q$1,0)) E2以下に縦方向に式を複写。 結果E1:E8 1 9 16 20 23 12 16 1

akaohanako
質問者

お礼

ありがとうございます。がんばってやってみます。

関連するQ&A