Aunque Excel ya tiene cientos de funciones integradas como SUMA, BUSCARV, IZQUIERDA, etc., las funciones integradas disponibles generalmente no son suficientes para realizar tareas bastante complejas. Sin embargo, no se preocupe porque solo necesita crear las funciones necesarias usted mismo.
Paso
Paso 1. Cree un nuevo libro de trabajo o abra el libro de trabajo que desea procesar con Funciones definidas por el usuario (UDF)
Paso 2. Abra el Editor de Visual Basic en Microsoft Excel a través de Herramientas-> Macro-> Editor de Visual Basic (o presione el atajo Alt + F11)
Paso 3. Haga clic en el botón Módulo para agregar un nuevo módulo a su hoja de trabajo
Puede crear una UDF en un libro de trabajo sin agregar un módulo nuevo, pero la función no funcionará en otras hojas de trabajo del mismo libro.
Paso 4. Cree la "cabeza" o el "prototipo" de su función
El prototipo de función debe seguir la siguiente estructura:
función pública "Nombre de función" (parámetro1 como tipo1, parámetro2 como tipo2) como tipo de resultado.
Los prototipos pueden tener tantas funciones como sea posible, y sus tipos pueden ser todos los tipos de datos básicos o tipos de objetos de Excel en forma de Rango. Puede pensar en los parámetros como "operantes" (operadores) sobre los que actuará la función. Por ejemplo, cuando escribe SIN (45) para calcular el seno de 45 grados, el número 45 se tomará como parámetro. Luego, el código de función usará esos valores para realizar cálculos y mostrar los resultados.
Paso 5. Agregue el código de función para asegurarse de que: 1) usa el valor dado por el parámetro; 2) pasar el resultado al nombre de la función; y 3) cerrar la función con la frase "función final". Aprender a programar en VBA o en cualquier otro idioma requiere mucho tiempo y orientación detallada. Afortunadamente, estas funciones suelen tener pequeños bloques de código y no hacen mucho uso de las características del lenguaje de programación. A continuación, se muestran algunos elementos del lenguaje VBA que se pueden utilizar:
- El bloque If (if), que le permite ejecutar una parte del código solo si se cumple la condición. Como ejemplo:
- . Puede omitir la palabra clave Else junto con la segunda parte del código, ya que es opcional.
- El bloque Do (do), que ejecuta una parte del código Mientras o Hasta cuando o hasta que se cumple la condición. Como ejemplo:
- . También tenga en cuenta la segunda línea que "declara" la variable. Puede agregar variables a su código para su uso posterior. Las variables actúan como valores temporales en el código. Finalmente, considere la declaración de función como BOOLEAN, que es un tipo de datos que solo permite valores VERDADEROS o FALSOS. Este método para determinar los números primos está lejos de ser óptimo, pero el código se ha escrito de tal manera que es fácil de leer.
- Para bloque (a), que ejecuta una cierta cantidad de código. Como ejemplo:
- Un valor constante que se escribe directamente en la fórmula de la celda. En este caso, se debe citar el texto (cadena).
- Referencias de celda, por ejemplo B6 o rango como A1: C3 (el parámetro debe ser del tipo de datos "Rango")
-
Otra función que está incluida en su función (su función también puede estar incluida en otra función), por ejemplo: = Factorial (MAX (D6: D8))
Paso 7. Asegúrese de que los resultados sean correctos
Úselo varias veces para asegurarse de que la función pueda manejar correctamente varios valores de parámetros:
Consejos
- Al escribir bloques de código en estructuras de control como If, For, Do, etc., asegúrese de sangrar (inserte el borde de la línea izquierda ligeramente dentro) del bloque de código presionando la barra espaciadora varias veces o tabulador. Esto hará que el código sea más fácil de entender y los errores serán mucho más fáciles de encontrar. Además, el aumento de la funcionalidad se vuelve más fácil de realizar.
- Si no sabe cómo escribir código para funciones, lea el artículo Cómo escribir una macro simple en Microsoft Excel.
- A veces, las funciones no necesitan todos los parámetros para calcular el resultado. En este caso, puede utilizar la palabra clave opcional antes del nombre del parámetro en el encabezado de la función. Puede usar la función IsMissing (parameter_name) en su código para determinar si a un parámetro se le asigna un valor o no.
- Utilice nombres no utilizados como funciones en Excel para que no se sobrescriban ni eliminen funciones.
- Excel tiene muchas funciones integradas y la mayoría de los cálculos se pueden realizar utilizando estas funciones integradas, ya sea individualmente o todas a la vez. Asegúrese de echar un vistazo a la lista de funciones disponibles antes de comenzar a codificar. La ejecución se puede realizar más rápido si utiliza funciones integradas.
Advertencia
- Por razones de seguridad, muchas personas desactivan las macros. Asegúrese de notificar a los destinatarios de su libro de trabajo que el libro de trabajo enviado tiene macros y que estas macros no dañarán sus computadoras.
- La función utilizada en este artículo no es la mejor manera de resolver el problema relacionado. El ejemplo se utiliza para explicar el uso de estructuras de control del lenguaje.
- VBA, como otros lenguajes, tiene otras estructuras de control además de Do, If y For. La estructura discutida aquí solo describe lo que se puede hacer en el código fuente de la función. Hay muchas guías en Internet que pueden usarse para ayudarlo a aprender VBA.
Resultado del curso de función pública (como valor entero) como cadena
Si valor> = 5 Entonces
Resultados del curso = "Aceptado"
Demás
Resultados del curso = "Rechazado"
Terminara si
Función final
Observe los elementos en el bloque de código If:
SI condición ENTONCES código ELSE código END SI
Función pública BilPrima (valor como entero) como booleano
Dim i como entero
i = 2
BilPrima = Verdadero
Hacer
Si valor / i = Int (valor / i) Entonces
BilPrima = Falso
Terminara si
yo = yo + 1
Bucle mientras i <valor y númeroPrima = verdadero
Función final
Mira de nuevo los elementos:
DO codifique LOOP WHILE / HASTA condición
Factorial de función pública (valor como entero) siempre que
Resultados atenuados siempre que
Dim i como entero
Si valor = 0 Entonces
resultado = 1
ElseIf value = 1 Entonces
resultado = 1
Demás
resultado = 1
Para i = 1 para valorar
resultado = resultado * i
próximo
Terminara si
Factorial = resultado
Función final
Mira de nuevo los elementos:
PARA variable = límite inferior HASTA límite superior del código SIGUIENTE
. Además, tenga en cuenta el elemento ElseIf adicional en la instrucción If, que le permite agregar más opciones al código que se está ejecutando. Finalmente, considere la función "resultado" y la variable declarada como Long. El tipo de datos Long permite valores mucho más grandes que Integer.
A continuación se muestra el código de una función que convierte números pequeños en palabras.
Paso 6. Regrese al libro de trabajo y use la función escribiendo el símbolo “igual” (=) seguido del nombre de la función en la celda
Escriba los corchetes de apertura ("(") después del nombre de la función, utilizando el signo coma para separar los parámetros, y terminar con corchetes de cierre (“)”). Como ejemplo:
= Número a letra (A4)
. También puede utilizar fórmulas caseras buscándolas en categorías Usuario definido dentro de la opción Insertar fórmula. Simplemente haga clic en el botón FX a la izquierda de la barra de fórmulas. Hay tres tipos de formas de parámetros en funciones: