• ベストアンサー

エクセルでの順位付けについて

新たな疑問が生じました。 エクセルで求めた値の順位付けについて質問です。 例えば、下記のような数値に順位をつけたいと思います。 NO1 0.83 NO2 1.29 NO3 1.01 NO4 0.88 NO5 1.01 NO6 0.88 ご覧の通り同数があり、同数の場合は上段のものから順位を付けたいと思います。(数値の小さい順) NO1 0.83 1位 NO2 1.29 6位 NO3 1.01 4位 NO4 0.88 2位 NO5 1.01 5位 NO6 0.88 3位 このような指示を入力するにはどのようにすれば よろしいのでしょうか?(少数点第2位までの表示) 宜しくお願い致します。

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

  • ベストアンサー
  • telescope
  • ベストアンサー率54% (1069/1958)
回答No.3

スマートではありませんが、 C1セルに =IF(COUNTIF($B$1:B1,B1)=2,RANK(B1,$B$1:$B$6,1)+1,RANK(B1,$B$1:$B$6,1)) と入力し、下までコピーすれば出来ます。 同数のものが3つある場合は、さらにスマートさに欠けますが、 =IF(COUNTIF($B$1:B1,B1)=3,RANK(B1,$B$1:$B$6,1)+2,IF(COUNTIF($B$1:B1,B1)=2,RANK(B1,$B$1:$B$6,1)+1,RANK(B1,$B$1:$B$6,1))) 「書式」-「セル」の「表示形式」でユーザー設定に 0"位" とすれば、1位、2位などの表示になります。

kaizu35
質問者

補足

ありがとうございます。 スマートかどうかなど少しも気になりませんよ。 とても解かりやすいです。 2個同数や3個同数の際は、それぞれの数にしか 対応できないのでしょうか? 余分に指示しておくのはできないのでしょうか? たとえば、4個同数の可能性ありとして、初めから4個として 入力しておくことなど。 宜しくお願い致します。

その他の回答 (7)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.8

こんにちは。maruru01です。 C1に、 =SUMPRODUCT((ROUND($B$1:$B$6,2)<ROUND(B1,2))*1)+SUMPRODUCT((ROUND($B$1:B1,2)=ROUND(B1,2))*1) と入力して、下の行へコピーして下さい。

kaizu35
質問者

お礼

どうも有り難うございました。 おかげ様で問題は解決致しました。 たくさんの方々からご回答下さり感謝致しております。

  • telescope
  • ベストアンサー率54% (1069/1958)
回答No.7

>少数点は第2位までの表示にしたいので、その様に指示してありますが、 計算結果の順位付けはその2位以下までも見て、順位付けを 行っているのでしょうか? 「書式」-「セル」-「表示形式」の「数値」で 小数点以下の桁数を「2」にしているのなら、 以下の数値はすべて 0.83 と表示されます。 表示がそうなっているだけで、計算や参照は、元の数値でなされます。 0.825 0.826 0.827 0.828 0.829 0.830 0.831 0.832 0.833 0.834 見た目は0.83になっていても、0.825と0.834では、同じ数値にはなりません。 ROUND関数で丸める必要があります。

kaizu35
質問者

お礼

何度もありがとうございます。 とても丁寧で解かりやすいアドバイスに感謝致します。 上記の通り実行しまして、思い通りの表になりました。 本当にお世話になりました。

  • sashichan
  • ベストアンサー率39% (13/33)
回答No.6

#2です。 表示されていない桁の事でお悩みのようですね。 エクセルの数式では通常表示されていない細かい数値まで用いて計算されます。 推察するに、現在表示している0.83などの数値のセル(仮にB列とします)には数式が入っているようですが、その数式のセルを下記のように変更してみてください。 =ROUND(現在入っている数式,2) これでこのセルの数値が小数点以下2桁になります。 その後、#2でお答えしたようにC列に式を入力すると、求める回答が得られると思います。 あとは#3さんの回答にもあるように書式を設定すれば○位という表示にできます。 また、上記のB列には数式ではなく数値が入っているのでしたら、C1に =ROUND(B1,2) と入力し、下方にコピーします。 そしてD1に =RANK(C1,C$1:C$6,1) と入力し、更にC2に =RANK(C2,C$1:C$6,1)+COUNTIF(C$1:C1,C2) と入力して、D2をD6までコピーすれば出来ます。

