Ir al contenido principal

Formulas definidas por el usuario (UDF) - Macros en Excel

Las formulas o funciones de Excel  son el recurso principal para quienes su trabajo gira alrededor de una hoja de calculo, es por esto que cuando se habla de macros es imposible dejar de mencionarlas. Pero ¿Cuál es la diferencia entre una macro corriente y una formula?

La macro corriente se ejecuta a partir de una acción como un clic luego que es asignada a un boton, gráfico o simplemente desde el visor de macros usando la acción "Ejecutar".

Las formulas por el contrario inician con el simbolo "=" o "+" y las inserta el usuario en el momento que la requiere y la celda apropiada (Nada nuevo). La ventaja es que usando VBA puedo crear formulas propias de modo que simplemente usen los argumentos de mi interes.

Un pequeño ejemplo para aclarar:

Crear una función que convierta de grados Celsius a Farenheit. Esta formula no esta creada por defecto, en su remplazo hay otra que es convertir y que además de convertir grados tiene otras utilidades. Si lo que me interesa es unicamente de grados Celsius a Farenheit desarrollo una formula así:

=farenheit(celsius) donde celsius es el valor a convertir y farenheit es el nombre de la formula.

En el editor de VBA se veria como:

Function fahrenheit(celsius)
       Fahrenheit = celsius * 9 / 5 + 32
End Function

¿Donde estan las variables?, las variables son farenheit y celsius. En ellas se almacenan los valores de la operación y son mostrados en la celda donde se ejecute la formula.

Ejercicio reto:

Como uno de los retos de clase, se propuso desarrollar una función que permitiera tomar un rango de celdas cualquiera y sumara su contenido numerico. ¿Les suena familiar con alguna otra formula?. Si es la función suma para principiantes en el desarrollo de macros.

A continuación la solución:

Function hola(prueba As Range) As Double

Dim resultado As Double
resultado = 0     'Iniciar la variable en 0

For Each cell In prueba
    resultado = cell.Value + resultado
Next
hola = resultado

End Function


Comentarios

Entradas más populares de este blog

Ejercicio Condicionales usando Macros en Excel

La toma de decisiones es determinante en la secuencia de ejecución de una macro. Las herramientas que proporciona VBA para la toma de decisiones descansan en los condicionales. Un ejemplo de estructuras condicionales en Excel es la función "SI", la cual permite hacer una prueba lógica y tomar generar dos resultados posibles dependiendo si la prueba lógica es verdadera o falsa. "SI su estatura en metros es superior a 1.5 mts, puede ingresar a la montaña rusa, de lo contrario NO". En la afirmación anterior solo aquellos niños con una estatura superior a 1.5 tendrán acceso al juego mecánico, los demás niños simplemente estarán excluidos del juego hasta que cumplan el requisito de forma imperativa.
El lenguaje de macros permite 3 estructuras condicionales distintas:
a) IIF(prueba_lógica, verdadero, falso). Su resultado obligatoriamente debe asignarse a una variable
variable = IFF(3>1, "Verdadero", "Falso"). El tipo de variable puede ser numero, …

Buscar en Excel usando Desref y Coincidir

Si bien la función BuscarV resulta de gran ayuda a la hora de las búsquedas, existen otras funciones que aunque propiamente no se especialicen en buscar, pueden utilizarse para ejecutar búsquedas. En el post anterior hablamos de Indice y Coincidir, en este post quiero mostrar cómo utilizar la función Desref en compañia de Coincidir. 
Función Desref: regresa un rango a partir de una referencia dada. Este rango puede ser una sola celda o varias celdas
=DESREF(Ref;Filas;Columnas;[Ancho];[Alto])
Argumentos:
Ref: Es la referencia desde la cual desref hará el cálculo de cuantas filas y colunmas voy a incluir en el rango que deseo seleccionar o que requiero obtener como resultado de la función.
Filas: Numero de filas que cuenta desref a partir de Ref. Puede ser un número negativo o positivo. Positivo contará filas hacia abajo y negativo hacia arriba.
Columnas: Numero de columnas que cuenta desref a partir de Ref. Puede ser un número negativo o positivo. Positivo contará columnas a la dere…