Las funciones definidas por el usuario, conocidas también como UDF por sus siglas en Inglés (User Defined Functions) permiten, por medio del uso de macros o código VBA, el contar con funciones similares a las que existen de forma predefinida en Excel.
La variedad de temas que se pueden abordar por medio de estas funciones es numerosa, si se esta comenzando a aprender el uso de este tipo de funciones convendría comenzar realizando rutinas pequeñas que favorezcan el aprendizaje del lenguaje, a continuación se presenta una relación de ejemplos de lo que se pueden realizar por medio de las funciones definidas por el usuario.
Cabe recordar que estas funciones pueden ser empleadas desde cualquier parte del proyecto, ya sean las hojas, ThisWorbook, módulos, y formularios, y si son empleadas desde las hojas la invocación se realiza de la misma forma que se procede para las funciones ya existentes como BuscarV, Concatenar, etc.
¿Cómo crear funciones en Excel?
En ocasiones recibo la consulta ¿Cómo se hace una función en Excel?, ¿Qué es una función definida por el usuario?, ¿hay funciones personalizadas en Excel?
En realidad crear una función en Excel es una tarea sencilla, en el siguiente artículo tienes el paso a paso de como crearlas: Crear funciones en Excel
Estas UDFs las podemos usar desde la celdas en una hoja en Excel, como también las podemos invocar desde cualquier macro.
¿Cómo ver las funciones en Excel?
Al momento encontrarnos en una celda podemos usar la opción "Insertar función", desde la que podemos acceder a la lista de funciones existentes, y la ayuda correspondiente a cada una de ellas.
Luego de ello, en la siguiente pantalla podemos seleccionar la "Categoría", las "User Defined Functions" se encuentran en la categoría "Definidas por el usuario"
Limitaciones de las UDF
Una UDF llamada desde una celda (en una hoja) no puede cambiar el entorno de Excel, esto incluye:
- Insertar, eliminar o dar formato a celdas
- Cambiar el valor de una celda distinta a aquella en la que se invoca a la UDF
- Mover, renombrar, eliminar o añadir hojas
- Cambiar cualquier configuración del entorno como activar o desactivar el cálculo automático
Por ejemplo, si se llama a la UDF test desde una celda no funcionaría, pero si es invocada desde otra macro como test2, si funcionaría.
Function test()
Cells(2, 2).Interior.ColorIndex = 36
End Function
Sub test2()
MsgBox test
End Sub
Siguientes pasos
Revise los siguientes ejemplos de UDF (funciones definidas por el usuario), en todos ellos encontrará muy diversos ejemplos de como aplicar estas funciones.
Si alguna de estas funciones definidas por el usuario contiene una mejora que usted considera conveniente o necesaria, por favor registre un comentario para que procedamos a revisar la publicación.
Si ya conoce algunas de estas funciones y desea revisar algunas UDFs con rangos de celdas, puede observar los ejemplos que se encuentran en https://www.excel-avanzado.com/udf-rangos-de-celdas
Conozca más acerca de este tipo de funciones mediante el artículo funciones personalizadas en Excel.
Ejemplos de funciones definidas por el usuario
Cada uno de los siguientes ejemplos tiene los códigos en Visual Basic para Aplicaciones, puedes reutilizar todos los que necesites.
- Duración de Macaulay en Excel
- Último día del mes en Excel (VBA)
- Identificar color de celda en Excel
- Provisiones Genéricas para créditos directos (SBS)
- Déficit de agua en Hipernatremia
- Tamaño mínimo de muestra para variables cualitativas
- Función para factorizar por fórmula general
- Cálculo de lote económico(EOQ) para gestión de inventarios
- Cálculo del Desplazamiento de un cuerpo en MRUV
- Función Periodo Promedio de Cobro
- Función cuota de Crédito Comercial
- Función de Consumo Intertemporal
- Función para obtener el precio de una acción a través del método de dividendos a perpetuidad
- UDF - Índice Herfindahl Hirschmann (IHH)
- Suma de n términos consecutivos de una progresión aritmética
- 5 Ejercicios de Funciones definidas por el usuario
- Ejemplos de funciones definidas por el usuario
- Contar el número de alumnos aprobados/desaprobados en un rango de celdas
- Problema de Maximización de Utilidad
- Calcular el monto de pago total por un préstamo (El principal)
- Distancia entre 2 puntos
- Punto de Equilibrio
- ¿Qué es el WACC?
- Categoría Deudor SBS
- Función Vida Optima de Explotación
- Indicador de grasa corporal, RCC e IMC.
- Hallando la distancia de dos puntos
- Deflactar una Base de Datos
- Cálculo de Integrales Inmediatas Definidas
- Valor en Riesgo (VaR)
- UDF: Cálculo de cuota por departamento para recibos compartidos
- Calcular propina
- Ingreso Estimado con descuento
- UDF - Índices de Rentabilidad
- UDF - Sacar nota de un curso
- Funciones definidas por el usuario
- UDF-Cálculo de Resistencia Equivalente
- UDF control de calidad IKEA
- Función para hallar el Promedio Ponderado del Costo del Capital (WACC)
- UDF Calorías necesarias según Harris-Benedict (mujeres)
- UDF- Prueba Defensiva (Ratio de Liquidez)
- UDF Tabla de Equivalencias para Repostería
- Precio de una acción
- UDF para la Calificación y Evaluación de Proveedores
- UDF Cálculo Volumen Reservorio
- UDF para hallar la cantidad de horas trabajadas
- UDF para el cálculo de los ratios de endeudamiento GAO, GAF y GAT
- UDF Aplicado para el Calculo de La Demanda Agregada
- UDF - cálculo de la Energía Potencial, Energía Cinética y Energía Mecánica
- UDF aplicado aun juego cotidiano: BINGO
- UDF Costos totales de un presupuesto de producción
- Cálculo de Impuesto de Renta 5ta Categoría
- UDF Descuento AFP
- UDF - Cálculo de Límites de control
- UDF aplicado a el principio de Arquímides
- UDF Aplicado al Flujo de Caja Libre y al Periodo de Recuperación de la Inversión
- Funcion Calculo de BETA (Aplicación a Finanzas)
- UDF aplicado al Costo Unitario Total
- UDF aplicado al Ratio de Sharpe
- UDF Ahorro anual proyectado
- Elasticidad de la Demanda
- UDF Conversiones de Temperatura
- UDF del cálculo de pronostico usando el método estacional multiplicativo
- UDF Funcion de Indice Masa Corporal
- Ejemplo de Ley de Biot-Savart
- UDF Aplicado al cálculo del Índice de Ruffier
- Función Porcuantotevas
- UDF para calcular el costo de la energía consumida por un aparato eléctrico.
- UDF aplicado al Cálculo de la Rentabilidad Real
- UDF aplicado a Cálculo de Ahorro en un Cuadro Comparativo de Precios
- UDF aplicado a obtener la Variación de Productividad de una empresa
- UDF aplicado al calculo de rentabilidad de un portafolio, modelo CAPM
- UDF aplicado al cálculo del Indice de Masa Corporal
- Suma de decibeles
- UDF Suma de valores en negrita
- UDF para calcular el Descuento de AFP
- UDF aplicado a los rangos de Retorno Esperado de una acción
- Cantidad de agua requerida, según peso, calorías consumidas y horas de actividad física.
- UDF aplicado al cálculo del lote económico de compra (EOQ)
- UDF: función del Indice de Riesgo Ambiental IRA
- UDF Función Tipo de Cambio Forward Venta (fwventa)
- Velocidad Final y Altura en MRUV en caida libre
- UDF-cuota leasing
- Ejemplo de Basic Earning Power ratio
- Extraer números VBA - Ejemplo con Tipo de cambio
- Cambiar de categoría de una UDF
- Ideas para concatenar celdas con VBA o Macros
- UDF aplicado a Cálculo de las Notas Curso Excel
- UDF aplicado a Calculo de la CTS
- UDF - Estado de Resultados para cuantificar la Utilidad Empresarial
- Cálculo Nitrógeno Amoniacal
- UDF Promedio de ventas
- Distancia entre los puntos
- UDF - Tipo de Obesidad según el IMC
- UDF Función Utilidad Retail
- UDF: determinación del tamaño de una muestra estadística
- Formulas para sacar promedio total y nota requerida
- Cantidad Económica de Pedido - modelo comercial de inventarios
- Función sumtotaldeQ
- Concatenar el contenido de un rango de celdas (mail recordatorio)
- Función Suma de Dígitos
- UDF – Presupuesto
- UDF sacar promedio del curso de Finanzas 1
- UDF para calcular el pedido de materiales en el mes
- UDF Nota Ponderada de Curso de Postgrado
- Función FRC/FCS
- Cálculo de Tasas Efectivas y Anualidades
- Cálculo del WACC en Excel
- Crecimiento promedio geométrico del PBI
- Función RandomNumber en VBA
- UDF aplicado al conteo de datos
- UDF para el cálculo del valor futuro según pagos con Gradiente Geométrico
- Punto de Equilibrio y Valor de Equilibrio
- Excel Avanzado UDF aplicado al cálculo de la cuota flat
- Excel Avanzado: UDF aplicado a determinar la variación de productividad
- Excel Avanzado: UDF aplicado al calculo del número de operarios en una planta
- UDF aplicado al cálculo de la diagonal de un poliedro
- Excel avanzado: UDF aplicado a valuación de inventarios
- Excel Avanzado: UDF para el cálculo de Productividad de una Agencia Bancaria
- Excel avanzado: UDF aplicado al cálculo del área de un círculo
- Excel Avanzado: UDF Aplicado a eleccion de Depositos a Plazo Fijo
- Calculando ahorros
- Excel Avanzado: UDF aplicado para el cálculo de variación de costo por eficiencia
- Excel Avanzado: UDF aplicado al cambio de una Tasa de Interés en Dólares a Soles
- Excel Avanzado: UDF para dar vuelto en soles a una venta en dólares
- UDF aplicado a la aprobación de un curso
- Excel Avanzado: UDF Número de cifras de un Decimal transformado en Binario
- Cálculo de tiempo de trabajo de un empleado
- Función Excel Avanzado: UDF aplicado al cálculo del sobregiro bancario
- UDF Aplicado al calculo del Rendimiento Esperado de una accion
- Uso de Macros En la Elaboracion de un Índice Bursátil
- Ejemplo de "For" aplicado al Cálculo del Factorial de un Número
- Ejemplo de UDF para el cálculo de la retracción de una factura.
- UDF aplicado a la evaluación de avance de un proyecto
- Excel Avanzado: UDF aplicado al cálculo del promedio de prácticas y promedio final.
- Ejemplo de función para el cálculo de la comisión ganada por ventas
- Funcion para calcular el tipo de cambio proyectado
- Ejemplo de función para el cálculo del porcentaje de merma ideal
- Función para el Cálculo del Test de Diferencias
- Calculo de función FORGEN (fórmula general)
- Función para calcular pago ventas
- Función para la Descomposición Factorial de un Número con recursividad
- Función para calcular el CRAEST
- Función para el Cálculo de la Hipotenusa de un Triángulo Rectángulo
- Excel Avanzado: UDF Aplicado al cálculo del índice de Lerner
- Ejemplo de UDF para valorar opciones Call con el modelo Black Scholes
- Ejemplo de UDF para el Cálculo de Pago de Impuesto a la Renta de Cuarta Categoría
- Ejmplo de UDF para Calcular el Tipo de Cambio Forward Teórico
- Ejemplo de UDF para calcular el Volumen de un cilindro
- Función Ingreso
- Función Consumo
- Función definida por el usuario: Par-Impar
- Función Discriminante de un Polinomio Cuadrático
- Función definida por el usuario: Área de un triangulo
- Función Calificación
- Función BeneficioCosto
- Función IMC
11/02/2014 a las 4:19 pm
De las funciones revisadas, se aprecia que en ninguna de ellas se han declarado las variables, entiendo que por lo que son funciones cortas
11/02/2014 a las 4:28 pm
Cuándo se debe declarar el tipo de los argumentos de una función? funciona la misma lógica que las variables, que sólo resulta conviente declararlas cuando la función es compleja?
01/06/2014 a las 12:02 am
Se debe de declarar cuando el tipo de argumento es por ejemplo binario o la variable admite decimales, sin embargo si la funcion es facil de hacerla no es necesario.
27/03/2014 a las 7:57 pm
Copie una función para convertir números a letras en excel para mac pero me manda el error #¡VALOR! como si no la reconociera. Sabe alguien porque?
15/04/2014 a las 7:34 pm
Tengo un problema muy tonto que no se el error que me da, pero me da errores. me explico:
tengo una funcion para saber si una fecha es festiva o no. hasta aqui todo normal. si la inserto en un modulo me da errores en otros modulos, por ejemplo en el modulo workbook_open() no hace nada de lo que le digo. en cambio si borro la funcion si hace todo lo que le digo ... alguien entiende esto ???
la (maldita) funcion es esta:
Function Festiu(cel·la As Variant) As Integer
Dim Festa, a, b, c, d, e, f, g, h, i, k, l, m, n, mes, dia As Integer
Application.Volatile
If Weekday(cel·la) = 1 Then
Festa = 1
ElseIf Month(cel·la) = 1 Then
If Day(cel·la) = 1 Or Day(cel·la) = 6 Then
Festa = 2
End If
ElseIf Month(cel·la) = 5 Then
If Day(cel·la) = 1 Then
Festa = 2
End If
ElseIf Month(cel·la) = 6 Then
If Day(cel·la) = 24 Then
Festa = 2
End If
ElseIf Month(cel·la) = 7 Then
If Day(cel·la) = 5 Then
Festa = 22
End If
ElseIf Month(cel·la) = 8 Then
If Day(cel·la) = 15 Then
Festa = 2
End If
ElseIf Month(cel·la) = 9 Then
If Day(cel·la) = 11 Then
Festa = 2
End If
ElseIf Month(cel·la) = 10 Then
If Day(cel·la) = 12 Then
Festa = 2
End If
ElseIf Month(cel·la) = 11 Then
If Day(cel·la) = 1 Then
Festa = 2
End If
ElseIf Month(cel·la) = 12 Then
If Day(cel·la) = 25 Or Day(cel·la) = 26 Then
Festa = 2
End If
else
''setmana santa
a = Year(cel·la) Mod 19
b = Int(Year(cel·la) / 100)
c = Year(cel·la) Mod 100
d = b / 4
e = b Mod 4
f = Int((b + 8) / 25)
g = Int((b - f + 1) / 3)
h = (19 * a + b - d - g + 15) Mod 30
i = Int(c / 4)
k = c Mod 4
l = (32 + 2 * e + 2 * i - h - k) Mod 7
m = Int((a + 11 * h + 22 * l) / 451)
n = h + l - 7 * m + 114
''divendres sant
mes = Int(n / 31)
dia = (n Mod 31) - 1
If Month(cel·la) = mes Then
If Day(cel·la) = dia Then
Festa = 3
End If
End If
''dissabte sant
mes = Int(n / 31)
dia = (n Mod 31)
If Month(cel·la) = mes Then
If Day(cel·la) = dia Then
Festa = 3
End If
End If
''dilluns de pasqua
mes = Int(n / 31)
dia = (n Mod 31) + 2
If Month(cel·la) = mes Then
If Day(cel·la) = dia Then
Festa = 3
End If
End If
''2on dilluns de pasqua
mes = Int(n / 31)
dia = (n Mod 31) + 2
If cel·la = DateValue(Right("00" & dia, 2) & "/" & Right("00" & mes, 2) & "/" & Year(cel·la)) + 49 Then
Festa = 33
End If
End If
Festiu = Festa
End Function
me pregunto que temdra esta funcion que cuando la inserto en un programa da errores y si no la inserto el programa funciona correctamente?????
gracias.
30/06/2023 a las 1:02 pm
me ha pasado que al usar algunas variables de 1 letra da problemas, me ha pasado justo con C, no se si sea tu caso
19/04/2014 a las 3:20 pm
Como podría calcular las utilidades para el personal?
01/06/2014 a las 12:06 am
Para calcular las utilidades se debe de tener los ingresos y egresos, por ello el codigo seria simplemente una diferencia de esos dos parametros, el codigo en VBA seria:
Function utilidades(ingresos, egresos)
utilidades = ingresos - egresos
End Function
20/04/2014 a las 4:44 am
Profesor, utilice el numero el clasificador de la sbs, para crear una udf similar, solo para determinar los días de atraso por rangos que establecí, pero el problema que solo funciona en rango de 91 a 180 días y de más de 180 días, puede revisarlo e indicarme porque no funciona la udf creada como yo deseo.
Function Rango_días(arg1)
If arg1 = 0 Then
Rango_días = "Corriente"
End If
If arg1 < 16 Then
Rango_días = "De 1 a 15 días"
End If
If arg1 < 31 Then
Rango_días = "De 16 a 30 días"
End If
If arg1 < 61 Then
Rango_días = "De 31 a 60 días"
End If
If arg1 < 91 Then
Rango_días = "De 61 a 90 días"
End If
If arg1 180 Then
Rango_días = "Mayor de 180 días"
End If
End Function
20/04/2014 a las 1:43 pm
Hola!
Quisiera saber cómo puedo añadir a la función una ayuda, así como se muestra en una función normal de excel.
Muchas gracias.
Saludos cordiales,
31/05/2014 a las 9:34 am
Miriam,
Si te refieres a un comentario, debes incluir el signo ' delante de lo que quieras escribir, cambiará a color verde y se transformará en un comentario.
Saludos,
Yajaira
15/07/2014 a las 9:03 am
¿Es posible exportar UDF de un libro a otro?
20/07/2014 a las 1:03 pm
He creado una UDF para invertir un texto en una celda , en excel esto seria un poco tedioso aserlo pero usando funciones en VBA es sencillo y nos puede sacar de un apuro al momento de extraer solo el nombre de un apellido completo , bueno ami me ayudo mucho grande udf
'UDF palabras al reves
Function PALABRALREVES(palabra As String)
Resultado = StrReverse(palabra)
PALABRALREVES = Resultado
End Function
22/08/2014 a las 12:34 pm
hola, les cuento yo cree un funcion para que me pudiera contar las celdas por color, lo tengo en un archivo mio en una ruta compartida y me funciona sin embargo quisiera que cuando otra persona lo abra desde otro equipo funcione , pero no, la funcion se daña y lo que muestra es la ruta de mi equipo donde esta guardada, ya intente compartir mi ruta, o copiarla en las carpetas de los otros equipos pero sigue sin funcionar , por favor su ayuda.
10/09/2014 a las 1:45 pm
Disculpen,¿Qué significa este comando t = CInt(Mid(tipo_credito, 1, 2)) , en especial CInt(Mid()) en el ejemplo 7?
10/09/2014 a las 7:56 pm
Buenas noches, tengo dudas de cómo crear una UDF en la que deba especificar un rango de datos de entrada que puede ser variable, es decir, se podrían tener 3, 4 ó 10 inputs. Cómo haría esto? Todavía no he terminado de leer todos los materiales sólo el primero. Mi intención es crear una función VAN (valor actual neto) pero no deseo que el programa me pida cada uno de los datos (flujos de cada período) de uno en uno, sino ingresarlos como un rango seleccionándolo de una.
12/09/2014 a las 8:12 pm
Las UDF me se asemejan a las grabaciones de formulas que puedo hacer en la hp, de gran ayuda para aplicar esta tecnica de solo crear la formula y cambiar los datos. asi puedo trabajar todo desde el excel.
13/09/2014 a las 12:00 am
En realidad cada uno puede crear una UDF de acuerdo a sus requerimientos ,ya que el objetivo principal es evitar las largas operaciones por eso se automatizan. Pero, cada función arroja solo un valor, es decir , se debe crear una función por cada valor que se quiera calcular.
03/11/2014 a las 10:59 am
como calcular el triempo de los trabajadores en años meses dias.
ejem:12/12/1990-03/11/2014 de manera que arroje cuantos años hay
03/11/2014 a las 11:02 am
como calcular el tiempo se servio de los trabajadores en años ejem 11/10/1990-03/11/2014
07/11/2014 a las 8:00 am
hola como puedo hacer para que un textbox solo admita formato fecha "dd/mm/yyyy" caso contrario me indique error y no me carge los datos en una tabla.
05/04/2015 a las 7:34 pm
Esto es muy util cuando se presentan varios tipos se me ocurre utilizarlo para calcular los ingresos netos, el cual se presenta varias opciones como el nivel de ingresos (para calcular el IR), afp, seguro, etc.
21/05/2015 a las 9:58 pm
Saludos: Por favor sus comentarios, trabajo con una base de datos, pero requiero elaborar un USERFORM, que al seleccionar los datos también se muestren los demás datos, son aproximadamente 15 datos que necesito extraer a un USERFORM.
Agradezco sus comentarios.
23/05/2015 a las 5:26 pm
Estimados amigos, tengo una inquietud, las UDF se pueden demorar en dar una determinada respuesta o siempre son instantáneas?. De tomar algún tiempo en dar una respuesta ¿hay alguna manera de saber cuanto durará el cálculo?