重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

少々面倒なのですが、どうしても解決できないのでお教えください。
  A   B    C   D
1:結果1 結果2  合計  順位
2:8    8    16    1
3:8.275  7.325  15.6   2
4:7.125  8.475  15.6   3←どうして?
5:6    6    12    4

Cの列は「=SUM(A2,B2)」のようにしています。
Dの列は「=RANK(C2,C$2:C$5,0)」のようにしています。
順位は1、2、2、4となって欲しいのですが、上のように1、2、3、4となってしまいます。
A3、B3、A4、B4の値を変えると1、2、2、4になるのですが、上の値だとどうしてもなりません。

面倒ですが、どうしても解決できないので、お教えください。

A 回答 (7件)

セルC6 に「=SUM(C2:C5)」合計を入れてみます。


   → (59.2)
セルE3 に「=C3/$C$6」
   → (0.26351351351351400)
セルE4 に「=C4/$C$6」
   → (0.26351351351351300)

電卓で 計算すると、
   15.6/59.2=0.26351351351351351351351351351351

小数点15位に誤差がありました。

---

同じ様に別の表計算でやってみました。

セルE3 に「=C3/$C$6」
   → (0.26351351351351300)
セルE4 に「=C4/$C$6」
   → (0.26351351351351300)
誤差がありませんでした。
しかし rank は、上と同じ 1 2 3 4 です。

これを、100倍してみました。
セルF3 に「=E3*100」
   → (26.351351351351400)
セルF4 に「=E4*100」
   → (26.351351351351300)
小数点13位に誤差が出ました。
    • good
    • 0
この回答へのお礼

皆様、ほんとうにありがとうございます。
ある大会での結果発表に影響が出てしまい、責任を感じていたのですがその原因が分からずがっくりきていました。
皆は私の集計ミスだと思っているでしょうが、まさか、Excelの計算そのものに誤差があるとは知りませんでした。
誤差が出るということを知らないという意味ではやはり私のミスか…。

それよりなにより、皆様の丁寧な回答と原因解明の洞察力に敬服します。
ありがとうございました。

お礼日時:2007/07/25 16:01

こちらで大変分かりやすく説明されています。

(対処方法も)
小数点以下を扱う場合には必見だとおもいますよ
http://pc.nikkeibp.co.jp/pc21/special/gosa/index …
    • good
    • 0
この回答へのお礼

さっそく読んでみます。非常に参考になりそうです。ありがとうございます。

お礼日時:2007/07/25 15:55

こんにちは。



すみません、私の前回の#2の回答間違えました。
ワークシートの表には出てきませんが、誤差を確認しました。

>1:結果1 結果2  合計  順位
>2:8    8    16    1
>3:8.275  7.325  15.6   2
>4:7.1255 8.4745  15.6   2←【ここ】
>とどちらも2位となります。
>丸め誤差ゆえと考えればよろしいのでしょうか。

こちらは、同じ値で、15.6 です。
しかし、以下は、誤差が出ています。

>3:8.275  7.325  15.6   2
>4:7.125   8.475  15.6   3

こちらは、同じ15.6でも、等しくありません。「浮動小数点誤差」が発生しています。プログラムの中では、1.77635683940025E-15 の差があります。
    • good
    • 0

多分エクセル特有の小数点以下の誤差のせいだと思います。



合計値を
=ROUNDDOWN(SUM(A3:B3),10)
というようにして、小数点以下10位までを有効数字とみたら解決できるのではないでしょうか?
    • good
    • 0
この回答へのお礼

ありがとうございます。
早速ためしてみます。
でも、そのようにしなければならないなんて、ちょっとショックです。

お礼日時:2007/07/25 15:54

#2 です。



>ただ、同順位が同じ値になるときとならないときがあるというのが分からないのですが・・・。
>たとえば、4:を

>4:7.1255  8.4745  15.6  22

それは、どういう意味ですか? Rank関数は、同位というのは存在しないはずです。

思ったとおりではない例を出していただかないと、ちょっと回答が出来ません。
それは、思ったとおりではない場合は、その計算過程の数値は、他のExcelも同様の解を返します。

それは、小数点が含まれるときは、その小数点以下の数字を違っている部分まで出してみないと、分かりません。同じ計算値だと思ったのが違うことがあります。全ての小数点を含む「演算(足し算・引き算・掛け算・割り算)」に、Excelでは、「揺らぎ」というものが存在します。(ただし、Excel97以上は、多少の補正はされています。かなり奇妙な丸めの補正のようで、根本的な解決は関数に頼るしかありません。)

#1さんのご指摘の内容です。私は、それを、「浮動小数点丸め誤差」と言っています。切捨て、四捨五入など、文字固定法というような、いくつかの措置方法があります。

この回答への補足

丁寧な説明ありがとうございます。
十分理解できていないのかもしれませんが、ヘルプの解説に
・・・・・・・・
RANK 関数では、重複した数値は同じ順位と見なされます。数値が重複していると、それ以降の数値の順位がずれていきます。たとえば、昇順に並べられた整数のリストがあり、そのリストに 10 が 2 度現れ、その順位が 5 であるとき、11 の順位は 7 となります (順位が 6 の数値はありません)。
・・・・・・・・
とあります。下のCの列はsumで計算しています。
  A   B    C   D
1:結果1 結果2  合計  順位
2:8    8    16    1
3:8.275  7.325  15.6   2
4:7.125  8.475  15.6   3←【ここ】
となるのに
4:を
4:7.1255 8.4745
とすると
1:結果1 結果2  合計  順位
2:8    8    16    1
3:8.275  7.325  15.6   2
4:7.1255 8.4745  15.6   2←【ここ】
とどちらも2位となります。
丸め誤差ゆえと考えればよろしいのでしょうか。

補足日時:2007/07/25 12:07
    • good
    • 0

こんにちは。



良く出る質問ですね。同順位の時は、単に上から順位をつけるという考え方って、欧米流なんでしょうね。(^^;

いくつか方法があります。
例えば、こんな方法があります。どれも、あまり短くない式のようです。

=SUMPRODUCT(($C$2:$C$5>C2)*(MATCH($C$2:$C$5,$C$2:$C$5,0)=ROW($C$2:$C$5)-1))+1
($C$2:$C$5)-1 としているのは、もともと、1番目からなので、$A$1 としてよいのですが、紛らわしくなるので、こう書きました。
始まりが、C3からの時は、-2, C4からの時は、-3となり、必ず、行数が、1になるように書きます。

この回答への補足

ありがとうございます。
ただ、同順位が同じ値になるときとならないときがあるというのが分からないのですが・・・。
たとえば、4:を

4:7.1255  8.4745  15.6  22

とすると、ちゃんと22になるのです。

補足日時:2007/07/25 11:12
    • good
    • 0

8.275とか7.475などの数値がありますが、これらの数値は「小数点4桁以降もあるものを表示形式で小数点以下3桁を表示する」にしていませんか?



有効桁数にあまり気を使わなくてもよいならC列の式は
=ROUNDDOWN(SUM(A2,B2),3)
で小数点以下4桁は切り捨てるとよいでしょう

この回答への補足

小数点以下10桁表示するとして、
8.2750000000  7.3250000000  15.6000000000
のようになっても同じなのですが。
他の数値にして合計が同じになるようにすると同順になるのです。

補足日時:2007/07/25 11:10
    • good
    • 0

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