Tabla de contenido
Hoy vamos a seguir explorando las funciones personalizadas de Excel. Como ya sabes cómo crear UDFs (y, espero, que también hayas probado a aplicarlas en tu Excel), vamos a profundizar un poco más y aprender a utilizar y almacenar funciones definidas por el usuario en Excel.
Además, le mostraremos cómo guardar fácilmente sus funciones en un archivo de complemento de Excel para utilizarlas más tarde con unos pocos clics.
Esto es de lo que vamos a hablar:
Diferentes formas de utilizar UDF en Excel
Utilización de UDF en hojas de cálculo
Una vez que haya comprobado que sus UDF funcionan correctamente, puede utilizarlas en fórmulas de Excel o en código VBA.
Puedes aplicar funciones personalizadas en un libro de Excel de la misma forma que utilizas las funciones normales. Por ejemplo, sólo tienes que escribir en una celda la fórmula que aparece a continuación:
= GetMaxBetween(A1:A6,10,50)
UDF puede utilizarse en combinación con funciones regulares. Por ejemplo, añadir texto al valor máximo calculado:
= CONCATENATE("El valor máximo entre 10 y 50 es ", GetMaxBetween(A1: A6,10,50))
Puede ver el resultado en la siguiente captura de pantalla:
Puedes encontrar el número que es a la vez máximo y está en el intervalo de 10 a 50.
Comprobemos otra fórmula:
= INDEX(A2:A9, MATCH(GetMaxBetween(B2:B9, F1, F2), B2:B9,0)), el
La función personalizada GetMaxBetween comprueba el rango B2:B9 y encuentra el número máximo entre 10 y 50. A continuación, utilizando INDEX + MATCH, obtenemos el nombre del producto que coincide con este valor máximo:
Como puede ver, el uso de funciones personalizadas no difiere demasiado de las funciones normales de Excel.
Al hacerlo, recuerde que una función definida por el usuario sólo puede devolver un valor, pero no puede realizar ninguna otra acción. Más información sobre las restricciones de las funciones definidas por el usuario.
Uso de UDF en procedimientos y funciones VBA
Las UDFs también se pueden utilizar en macros VBA. A continuación puedes ver el código de la macro que busca el valor máximo en el rango de 10 a 50 en la columna que contiene la celda activa.
Sub MacroWithUDF() Dim Rng As Range, maxcase, i As Long With ActiveSheet.Range(Cells(ActiveCell.CurrentRegion.Row, ActiveCell.Column), Cells(ActiveCell.CurrentRegion.Rows.Count _ + ActiveCell.CurrentRegion.Row - 1, ActiveCell.Column)) maxcase = GetMaxBetween(.Cells, 10, 50) i = Application.Match(maxcase, .Cells, 0) .Cells(i).Interior.Color = vbRed End With End SubEl código de la macro contiene la función personalizada
GetMaxBetween(.Cells, 10, 50)
Busca el valor máximo en la columna activa. Este valor se resaltará entonces. Puede ver el resultado de la macro en la siguiente captura de pantalla.
Una función personalizada también se puede utilizar dentro de otra función personalizada. Anteriormente en nuestro blog, vimos el problema de convertir un número en texto utilizando la función personalizada denominada SpellNumber .
Con su ayuda, podemos obtener el valor máximo del rango y escribirlo inmediatamente como texto.
Para ello, crearemos una nueva función personalizada en la que utilizaremos las funciones GetMaxBetween y SpellNumber que ya nos son familiares.
Function SpellGetMaxBetween(rngCells As Range, MinNum, MaxNum) SpellGetMaxBetween = SpellNumber(GetMaxBetween (rngCells, MinNum, MaxNum)) End FunctionComo puede ver, el GetMaxBetween es un argumento de otra función personalizada, SpellNumber Define el valor máximo, como ya hemos hecho muchas veces. A continuación, este número se convierte en texto.
En la captura de pantalla anterior, se puede ver cómo el SpellGetMaxBetween encuentra el número máximo entre 100 y 500 y lo convierte en texto.
Llamada a UDF desde otros libros de trabajo
Si ha creado UDF en su libro de trabajo, esto, por desgracia, no significa que no se enfrentará a ningún problema en absoluto.
Según mi experiencia, la mayoría de los usuarios crean tarde o temprano su colección personal de macros y funciones personalizadas para automatizar procesos y cálculos individuales. Y aquí surge el problema: el código de las funciones definidas por el usuario en Visual Basic debe almacenarse en algún lugar para poder utilizarlo posteriormente en el trabajo.
Para aplicar la función personalizada, el libro donde la guardó debe estar abierto en su Excel. Si no lo está, obtendrá el error #¡NOMBRE! al intentar utilizarla. Este error indica que Excel no conoce el nombre de la función que desea utilizar en la fórmula.
Echemos un vistazo a las formas en que puede utilizar las funciones personalizadas que cree.
Método 1. Añada el nombre del libro de trabajo a la función
Puede especificar el nombre del libro de trabajo en el que se encuentra antes del nombre de la función. Por ejemplo, si guardó una función personalizada GetMaxBetween() en un libro llamado Mis_Funciones.xlsm debe introducir la siguiente fórmula:
= My_Functions.xlsm!GetMaxBetween(A1:A6,10,50)
Método 2. Almacenar todas las UDF en un archivo común
Guarde todas las funciones personalizadas en un libro de trabajo especial (por ejemplo, Mis_Funciones.xlsm ) y copie de él la función deseada en el libro de trabajo actual, si es necesario.
Cada vez que cree una nueva función personalizada, deberá duplicar su código en el libro de trabajo en el que vaya a utilizarla. Con este método pueden surgir varios inconvenientes:
- Si hay muchos archivos de trabajo, y la función es necesaria en todas partes, entonces el código tendrá que ser copiado en cada libro.
- Recuerde guardar el libro de trabajo en un formato compatible con macros (.xlsm o .xlsb).
- Al abrir un archivo de este tipo, la protección contra macros mostrará cada vez una advertencia que debe confirmarse. Muchos usuarios se asustan cuando ven una advertencia en forma de barra amarilla que les pide que activen las macros. Para evitar ver este mensaje, es necesario desactivar completamente la protección de Excel. Sin embargo, esto no siempre es correcto y seguro.
Creo que estarás de acuerdo conmigo en que todo el tiempo abrir un archivo y copiar de él el código de las funciones definidas por el usuario o escribir el nombre de este archivo en una fórmula no es la mejor solución. así, llegamos a la tercera vía.
Método 3. Crear un archivo complementario de Excel
Creo que la mejor manera es almacenar las funciones personalizadas de uso frecuente en un archivo de complemento de Excel. Ventajas de utilizar el complemento:
- Sólo tiene que conectar el complemento a Excel una vez. Después, podrá utilizar sus procedimientos y funciones en cualquier archivo de este ordenador. No necesita guardar sus libros en los formatos .xlsm y .xlsb, ya que el código fuente no se almacenará en ellos, sino en el archivo del complemento.
- Ya no te molestará la protección contra macros, ya que los complementos siempre remiten a fuentes de confianza.
- Un complemento es un archivo independiente. Es fácil transferirlo de un ordenador a otro, compartirlo con los compañeros.
Más adelante hablaremos de cómo crear y utilizar un complemento.
Uso de complementos para almacenar funciones personalizadas
¿Cómo puedo crear mi propio complemento? Repasemos este proceso paso a paso.
Paso 1. Crear el archivo del complemento
Abra Microsoft Excel, cree un nuevo libro y guárdelo con cualquier nombre adecuado (por ejemplo, Mis_Funciones) en formato de complemento. Para ello, utilice el menú Archivo - Guardar como o la tecla F12. Asegúrese de especificar el tipo de archivo Complemento Excel :
Su complemento tendrá la extensión .xlam.
Consejo: Tenga en cuenta que, por defecto, Excel almacena los complementos en la carpeta C:Usuarios[Su_nombre]AplicacionesDatosRoamingMicrosoftAddIns Le recomiendo que acepte la ubicación predeterminada. Si lo desea, puede especificar cualquier otra carpeta. Pero entonces, cuando conecte el complemento, tendrá que buscar y especificar su nueva ubicación manualmente. Si lo guarda en la carpeta predeterminada, no tendrá que buscar el complemento en su ordenador. Excel lo listará automáticamente.
Paso 2. Conectar el archivo del complemento
Ahora el complemento que hemos creado necesita estar conectado a Excel. Entonces se cargará automáticamente cuando se inicie el programa. Para ello, utilice el menú Archivo - Opciones - Complementos Asegúrate. Complementos de Excel se selecciona en el Gestione Haga clic en el botón Vaya a en la parte inferior de la ventana. En la ventana que aparece, marque nuestro complemento Mis_Funciones. Si no lo ve en la lista, haga clic en el botón Visite y busque la ubicación de su archivo de complemento.
Si está utilizando un complemento para almacenar funciones personalizadas, hay una regla sencilla que debe seguir. Si va a transferir el libro de trabajo a otras personas, asegúrese de transferir también una copia del complemento que contiene la funcionalidad que desea. Deberán conectarlo de la misma forma que lo ha hecho ahora.
Paso 3. Añadir funciones y macros personalizadas al complemento
Nuestro complemento está conectado a Excel, pero aún no tiene ninguna funcionalidad. Para añadirle nuevas UDF, abra el Editor de Visual Basic pulsando Alt + F11 . A continuación, puede añadir nuevos módulos con código VBA, tal como se describe en mi tutorial Crear UDF.
Seleccione su archivo de complemento ( Mis_Fincciones.xlam ) en la ventana VBAProject. Utilice el botón Insertar - Módulo para añadir un módulo personalizado. Es necesario escribir funciones personalizadas en él.
Puede escribir manualmente el código de una función definida por el usuario o copiarlo de algún sitio.
Eso es todo. Ahora ha creado su propio complemento, lo ha añadido a Excel y puede utilizar la UDF en él. Si desea utilizar más UDF, sólo tiene que escribir el código en el módulo del complemento en el editor VBA y guardarlo.
Eso es todo por hoy. Hemos aprendido a utilizar funciones definidas por el usuario en tu libro de trabajo. Esperamos que estas directrices te resulten útiles. Si tienes alguna pregunta, escribe en los comentarios de este artículo.