kaizu35
質問者

お礼

何度もアドバイスをありがとうございます。 お教えいただいた通り行いまして、解決致しました。 とても感謝致しております。

  • snoopy64
  • ベストアンサー率42% (337/793)
回答No.5

C1=B:B*10^5+ROW() D1=RANK(C1,C:C,1) これらを下方へコピー 頑張ってください(^o^)丿

kaizu35
質問者

お礼

お忙しいところをわざわざありがとうございました。 大変助かりました。 問題は解決致しました。

  • telescope
  • ベストアンサー率54% (1069/1958)
回答No.4

IF関数は最大7つまでネスト出来ますから、可能性があるなら、はじめから対応しておけます。 同数が、4個の可能性があるなら、 =IF(COUNTIF($B$1:B1,B1)=4,RANK(B1,$B$1:$B$6,1)+3,IF(COUNTIF($B$1:B1,B1)=3,RANK(B1,$B$1:$B$6,1)+2,IF(COUNTIF($B$1:B1,B1)=2,RANK(B1,$B$1:$B$6,1)+1,RANK(B1,$B$1:$B$6,1)))) 同数が、5個の可能性があるなら、 =IF(COUNTIF($B$1:B1,B1)=5,RANK(B1,$B$1:$B$6,1)+4,IF(COUNTIF($B$1:B1,B1)=4,RANK(B1,$B$1:$B$6,1)+3,IF(COUNTIF($B$1:B1,B1)=3,RANK(B1,$B$1:$B$6,1)+2,IF(COUNTIF($B$1:B1,B1)=2,RANK(B1,$B$1:$B$6,1)+1,RANK(B1,$B$1:$B$6,1)))))

kaizu35
質問者

補足

何度もありがとうございます。 同数値の個数の問題は判りました。 先ほど試してみましたが、同数値の順位付けがうまく いかないようです。 少数点は第2位までの表示にしたいので、その様に指示してありますが、 計算結果の順位付けはその2位以下までも見て、順位付けを 行っているのでしょうか? どのように設定を変更すればよくなりますでしょうか。

  • sashichan
  • ベストアンサー率39% (13/33)
回答No.2

すいません。質問を良く読んでいませんでした。数値の小さい順というのを見逃していましたので再度回答します。 A列、B列に NO1 0.83 NO2 1.29 NO3 1.01 NO4 0.88 NO5 1.01 NO6 0.88 と入力されているとして、 C1に =RANK(B1,B$1:B$6,1) と入力し、更にC2に =RANK(B2,B$1:B$6,1)+COUNTIF(B$1:B1,B2) と入力して、C2をC6までコピーすれば出来ます。 少数点第2位までの表示との事ですが、実際にはもっと第3位以下の小さい数値まで入っているのですか? その場合は一度Round関数で隣の列にRoundした数値の列を作成してからすると良いと思います。

kaizu35
質問者

補足

実際には割り切れていないものもあると思いますが、 便宜上少数点第2位までで、ランク付けを行いたいと おもっております。 何度もありがとうございます。

  • sashichan
  • ベストアンサー率39% (13/33)
回答No.1

A列、B列に NO1 0.83 NO2 1.29 NO3 1.01 NO4 0.88 NO5 1.01 NO6 0.88 と入力されているとして、 C1に =RANK(B1,B$1:B$6) と入力し、更にC2に =RANK(B2,B$1:B$6)+COUNTIF(B$1:B1,B2) と入力して、C2をC6までコピーすれば出来ます。

kaizu35
質問者

お礼

ありがとうございます。早速試してみますね。

関連するQ&A

専門家に質問してみよう