不将空单元格视为零

时间:2016-09-10 12:47:48

标签: excel vba excel-vba

我正在研究一种线性插值函数:

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

如果xsys范围都已完全填充,它可以正常工作,但如果有一个缺失值(空单元格),那么它被视为零,这是令人惊讶的,我期待类型错误。如果单元格包含非数字值,那么我会按预期得到#VALUE!

处理此问题的最佳方法是什么?我是否必须手动检查xs(index)ys(index)xs(index+1)ys(index+1)是否为空,然后返回错误?

2 个答案:

答案 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/