#值!命名范围vlookup的vba函数错误

时间:2017-12-21 08:47:01

标签: excel-vba vba excel

我在VBA中有以下功能:

Function weightedAverage(x0, y0, x1, y1, x)
     weightedAverage = y0 + (x - x0) * (y1 - y0) / (x1 - x0)
End Function

Function interpolateLookup(lookupVal As Range, lookupRange As Range, colID As Integer) As Double
     step = 0.01

     x0 = Application.Round(lookupVal.Value, 3)
     y0 = Application.VLookup(x0, lookupRange, colID, True)

     x1 = Application.Round(lookupVal.Value, 3) + step
     y1 = Application.VLookup(x1, lookupRange, colID, False)

     x = lookupVal.Value

     interpolateLookup = weightedAverage(x0, y0, x1, y1, x)
End Function

这里的问题是我的interpolateLookup函数返回一个#VALUE!我传递以下输入时出错:

=interpolateLookup(E5,K3:O803,5)

为什么???

1 个答案:

答案 0 :(得分:0)

真正的问题在于我的脑海。 通过利用我的查找键的精度找到了解决方案:

TextAlign

我的lookupVal具有3位数的精度,我的查找键具有2位数的精度,因此我将lookupVal四舍五入为2位,知道我将在表中具有完全匹配,并且知道它将是我的更低用于插值的带。

感谢您的评论!