Estou procurando algo semelhante à solução postada aqui:
Função do Excel que avalia uma string como se fosse uma fórmula?
O problema é que isso parece não funcionar com uma função lá.
Esta é a função nesse segmento, conforme enviada por chris neilsen:
Function ev(r As Range) As Variant
ev = Evaluate(r.Value)
End Function
Aqui está um exemplo de uma string que eu gostaria de transformar em uma fórmula:
=(INDEX(DataV,1,4)/INDEX(DataV,2,4))*100
DataV é um nome dentro da planilha.
Não sei bem como fazê-lo, talvez eu descubra, agora parece que provavelmente não, a menos que leia muito mais sobre VBA.
Qualquer ajuda é apreciada.
microsoft-excel-2010
worksheet-function
vba
string
LonelyKnight
fonte
fonte
Evaluate()
pode lidar apenas com expressões VBA, e não com as funções da planilha do ExcelINDEX()
. Se você espera um padrão específico (por exemplo,INDEX(something)/INDEX(something)
), pode escrever um código para analisá-lo e emular as funções da planilha com as funções VBA. Mas não tenho ideia de como fazer uma solução geral.Respostas:
Apenas pensei em compartilhar a solução com a qual acabei indo, já que faz o trabalho. Não foi possível criar uma função definida pelo usuário que faça isso, não parece ser possível, por isso fui com uma macro básica.
Este foi escrito para ser usado com um botão, se você desejar uma macro de execução automática, procure neste site dicas de uso de interseção.
A parte importante para o problema é a pergunta é:
Apenas defina a fórmula da célula como o valor da célula
No meu caso, eu queria que ele fosse executado em várias células, daí a necessidade de ativar o equivalente ao Range1 e usar o ActiveCell.Offset para definir o equivalente ao Range2
Funciona com qualquer string, mas as funções precisam ser escritas em inglês. Espero que isto ajude.
fonte