Função do Excel que avalia uma string como se fosse uma fórmula?

22

Suponha que eu tenha uma string de texto como "11+5" ou mesmo "=11+5" armazenada em uma célula. Existe uma função no Excel que me permita realmente avaliar essa string como se fosse uma fórmula?

Isso seria útil para outro projeto em que eu gostaria de poder escrever fórmulas 'dinâmicas' no Excel.

    
por drapkin11 04.03.2011 / 22:41

3 respostas

22

EVALUATE está disponível no VBA em todas as versões atuais

Você pode incluí-lo em seu código VBA ou agrupá-lo em uma UDF simples para disponibilizá-lo como uma função de planilha

Function ev(r As Range) As Variant
    ev = Evaluate(r.Value)
End Function

Ele basicamente trata o valor do parâmetro passado como uma fórmula do Excel, como se fosse inserido em uma célula

"11+5" e "=11+5" produzirão o mesmo resultado

    
por 05.03.2011 / 03:34
11
=evaluate(put_reference[s]_here)

Esta é uma semifunção - somente pode ser usada no Gerenciador de nomes.

É assim que você pode usá-lo:

  • Aponte para uma célula e abra o Gerenciador de nomes (na guia FÓRMULAS ou clicando em CTRL + F3)

  • Escreva=evaluate(ecliquenacéluladesejada(émelhormanterareferênciarelativa).

  • Concluaafórmulacom)
  • DêaeleumNAME-(nesteexemplo,vouchamá-lodeeva).
  • CliqueemOK.

Agora,vamossuporquevocêselecionouB1efeztudoissosereferiraA1.NaA1vocêpodecolocar" 1 + 1 " e em B1 você escreve =eva - depois de pressionar ENTER, o valor B1 será 2 . Como a referência no Gerenciador de Nomes foi relativa, você pode usar =eva para obter a avaliação de qualquer célula de uma célula à esquerda de onde você deseja. (por exemplo, em B2, =eva retornará o resultado da célula A2)

    
por 27.06.2014 / 15:08
3
=indirect()

se você usar isso em uma célula (ao lado de concatenar), pode ser muito útil.

Por exemplo, essa fórmula exibirá o valor da célula B5 em outra planilha (cujo nome está armazenado na célula A2 nesta planilha):

=INDIRECT(CONCATENATE(A2,"!B5"))

Para fazer o trabalho INDIRECT, a planilha externa deve estar aberta.

    
por 12.03.2013 / 10:17