我正在研究一种线性插值函数:
Public Function linear_interpolation(xs As Range, ys As Range, x As Double)
Dim index As Integer
Dim x0 As Double, x1 As Double
Dim y0 As Double, y1 As Double
index = Application.WorksheetFunction.Match(x, xs)
x0 = xs(index)
y0 = ys(index)
x1 = xs(index + 1)
y1 = ys(index + 1)
linear_interpolation = ((x1 - x) * y0 + (x - x0) * y1) / (x1 - x0)
End Function
如果xs
和ys
范围都已完全填充,它可以正常工作,但如果有一个缺失值(空单元格),那么它被视为零,这是令人惊讶的,我期待类型错误。如果单元格包含非数字值,那么我会按预期得到#VALUE!
。
处理此问题的最佳方法是什么?我是否必须手动检查xs(index)
,ys(index)
,xs(index+1)
和ys(index+1)
是否为空,然后返回错误?
答案 0 :(得分:0)
如果在单元格中仍然需要0但是要标记NULL或""您可以轻松地使用支票
IF cell.value = VBNullString Then
'do some stuff
End If
答案 1 :(得分:-1)
没有意义重新发明轮子!在我的网站上有linear interpolation function - 我为无耻的插件道歉 - 它抓住了你想要插入的值的最接近的值,这样你就不会#39 ; t必须担心空单元格注册为零:)
底线是您要添加一个等于空字符串的值的检查""
来源:http://wellsr.com/vba/2016/excel/powerful-excel-linear-interpolation-function-vba/