【发布时间】:2018-02-04 01:12:08
【问题描述】:
我试图弄清楚如何找到特定范围内的所有数字(在本例中为 1.900 和 2.100 之间)。
到目前为止,我编写的代码能够找到 1.9 和 1.999 之间的数字,但似乎无法找到 2.000 和 2.100 之间的数字。我检查了 For 循环,看看它是否正在完成,所以 Find 函数似乎有问题。
任何解决此问题的帮助将不胜感激。我已经复制了我在下面编写的代码。
Sub FindPeaks()
With Worksheets(1).Range("b1:b500")
Dim i As Double
For i = 1.9 To 2.1 Step 0.001
Set c = .Find(i, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Offset(0, -1).Value = "Peak"
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
Next i
End With
End Sub
【问题讨论】:
-
为什么不直接遍历范围并检查值?我认为使用 Find() 查找特定数字不是一个好方法。
-
所提供的答案将是实现您想要做的事情的更好方法,但是(FWIW)您遇到的问题是由于二进制系统中十进制值的不精确性。如果您在
For语句之后直接包含Debug.Print i语句,您将看到将值增加0.001的效果。 -
感谢您的建议和其他信息!在得到帮助后,我现在已经解决了问题。