jueves, diciembre 04, 2014

La función FORMULATEXTO y Excel 2010

Una de las nuevas funciones en Excel 2013 es FORMULATEXTO. Esta función, disponible solamente en Excel 2013 y Excel 365, transforma la fórmula de una celda en texto.


¿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 "=")


4 comentarios:

  1. 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.
    Un saludo

    ResponderBorrar
  2. No tan complicada, como puedes ver en la ayuda en línea de Excel.
    Ademá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.

    ResponderBorrar
  3. Excelente Jorge, se agradeceria contar con una UDF de ESFORMULA (disponible solo a partir de excel 2013) en excel 2010

    ResponderBorrar
  4. En su forma más elemental sería

    Function esformula(rCell As Range) As Boolean
    esformula = rCell.HasFormula
    End Function

    Si la celda contiene una fórmula da TRUE; en caso contrario FALSE

    ResponderBorrar

Nota: sólo los miembros de este blog pueden publicar comentarios.