次の方法で共有

ワークシート関数の「Rank_Eq」の使い方について

Anonymous
2013-12-19T08:23:00+00:00

ワークシート関数の「RANK.EQ」(Rank_Eq)関数の使用方法について、私の環境ではリファレンスに記載されているとおりに動作しないため、お分かりになる方、教えてください。

A

1 97.8

2 97.4

3 98.5

4 97.7

5 114.9

上記のような数値がセルに入力されているとします。この数値に対して「RANK.EQ」関数を使用すると、結果が次のようになります。

  • B1セルに 「 =RANK.EQ(A1, A1:A5,1) 」:OK
  • B2セルに 「 =RANK.EQ(97.8, A1:A5,1) 」:NG(「#N/A」)

VBAからWorksheetFunctionを使用する

  • Application.WorksheetFunction.Rank(Range("A1"), Range("A1:A5")):OK
  • Application.WorksheetFunction.Rank(97.8, Range("A1:A5")):NG(実行時エラー 1004 発生

MSDN

http://msdn.microsoft.com/en-us/library/office/ff835578.aspx?wa=wsignin1.0

MSDNを見ると、第1引数は「Double」型になっておりますが、数字をCDbl関数、CVar関数で型変換しても同じエラーが発生します。

結果から見ると、第1引数は「Range型」が正しい。となるのですが、これはMSDNの記載が間違っている。ということでしょうか。

情報をお持ちの方、教えてください。

よろしくお願いいたします。

Microsoft 365 と Office | Excel | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

1 件の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2013-12-19T09:32:35+00:00

    同じことを試してみたところ普通に動きます。

    それらの数字をどう入れられたのかによって多少話が違うのですが、#N/Aになるのは、浮動小数点の誤差により、97.8が一致しないと言うだけの話だと思います。

    コンピュータではすべて2進数で表現されるため、小数点以下の数はすべて0.5、0.25、0.125・・・・・

    つまり1/2^nの和として表現されるため、ほとんどの場合循環小数となりますので、見た目が一緒であることが一致することにはなりません。

    ですから、引数の型がRangeであるとか言う話ではなく、単に式の中の97.8と表の中の、97.8が完全に一致していないというだけです。(10E-10と言った微小な差)

    引数にA1を指定している場合は、どちらも同じものを使っているので完全に一致している訳です。

     私見としては、浮動小数点が絡む場合、完全一致を求めるような関数類はお勧めできません。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません