- ベストアンサー
ExcelのRANK関数で。
こんにちは。宜しくお願い致します。 ゲームの得点を集計するフォームをエクセルで作成しているのですが、 もしも同点のものがあった場合は、順位をより上のセルに入力されているものが上位になるように設定したいのです。 例) B列(得点) C列(順位) 10 2 20 1 10 3 10 4 と、このような形にしたいのです。 今現在、RANK関数を使用して作成していたのですが、同点の場合に不都合があることに気が付いて、その解決方法がわかりません。 もっとほかの関数を使うべきなのでしょうか? どなたか教えてください。宜しくお願い致します。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
まず、ランク関数で順位を求め、それにそこまで自分と同じ数が幾つあるかを足して-1すればいいのではないでしょうか? =RANK(A1,A:A)+COUNTIF($A$1:A1,A1)-1
その他の回答 (5)
- imogasi
- ベストアンサー率27% (4737/17070)
随時データが増えたり減ったりしないなら 難しいことを考えずとも、連番をオートフィルで振ります 得点+連番でソート オートフィルで連番を振ります。これが求めるものです。
お礼
連番を振る作業列を増やすっていう解釈でいいのですよね? 確かに、これが一番シンプルな考え方かもしれませんね♪ 今回はちょっと複雑になっても作業列を増やさない方が理想的だったのですが、この方法は色々なところで応用できると思うので、参考にさせて頂きます。 まだまだビギナーな私ですが、エクセルって色々なことができて便利ですね。 この度は本当にありがとうございました。
- sige1701
- ベストアンサー率28% (74/260)
=COUNTIF(A:A,">"&A1)+COUNTIF($A$1:A1,A1)
お礼
理想の結果が求められました! ありがとうございます。 関数の意味がイマイチまだ理解しきれていないですが、 がんばって解読してみます♪
kazedaです関数が間違ってました ↓コレでいけると思います・ =IF(B1="","",RANK(B1,$B$1:$B$4,))
お礼
質問の仕方がわかり難かったですね。すみません(TT 同じ順位の2を「2・3・4」に振りたかったので、 残念ながら今回はこの方法ではできなかったです。 でも、今まで$って使ったことがなかったので、今回勉強になりました! ご回答くださいまして、ありがとうございました。
=IF(B1="","",RANK(B1,$K$2:$K$5,)) をc列に 下にコピーで 下記のようになります 2 1 2 2
- EL-SUR
- ベストアンサー率76% (83/108)
作業列を使ってもよければ、こんな感じ p(..) 仮に作業列を F列とします。 F1: =B1+(1-ROW()/100) F4までコピー データが 100を超える場合は /100 を /1000にする。 この F列の数値で順位をつけます。 C1: =RANK(F1,$F$1:$F$4) C4までコピー
お礼
想像もつかないやり方でした! 色々な方法があるのですね。 今回はできれば作業列を使わない方法を探していますが、 また別の機会にこの方法を使えるように、しっかり覚えます! ありがとうございました。
お礼
こちらの方法でも、理想の結果が得られました。 沢山の方法があるのに、気付けない自分がハズカシイ限りです。。。 本当にありがとうございます。