【发布时间】:2017-04-13 19:01:22
【问题描述】:
我有一些简单的代码来查找范围的最大值,然后返回最大值所在的行。出于某种原因,在某些情况下Match 返回Error 2042,但大多数情况下它运行成功。当我正在搜索的值是同一范围的最大值时,它如何在一个范围内找不到匹配项?
该范围内的值是具有许多有效数字的百分比(例如 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
【问题讨论】:
-
rng_max是如何声明的,为什么要申请cdbl(rng_max),当您在同一件事上同时调用max和match时会发生这种情况(rng或rng.value,但不是两者都有)? -
我没有在任何地方将 rng_max 声明为任何东西。在我在这里看到一篇关于 Match 问题的不同帖子后,我使用了 CDbl。我只是尝试使用 rng.value 而不是 rng 来查看它是否会有所帮助,并且它确实适用于一些值,但显然不是全部。它可能无济于事,但我也不认为它一定会受到伤害。
-
尝试将
rng_max声明为某种东西(如Double),不要使用CDbl并在同一事物上调用max和match。 Floating point math is not broken,但是如果您首先来回强制值,然后期望它们完全匹配,那么它将适合您。 -
啊,好酷。现在看来可以了。