Excel VBA如何找到最近的数字
我有一个范围(以一定的间隔变化)。对于每一个变化,我想找出最接近0.5的范围内的数字,无论是在上行还是下行。例如,如果我有: 0.42 0.48 0.51 0.53 我想拿0.48和0.51 现在我有这个代码:Excel VBA如何找到最近的数字,excel,vba,range,max,Excel,Vba,Range,Max,我有一个范围(以一定的间隔变化)。对于每一个变化,我想找出最接近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) 我正在计算范围内的最大值,但它非常无用。我不知道如何
Set Rng = Sheet1.Range("L" & FirstRow & ":L" & RangeCount)
MaximumInRange = WorksheetFunction.Max(Rng)
我正在计算范围内的最大值,但它非常无用。我不知道如何获取最大值<0.5,最小值>0.5
谢谢 您只需在范围内循环,通过检查确定数字是否比上一个更好地满足您的标准:
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
Dim Cl As范围
'任意设置最小值和最大值(可能替换为该范围的最小值和最大值):
最小值=0
最大值=100
对于Rng中的每个Cl
如果0.5-Cl<0.5-MinVal和Cl<0.5,则MinVal=Cl
如果Cl-0.50.5,则MaxVal=Cl
下一个Cl
'根据需要输出值:
调试。打印最小值
调试。打印MaxVal
这可能会有帮助:
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
然后将0.48和0.51打印到即时窗口。如果所有数字都低于0.5或所有数字都高于0.5,该怎么办?如果存在1个或2个等于0.5的数字,该怎么办?我肯定有下面和上面的数字,我肯定没有数字=0.5数字之间的分隔符是什么?空间?不,是细胞。它是一列单元格,每个单元格包含一个数字。如您所见,包含这些单元格的范围已在我的代码中定义。谢谢John,非常感谢!
Sub test()
Dim A As Variant
A = BestStraddle(Range("A1:A4"), 0.5)
Debug.Print A(0)
Debug.Print A(1)
End Sub