标签:VBA
有时候,不一定会查找到精确的值,如果是这样的话,应该可以找到最接近的值。有很多公式可以实现,然而本文不使用公式,而是使用VBA代码来实现。
下面的VBA代码将遍历一系列单元格,并评估最接近的匹配值。
代码语言:javascript复制Sub NearestValue()
Dim rng As Range
Dim r As Range
Dim Mx As Single
Dim i As Long
Dim target As Integer
'要查找的值所在的单元格
target = Range("D10").Value
'要查找的区域
Set rng = Range([B10], Range("B" & Rows.Count).End(xlUp))
'结果区域
rng.Offset(, 1).ClearContents
Mx = Application.Max(rng)
'遍历单元格并查找
For Each r In rng
If Abs(target - r) < Mx Then
Mx = Abs(target - r)
i = r.Row
End If
Next r
Cells(i, 3) = "匹配"
End Sub
找到最接近值的关键是找到目标(目标匹配的数字)和被评估单元格中的数字之间的最小数字。如果两个值之间的差为零,则有匹配项,否则,范围内最接近零的数字是最接近的匹配项,因为该数字是最接近的。
本示例中,评估的数字在列B中,你可以根据需要进行更改。