質問: (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 宜しくお願いします。
回答: おそらく、f列の計算結果が、小数桁十何桁かで違っているのでしょう。 計算誤差と言われるもので、ご存じ通りコンピュータは2進数で計算します。また、excelは内部計算を小数点以下16桁まで計算します。この際に本来2進数で計算したものを10進数に標記する際に誤差が生じる場合があります。 対策としては、f列の式を =round(sum(a1:e1)-min(a1:e1)-max(a1:e1),3) とround関数などで丸めると微少な誤差を解消できます。