Преобразовать текстовую формулу функции в «настоящую» формулу - PullRequest
3 голосов
/ 20 сентября 2019

У меня в ячейке А1 формула VLOOKUP(A2;Table3[#All];3;FALSE).Я изо всех сил пытаюсь найти способ вывести результат предыдущей формулы в B1.

Так что, очевидно, вы можете вычислить текстовую формулу, используя функцию «Evaluate», доступную только в VBA, например:

Function Eval(Ref As String)
Application.Volatile
Eval = Evaluate(Ref)
End Function

Тогда вы сможете вызывать его повсюду на вашем листе, например, если вы поместите 1+2 в ячейку A1 и =Eval(A1) в ячейку B1, вы получите выход 3 в B1.Так что в этом случае работает штрафы!

enter image description here

Хорошо работает, когда вы также «оцениваете» простое число: enter image description here

ОДНАКО

Я обнаружил, что Evaluate не работает с текстами, которые содержат функцию (как моя приведенная выше формула Vlookup).

Например, если вы поместите Eval(A1) в A2 (где «Eval» - сама функция), а затем поместите =Eval(A2) в B2, вы получите «#VALUE».Тот же вывод с приведенной выше формулой.

enter image description here

Кто-нибудь знает, как рассчитать текстовую формулу, например: VLOOKUP (A2; Table3 [#All]; 3;ЛОЖЬ) (без добавления «=» вручную перед формулой)?

Спасибо!

1 Ответ

4 голосов
/ 20 сентября 2019

Я не уверен, документировано ли это в более авторитетном месте - эта ссылка упоминает об этом - но Evaluate требует запятую в качестве разделителя аргументов в формулах, независимо от ваших локальных настроек.

Что касается VLOOKUP, либо измените ; на , в исходном тексте, либо используйте SUBSTITUTE и Eval результат.

...