jueves, 2 de mayo de 2013

VBA: Equivalencia de nombres de funciones en español e inglés para Excel.

Hoy tocaré un tema que en las últimas fechas me han preguntado bastante... ¿Cuál es el nombre en inglés de esta u otra función?. En definitiva se trata de obtener las equivalencias para una función cualquiera del nombre en inglés y español.
Es un tópico bastante recurrente, y existen muchos listados con las diferentes comparativas; pero hoy nosotros utilizaremos la programación en VBA, mediante un sencillo procedimiento Function para obtener nuestro convertidor de funciones particular.

En particular nos aprovecharemos de la propiedad .Formula que representa la fórmula del objeto en notación de estilo A1 y en el lenguaje de la macro, es decir, en inglés !!!

Por ello construiremos una función personalizada en VBA (UDF).
Por tanto accederemos al Editor de VBA (alt+F11) e insertaremos un Módulo, y dentro de él el siguiente código:

Function NombreFuncionEnIngles(celda As Range) As String
Application.Volatile
'sustituimos el igual = inicial de la función, convirtiendolo en un texto
'con la propiedad .Formula tratamos nuestra fórmula introducida en español
'como fórmula en inglés!!!
Fx = Replace(celda.Formula, "=", "")

'InStr devuelve un tipo Variant (Long) que
'especifica la posición de la primera aparición de una cadena en otra.
'el primer parentesis ( dentro del texto, ya función en inglés
Posicion = InStr(1, Fx, "(")

'reasignamos valor a la variable 'Fx'
'los caracteres por la izquierda con el nombre de la función
Fx = Left(Fx, Posicion - 1)

'devolvemos el nombre de la función ya en inglés...
NombreFuncionEnIngles = Fx

End Function



Podemos ver el resultado en al siguiente imagen:

VBA: Equivalencia de nombres de funciones en español e inglés para Excel.
haz clic en la imagen


Podemos probar con cualquier función que recordemos, será suficente añadir cualquier argumento inventado, aunque nos genere un error, para que nuestra función personalizada (UDF) llamada 'NombreFuncionEnIngles' nos devuelva su equivalencia en inglés...
Es una forma de evitar pesadas lístas de equivalencias, con más de 400 funciones...

Aún así, la próxima entrada del blog, será ese listado visual... para los amantes de lo clásico. Eso sí, será una selección de las funciones más habituales, con el fin de evitar listados interminables.

2 comentarios: