Tabla de contenido
Continuamos con la serie de tutoriales sobre funciones definidas por el usuario. En nuestros artículos anteriores, nos familiarizamos con las funciones definidas por el usuario y aprendimos a crearlas y utilizarlas. En este manual veremos los aspectos específicos del uso de estas funciones y veremos las diferencias entre las UDF y las macros de VBA.
En este tutorial aprenderemos lo siguiente:
Esperamos que este artículo amplíe sus conocimientos sobre las UDF y le ayude a utilizarlas de forma aún más eficaz en sus libros de Excel.
¿Es lo mismo UDF que Macro?
Tanto las funciones definidas por el usuario como las macros VBA se crean utilizando el editor VBA. ¿Cuál es la diferencia entre ellas y a cuál hay que dar preferencia?
La diferencia más importante es que la función realiza el cálculo, y la macro realiza alguna acción. Una función definida por el usuario, al igual que una función normal de Excel, debe escribirse en una celda. Como resultado de su ejecución, la celda devuelve algún valor. Al mismo tiempo, es imposible cambiar los valores de otras celdas, así como algunas propiedades de la celda actual (en particular,Sin embargo, puede utilizar una función personalizada en las fórmulas de formato condicional.
Las UDF y las macros VBA funcionan de forma diferente. Por ejemplo, cuando se crea una UDF en el Editor de Visual Basic, se empieza con una sentencia Función y terminar con un Fin de la función Cuando se graba una macro, se empieza con una sentencia Sub y terminar con un Fin Sub.
No todos los operadores de Visual Basic pueden utilizarse para crear UDFs. Por esta razón, una macro es una solución más versátil.
Una macro no requiere que el usuario le pase ningún argumento (ni puede aceptar argumentos), a diferencia de una función definida por el usuario.
La cuestión es que algunos comandos de las macros pueden utilizar direcciones de celdas o elementos de formato (por ejemplo, el color). Si mueves celdas, añades o eliminas filas y columnas, o cambias el formato de las celdas, puedes "romper" fácilmente tus macros. Esto es especialmente posible si compartes tu archivo con compañeros que no saben cómo funcionan tus macros.
Por ejemplo, tiene un archivo con una macro que funciona perfectamente. Esta fórmula calcula el porcentaje de las celdas A1 a A4. La macro cambia el color de estas celdas a amarillo. Se establece un formato de porcentaje en la celda activa.
Si usted u otra persona deciden insertar una nueva fila, la macro seguirá buscando el valor en la celda A4 (el parámetro 4,1 de su UDF), fallará y devolverá un error:
En este caso, el error se produjo debido a la división por cero (ningún valor en una fila recién añadida). En caso de que la macro realice, digamos, una suma, entonces simplemente obtendrá un resultado erróneo, pero no lo sabrá.
A diferencia de las macros, las funciones definidas por el usuario no pueden provocar una situación tan desagradable.
A continuación puede ver el rendimiento de los mismos cálculos utilizando una UDF. Aquí puede especificar celdas de entrada en cualquier lugar de la hoja de cálculo y no se encontrará con ningún problema inesperado al cambiarla.
Escribí la siguiente fórmula en C3:
=UDF_vs_Macro(A1,A4)
Entonces inserté una fila en blanco, y la fórmula cambió como se puede ver en la captura de pantalla de arriba.
Ahora podemos mover una celda de entrada o una celda con una función a cualquier lugar. El resultado siempre será correcto.
Una ventaja adicional del uso de las UDF es que se actualizan automáticamente cuando cambia el valor de la celda de entrada. Al utilizar macros, debe asegurarse siempre de que todos los datos están actualizados.
Teniendo en cuenta este ejemplo, yo preferiría utilizar UDFs siempre que sea posible y utilizar macros sólo para otras actividades que no sean de cálculo.
Limitaciones y desventajas del uso de UDF
Ya he mencionado anteriormente las ventajas de UDF. Resumiendo, puede realizar cálculos que no son posibles con las funciones estándar de Excel. Además, puede guardar y utilizar fórmulas largas y complejas, convirtiéndolas en una única función. Y no tendrás que escribir fórmulas complicadas una y otra vez.
Hablemos ahora con más detalle de las deficiencias de la UDF:
- La creación de UDFs requiere el uso de VBA. No hay manera de evitarlo. Esto significa que el usuario no puede grabar la UDF de la misma manera que una macro de Excel. Tiene que crear la UDF usted mismo. Sin embargo, puede copiar y pegar partes del código de la macro previamente grabada en su función. Sólo tiene que ser consciente de las limitaciones de las funciones personalizadas.
- Otro inconveniente de UDF es que, como cualquier otra función de Excel, sólo puede devolver un único valor o una matriz de valores en una celda. Simplemente realiza cálculos, nada más.
- Si desea compartir su libro de trabajo con sus colegas, asegúrese de guardar sus UDF en el mismo archivo. De lo contrario, sus funciones personalizadas no funcionarán para ellos.
- Las funciones personalizadas creadas con el editor VBA son más lentas que las funciones normales. Esto se nota especialmente en tablas grandes. Desgraciadamente, VBA es un lenguaje de programación muy lento hasta el momento. Por lo tanto, si tiene muchos datos, intente utilizar funciones estándar siempre que sea posible, o cree UDFs utilizando la función LAMBDA.
Limitaciones de las funciones personalizadas:
- Las UDF están diseñadas para realizar cálculos y devolver un valor. No pueden utilizarse en lugar de las macros.
- No pueden modificar el contenido de ninguna otra celda (sólo el de la celda activa).
- Los nombres de las funciones deben seguir ciertas reglas. Por ejemplo, no se puede utilizar un nombre que coincida con un nombre de función nativo de Excel o con una dirección de celda, como AB123.
- Su función personalizada no puede contener espacios en el nombre, pero puede incluir el carácter de subrayado. Sin embargo, el método preferido es utilizar mayúsculas al principio de cada palabra nueva (por ejemplo, GetMaxBetween).
- Una UDF no puede copiar y pegar celdas en otras áreas de la hoja de cálculo.
- No pueden cambiar la hoja de cálculo activa.
- Las UDF no pueden cambiar el formato de la celda activa. Si desea cambiar el formato de una celda al mostrar diferentes valores, debe utilizar el formato condicional.
- No pueden abrir libros adicionales.
- No se pueden utilizar para ejecutar macros utilizando Application.OnTime.
- No se puede crear una función definida por el usuario utilizando el grabador de macros.
- Las funciones no aparecen en el Desarrollador> Macros diálogo.
- Sus funciones aparecerán en el cuadro de diálogo ( Insertar> Función ) y en la lista de funciones sólo si se declaran como Público (este es el valor por defecto, a menos que se indique lo contrario).
- Cualquier función declarada como Privado no aparecerá en la lista de funciones.
Un funcionamiento bastante lento, así como algunas restricciones de uso, pueden hacerte pensar: "¿Para qué sirven estas funciones personalizadas?".
Pueden resultar útiles, y de hecho lo son, si somos conscientes de las restricciones que se les imponen. Si aprende a crear y utilizar correctamente las UDF, podrá escribir su propia biblioteca de funciones, lo que ampliará enormemente su capacidad para trabajar con datos en Excel.
Para mí, las funciones personalizadas me ahorran mucho tiempo. ¿Y tú? ¿Has probado ya a crear tu propia UDF? ¿Te ha gustado más que las funciones básicas de Excel? Discutámoslo en los Comentarios :)