Определите пользовательскую функцию VBA, которая возвращает пустое - PullRequest
0 голосов
/ 14 февраля 2019

Как определить функцию 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 голосов
/ 14 февраля 2019

Вы можете создать свою специальную 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)) Я мог бы себе представить (нужно будет проверить).

...