- ベストアンサー
限定範囲内の数値に対するRANK関数について
エクセルについての質問です。 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列へコピーすれば良いと思うのですがさらにその結果を対象とした数式がどうにもよくわかりません。 お分かりの方いらっしゃいましたら教えて頂けますでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>列を増やさずにやる方法はやはりないのでしょうか。 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までコピー
その他の回答 (1)
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))
お礼
早速のご回答ありがとうございます。 なるほど、列を増やして該当のグループを作るわけですね。列を増やさずにやる方法はやはりないのでしょうか。 参考になりました。ありがとうございました。
お礼
配列数式ですか!私の知識にはないやりかたでした。 参考サイトも拝見させていただき、じっくり考えたいと思います。 良い情報をありがとうございました!