質問投稿でgooポイントが当たるキャンペーン実施中!!>>

RANK関数で同点の場合は同位として処理されると思っていたのですが、
なぜか同じ値でも同位で処理されない現象に遭遇して困っています。

RANK(数値、参照、順序)の数値が参照しているセルには、点数を算出する式が
入っています。
計算結果が同じ点数にも関わらず同位として処理されません。

参照するセルの値を数式ではなく直接入力した点数の場合は同位として
処理されます。

ランク関数の仕様として、数式の場合は同位と扱わないようになっていた
記憶もなく調べてもそのような記述のあるページも見当たりませんでした。

これは、バグ何でしょうか?

状態としては、B列のC列の得点差をD列で算出して、このD列の値を用いて
順位を出そうとしています。
D列の結果は、同じ点数で1位にならなければならい2行が片方は1位で
もう片方は2位と表示されていまいます。

A 回答 (4件)

こちらが参考になりませんか。



http://www.efcit.co.jp/cgi-bin2/exqalounge.cgi?p …
    • good
    • 0
この回答へのお礼

ありがとうございます。

確かに原因は、演算誤差だったようです。

小数点が発生するような計算では無かったので
その可能性は考えていなかったのですが
演算誤差ってあるんですね。

計算式にROUNDUPを入れて強制的に小数点以下を切り上げて
対応出来ました。

良い勉強になりました。

お礼日時:2010/12/16 00:58

>計算式にROUNDUPを入れて強制的に小数点以下を切り上げて対応出来ました。



ROUNDUP関数では整数よりわずかに大きいときと小さい時に違う値となるので、正しい計算ができません。

このようなケースでは、すでに回答したように、十分な桁数をとったROUND関数にしてください。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

ROUNDでないとだめなんですね。

お恥ずかしい限りです。

お礼日時:2010/12/16 01:34

>状態としては、B列のC列の得点差をD列で算出して、このD列の値を用いて順位を出そうとしています。



この引き算が小数点を含む計算の場合は、D列の表示されている値は同じように見えても、丸め誤差のため実際は違う値になることがあります。

このようなケースでは、例えば「=D2=D4」のような2つのセルを比較する数式を入力するとFALSEとなります。

また、セルの書式を数値にして小数点以下の桁数を15桁にすると同じ値でないことがわかります。

このような場合の対応法は、D列の数式を以下のような計算式にして、丸め誤差の影響をなくします。

=ROUND(元の引き算の数式,10)
    • good
    • 0

補足です。

計算結果が小数になっていますよね。
バグではありません。
    • good
    • 0

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QRANK関数 同点の場合違う項目で序列を付けたい

質問願います。
EXCELにて、RANK関数を使って順位付けをする事を理解しています。
スポーツの順位を勝ち点順に並べるのですが、総勝ち点が同点の場合、次に総得点で順位を確定させます。

この場合、順位付けする数値を勝ち点を優先参照・総得点を次に参照させる事は出来ますか?
RANK以外の関数も併用すれば良いのでしょうか?

どなたか回答お願い致します。

Aベストアンサー

総勝ち点が例えばA1セルに50のときに総得点がB1セルに10であったとします。この場合には作業列を作ってC1セルには例えば次の式を入力して重みを付けた値にします。

=A1+B1/1000

C列のデータについてRANK関数を使うことにすればよいでしょう。

QRANK関数 順位が同じだった場合の条件が2つあります

RANK関数で求めた結果が同じだった場合、別のフィールドを見に行って順位を同じにしない方法はわかりました。
RANK関数とSUMPRODUCT組み合わせすればいいんですね。

今回は条件が2つあります。
ゴルフの順位を求めたい。
まず結果にて順位を求めました。同じ順位だった場合「IN」の数字を見に行きます。そこでも同じだった場合(「OUT」が違えばありえますよね?)
次に見に行くのが年齢を見に行くそうです。

RANKにSUMPRODCTを2つ組み合わせてみたのですがうまくいきませんでした。

よろしくお願いします

Aベストアンサー

私はゴルフをしないので、スコア等間違っているかもしれませんが、
  A    B   C  D   E    F  ←列
