定义返回空白的自定义VBA函数

时间:2019-02-14 16:04:08

标签: excel vba user-defined-functions

如何定义一个Excel函数,如果公式的结果为空白,该函数将返回空白?

如果vlookup发现空白,则返回零。我想将vlookup嵌入到一个函数中,如果vlookup找到一个空白单元格,则返回一个空白而不是零。

我不想输入:

=if(vlookup(args) = "", "", vlookup(args))

我希望具有类似于内置的Iferror函数的语法,其语法为:

=blankreturn(function)

如果函数导致空白,则返回空白,否则返回空白。

我试图定义一个自定义函数,但是当找到一个空白单元格时它仍然返回零

public Function Blankreturn(formula as variant)

If IsEmpty(formula) = True Then
   Blankreturn = ""
Else
   Blankreturn = formula
End if

End Function

甚至更好,尽管我不知道从何处开始:

ifblank(function, "This is blank")

如果第一个参数为空,则返回第二个参数。

谢谢

1 个答案:

答案 0 :(得分:2)

您可以构建自己的特殊VLookup函数

Option Explicit

Public Function MyVLookup(Arg1, Arg2, Arg3, Optional Arg4 = True)
    MyVLookup = Application.VLookup(Arg1, Arg2, Arg3, Arg4)
    If VarType(MyVLookup) = 0 Then MyVLookup = vbNullString
End Function

enter image description here

但是可能使用VBA用户定义功能比使用我可以想象的方法=if(vlookup(args) = "", "", vlookup(args))慢(需要测试)。