2017-04-13 9 views
0

私は、範囲の最大値を見つけて、最大値が位置する行を返す簡単なコードを持っています。なんらかの理由で、MatchError 2042を返す場合がありますが、ほとんどの場合、正常に実行されます。探している値が同じ範囲の最大値である場合、範囲内で一致するものを見つけることができないのはどうですか?Application.Match()が矛盾しているのはなぜですか?

この範囲の値は、有効数字の多いパーセンテージです(例:0.992149823976789%)。

Sub test() 

dim rng as range 

Set rng = Range("A1:A100") 

rng_max = application.max(rng) 

max_row = application.match(cdbl(rng_max), rng.value, 0) 

End Sub 
+1

を 'rng_max'が宣言、なぜあなたは' CDBL(rng_max) '適用されますされ、いつそれが起こるんどのように同じこと( 'rng'または' rng.value'のどちらかで、両方ではなく)で 'max'と' match'の両方を呼び出しますか? – GSerg

+0

私はどこでもrng_maxを宣言していません。私はCDblを使っていますが、マッチで問題があることについてここで別の投稿を見ました。 rngの代わりにrng.valueを使用してみましたが、それが役立つかどうかを確認しましたが、いくつかの値は有効でしたが、明らかにすべてではありませんでした。それは何もしないかもしれないが、私はそれが必ずしも傷つけるとは思わなかった。 – user1964692

+1

'rng_max'を何か(' Double'のような)として宣言してください。 'CDbl'を使わず、' max'と 'match'を同じもので呼んでください。 [浮動小数点数の計算は壊れていません](http://stackoverflow.com/q/588004/11683)、最初に値を前後に強制して、それらが正確に一致することを期待すると、あなたのためになります。 – GSerg

答えて

-1

私はcdbl()かを使用wheterそれは素晴らしい何の母校を働いた:

enter image description here

+0

[それはいくつかの値のために働いたが、明らかにすべてではありません](http://stackoverflow.com/questions/43399844/why-is-application-match-is-inconsistent#comment73860897_43399844) – GSerg

+0

"すべての値"のためにそれをテストすることができない無限の実数がありますか? @GSerg – Moreno

+0

正しい。そして、それはまさに私がcdbl()を使うかどうかを気にしないというあなたの声明が理にかなっていない理由です。すべての可能な番号でテストした場合にのみ意味をなさないでしょう。それは不可能なので、あなたの答えは何も証明しません。問題の根本はhttp://stackoverflow.com/q/588004/11683を参照してください。 – GSerg

関連する問題