1  氏名  in  out  計  年齢  順位
2  a    15  13  28   18   4
3  b    15  13  28   25   3
4  c    13  15  28   32   2
5  d    16  12  28   27   5
6  e    13  13  26   20   1


(1)スコアが少ない人が上位
(2)同スコアの場合INのスコアが少ない人が上位
(3)さらに同スコアの場合年齢が多い人が上位
の様な感じでよいのでしょうか?

RANK関数は使っていませんが、

=SUMPRODUCT(($D$2:$D$6<D2)+(($D$2:$D$6=D2)*(($B$2:$B$6<B2)+($B$2:$B$6=B2)*($E$2:$E$6>E2))))+1

でどうでしょう?

(1)自分より「計」が少ない人
(2)「計」が同じでInがすくない人
(3)「計」・「In」が同じで年齢が多い人
が何人いるか計算し、その次の順位(+1)にします。

間違っていたらすみません。

私はゴルフをしないので、スコア等間違っているかもしれませんが、
  A    B   C  D   E    F  ←列
1  氏名  in  out  計  年齢  順位
2  a    15  13  28   18   4
3  b    15  13  28   25   3
4  c    13  15  28   32   2
5  d    16  12  28   27   5
6  e    13  13  26   20   1


(1)スコアが少ない人が上位
(2)同スコアの場合INのスコアが少ない人が上位
(3...続きを読む

Q(Excel)RANK関数で同じ値なのに違う順位になる

Excel2000を使用しています。

下記の表を作成して、
 F列には、=SUM(A1:E1)-MIN(A1:E1)-MAX(A1:E1)
 G列には、=RANK(F1,$F$1:$F$4)
を入力していますが、
F2とF3は同じ値になるのに順位が違って出てきます。

確か、RANK関数は同値の場合同じ順位が出てくると思うのですが、
そうならないので困っています。

ちなみに、F列に数式ではなく計算結果を直接入力した場合には
同じ順位が出てきました。

どうしてそのようなことになってしまうのでしょうか?
ご存知の方がいましたら教えてください。


(A) (B) (C) (D) (E) (F) (G)
 9.50  9.20  9.35  9.60  9.45 28.3000  1
 9.40  9.30  9.35  9.55  9.45 28.2000  2
 9.20  9.45  9.40  9.35  9.55 28.2000  3
 9.45  9.30  9.30  9.40  9.50 28.1500  4


宜しくお願いします。

Excel2000を使用しています。

下記の表を作成して、
 F列には、=SUM(A1:E1)-MIN(A1:E1)-MAX(A1:E1)
 G列には、=RANK(F1,$F$1:$F$4)
を入力していますが、
F2とF3は同じ値になるのに順位が違って出てきます。

確か、RANK関数は同値の場合同じ順位が出てくると思うのですが、
そうならないので困っています。

ちなみに、F列に数式ではなく計算結果を直接入力した場合には
同じ順位が出てきました。

どうしてそのようなことになってしまうのでしょうか?
ご存知の方がいましたら教えてくださ...続きを読む

Aベストアンサー

計算精度の問題です。
計算処理をおこなうと、0が
0.00000・・・・01になる場合
があります。
そのため、見た目は一致しているけれど
異なる値になっていると思われます。
ツールメニュー・オプション・計算方法・
「表示桁数で計算する」のチェックをON
して試してください。

Qランク付けするときの同点の処理について

エクセルで、ランク関数を使って順位をつけると、同点の人は同順位になってしまいますよね。

条件を増やして(点と年令などで)同順位の人が無くなるようにしたいのですが、良い方法を教えてください。

エクセル以外での方法でも結構です。

Aベストアンサー

こんにちは

点と年齢であれば
空いてる列に =点×100+年齢 のようにして
それをRANK()で処理すればOKかと思います

1.降順)点数が多く年齢の高い人が上位
  昇順)点数が少なくて年齢が低い人が上位
  =点×100+年齢

2.降順)点数が多く年齢の低い人が上位
  昇順)点数が少なくて年齢が高い人が上位
  =点×100+(100-年齢)

★100歳以上の人も(^^;含まれるなら
 ×100 → ×1000
 100- → 200- 
 ですね!


人気Q&Aランキング