プロが教える店舗&オフィスのセキュリティ対策術

エクセルについての質問です。

   A  B   C  D
1    11 22 33
2    10 20 30
3    15 25 36
4    12 24 36
5    18 27 

A列にRANK関数を使い「順位を入れたい」のです。

ただし以下のような決まりがあります。

   (1)D列にて値が33以上の数値を対象とし、
   (2)B列の数値を降順にランク付け

結果としては以下のようになる数式を目指していますがそのような関数はできますでしょうか。

   A   B   C  D
1  3  11 22 33
2     10 20 30
3  1  15 25 36
4  2  12 24 36
5     18 27 


対象がD列だけの数式でしたら
例えばA1のセルに
 =IF(OR(D1<33,D1=""),"",RANK(D1,$D$1:$D$5,FALSE))

と入力し、他のA列へコピーすれば良いと思うのですがさらにその結果を対象とした数式がどうにもよくわかりません。
お分かりの方いらっしゃいましたら教えて頂けますでしょうか。

A 回答 (2件)

 A B C D E


1 3 11 22 33 11
2  10 20 30
3 1 15 25 36 15
4 2 12 24 36 12
5  18 27

1.セル E1 に次式を入力して、此れを下方にセル E5 まで複写
  =IF(D1>=33,B1,"")
2.セル A1 に次式を入力して、此れを下方にセル A5 まで複写
  =IF(ISERROR(RANK(E1,E$1:E$5)),"",RANK(E1,E$1:E$5))
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。
なるほど、列を増やして該当のグループを作るわけですね。列を増やさずにやる方法はやはりないのでしょうか。
参考になりました。ありがとうございました。

お礼日時:2006/02/07 00:08

>列を増やさずにやる方法はやはりないのでしょうか。



RANK関数を使わないやり方でもよろしければ、
A1:
=IF(D1<33,"",SUM(IF(D$1:D$5>=33,IF(B$1:B$5>B1,1)))+1)

配列数式です。
式を入力後、Ctrl+Shiftキーを押しながら Enterで確定してください。
式が { }で囲まれます( 数式バーを見てください )
{ }で囲まれていなかったら、
F2キーを押してから、もう一度 Ctrl+Shift+Enter してみてください。
確定後、A5セルまでフィルコピー

配列数式については参考URLをご覧ください。

RANK関数では、作業列を使わないとできないと思います( たぶん )。
E1:
=IF(D1>=33,B1,"")

↑E5までコピー

A1:
=IF(E1="","",RANK(E1,E$1:E$5))

↑A5までコピー

参考URL:http://pc21.nikkeibp.co.jp/special/hr/
    • good
    • 0
この回答へのお礼

配列数式ですか!私の知識にはないやりかたでした。
参考サイトも拝見させていただき、じっくり考えたいと思います。
良い情報をありがとうございました!

お礼日時:2006/02/07 00:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!