VBA如何find最接近的数字

我有一个范围(以一定的时间间隔改变)。 对于每一个变化,我想find范围内最接近0.5的数字,无论是在上涨和下跌。 所以,例如,如果我有:0.42 0.48 0.51 0.53

我想抢到0.48和0.51。

现在我有这个代码:

Set Rng = Sheet1.Range("L" & FirstRow & ":L" & RangeCount) MaximumInRange = WorksheetFunction.Max(Rng) 

我正在计算范围内的最大值,但是很没用。 我不知道如何获得最大值<0.5和最小值> 0.5。

谢谢!

这可能有助于:

 Function BestStraddle(R As Range, target As Double) As Variant 'Returns a variant array which consists 'of the largest value < target and 'smallest value > target Dim c As Range Dim v As Variant, lower As Variant, upper As Variant For Each c In R.Cells v = c.Value If v < target Then If IsEmpty(lower) Then lower = v ElseIf lower < v Then lower = v End If ElseIf v > target Then If IsEmpty(upper) Then upper = v ElseIf upper > v Then upper = v End If End If Next c BestStraddle = Array(lower, upper) End Function 

使用A1:A4中的testing数据,如果我运行:

 Sub test() Dim A As Variant A = BestStraddle(Range("A1:A4"), 0.5) Debug.Print A(0) Debug.Print A(1) End Sub 

然后将0.48和0.51打印到即时窗口。

你只需循环遍历范围,检查以确定数字是否符合你的标准比最后一个更好:

 Dim Cl As Range ' Arbitrarily set min and max values (maybe replace this with the min and max values of the range): MinVal = 0 MaxVal = 100 For Each Cl In Rng If 0.5 - Cl < 0.5 - MinVal And Cl < 0.5 Then MinVal = Cl If Cl - 0.5 < MaxVal - 0.5 And Cl > 0.5 Then MaxVal = Cl Next Cl ' Output the values however you need them: Debug.Print MinVal Debug.Print MaxVal