¿Para que sirve?, me preguntarán Básicamente, para documentar fórmulas, como la que aparece en la imagen. La fórmula calcula la fecha del tercer lunes de un mes determinado (la nota sobre el tema la publicaré próximamente).
En algunas de mis notas suelo incluir el texto de la fórmula. Para obternerlo suelo copiar la fórmula directamente de la barra de las fórmulas y pegarla en una celda previamente formada como Texto o pegarla quitando el símbolo "=" para que Excel no la interprete como fórmula.
Dado que la mayor parte de mis notas las desarrollo con Excel 2010, decidí que podría crear una UDF (función definida por el usuario) que imite el funcionamiento de FORMULATEXTO para poder usarla en versiones de Excel anteriores a Excel 2013.
El código de la función es el siguiente
Function formulaText(rcell As Range, vType As Boolean) As String
If rcell.HasFormula = False Then
formulaText = "#NA!"
Exit Function
End If
Select Case vType
Case Is = False
formulaText = rcell.FormulaLocal
Case Is = True
formulaText = Mid(rcell.FormulaLocal, 2, Len(rcell.FormulaLocal) - 1)
End Select
End Function
La función tiene dos argumentos:
- rcell: es la celda que contiene la fórmula
- vType: que puede ser 0 o FALSO (incluye el símbolo "=" al principio de la fórmula) o 1 o VERDADERO (el texto no muestra el símbolo "=")
La verdad es que es un poco complicada de entender, creo que sería conveniente si pudieras adjuntar un excel con algún ejemplo, para poder ver el posible potencial que tiene esta función.
ResponderBorrarUn saludo
No tan complicada, como puedes ver en la ayuda en línea de Excel.
ResponderBorrarAdemás de la posibilidad de documentar fórmulas usadas en la hoja, otro usopodría ser medir el largo de la f´romula. Fuera de eso no le veo mucho potencial que digamos.
Excelente Jorge, se agradeceria contar con una UDF de ESFORMULA (disponible solo a partir de excel 2013) en excel 2010
ResponderBorrarEn su forma más elemental sería
ResponderBorrarFunction esformula(rCell As Range) As Boolean
esformula = rCell.HasFormula
End Function
Si la celda contiene una fórmula da TRUE; en caso contrario FALSE