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
24/05/2015 a las 5:31 pm
Las UDF son muy importantes a medida que agilicen y faciliten los cálculos, para lo cual se debe conocer bien los factores que intervienen en el cálculo.
Saludos,
24/05/2015 a las 10:36 pm
Una consulta es posible utilizar macros anidados con funciones y viceversa?
Gracias.
José
09/06/2015 a las 4:48 am
Buenos días,
He leido y visionado muchos de los ejemplos de esta página. He aprendido mucho. Le agradezo de veras toda la información, es muy valiosa.
Tengo una cuestion que no soy capaz de resolver, creo que sería necesaria una UDF, pero por mucho que lo intento no consigo dar con la clave.
Organizamos torneos de tenis, en los que sacamos estadisticas de todo tipo, enfrentamientos anteriores directos, rachas, etc etc, pero hay un dato que nos gustaría conocer. Es la puntuación obtenida por dos tenistas (que se van a enfrentar) contra rivales comunes con los que ya se enfrentaron. Es decir, si se van a enfrentar Juan y Manuel, y ambos jugaron antes de con Pepe, saber la puntuación que ambos consiguieron contra Pepe.
Por poner un ejemplo, los jugadores que se enfrentan están en la columna A y B, y la puntuación de cada uno de ellos en C y D. Los partidos van del mas antiguo en la linea 1 hasta el mas nuevo en la ultima fila del excel.
Si me pudiera indicar que es lo que realmente necesito leer o formarme para conseguir esto se lo agradecería mucho.
Saludos y gracias de antemano.
25/09/2015 a las 3:41 pm
Hola acabo de comprar un mac e instale el office 365 para mac.
Mi problema es que no me permite crear userform.
No se si necesite ¿descargar un complemento?
26/09/2015 a las 9:30 am
Hola; como puedo dejar una UDF valida para todos los libros sin tener que invocarla con el nombre del libro?? es decir, si creo una función y la dejo activa en eun archivo alocado en XLStart poder llamarla de un nuevo libro solo con el nombre generico y no antecedde el nobre del libro en que se encuentra grabada la función?
He intentado añadira como complemento pero tampocofunciona
Saludos
23/10/2015 a las 6:02 pm
buenas tardes
por favor necesito su ayuda
necesito crear en excel una función que me arroje el precio de unos productos por ejemplo:
hay unos productos que se pagan por pieza y otros por kilo
los que se pagan por pieza a su vez se pagan dependiendo su color
y los que se pagan por kilo de la misma manera por su color y se multiplica por el peso :
por pieza
negro rojo
lapiz $ 5.00 $6.00
borrador $ 1.00 $ 2.00
sacapunta $3.00 $4.00
por kilo
negro rojo Peso
canicas $4.00 $7.00 Indefinido
ligas $ 2.00 $3.00 Indefinido
hojas $3.00 $5.00 Indefinido
en una tabla me gustaria por ejemplo que se calculara automaticamente el precio de las ligas es decir que al decir en una celda "ligas" y en la contigua referente al color cuando diga "negro" se entienda que las ligas se calculan a cierto precio cuando son negras y ese precio se multiplica por el peso que debe estar en otra celda para dar el precio total.
y en dado caso que el producto sea un borrador y en la celda de alado diga que es rojo se calcule el precio sin importar el peso..... ayuda por favor...
30/11/2015 a las 11:52 am
mi profesor nos paso esta funcion para calcular integral definida pero no entiendo cual es el calculo, no se leerlo de esta manera, alguien podria ayudarme?
Gracias!
'Cálculo de la integral definida por método numérico de una función dependiente de la variable “x”
Function integral_definida(fórmula_string As String, x_string As String, x_inf, x_sup, N)
Dim x As Double
Dim i As Integer
Dim fórmula_string_int As String
dx = (x_sup - x_inf) / N
For i = 0 To N - 1
x = x_inf + i * dx
x1 = Replace(CStr(x), ",", ".")
x2 = Replace(CStr(x + dx), ",", ".")
fórmula_string_int = Replace(fórmula_string, ",", ".")
y1 = Evaluate(Replace(fórmula_string_int, "x", x1))
y2 = Evaluate(Replace(fórmula_string_int, "x", x2))
integral_definida = integral_definida + dx * (y1 + y2) / 2
Next
End Function
02/02/2016 a las 6:26 pm
Hola a todos.
Espero puedan ayudarme. En Excel existen funciones tales como sumar si cumple una condicional o dos, lo mismo para obtener el promedio, pero si quiero conocer el valor máximo en una base de datos solo de ciertos registros que cumplan con un criterio, la función no existe como tal.
Para obtener el resultado deseado debo hacer un anidado de "IF" dentro del "MAX" y hacer la función de forma matricial.
Como se expresaría en UFD para usarla como una función de Excel?
18/07/2016 a las 5:50 pm
FELIZ DIA...TENGO DOS COLUMNAS, EN UNA VALORES LOS CUALES NO SE REPITEN DE MANERA CONSECUTIVA Y EN LA OTRA UN VALOR (LETRAS O NUMEROS), REQUIERO ENCONTRAR LA ULTIMA VEZ QUE SE REPITE UN VALOR ESPECIFICO DE LA PRIMERA COLUMNA Y OBTENER EL VALOR ASOCIADO EN LA OTRA COLUMNA...MUCHAS GRACIAS
08/11/2016 a las 5:52 pm
Buenas tardes realice una función y esta funciona bien... Pero cuando cambio los valores de los criterios(carril, turno hora) no se actualiza, me sigue mostrando la información anterior, ¿Como hago para que tan pronto cambie un dato se ejecute la formula y me arroje el valor actualizado. adjunto codigo VB...
Function ConsignadoRecolector(carril As String, turno As String, Hora As String)
Dim Puntero, seleccionarTurno As Integer
Dim consignado As Double
Dim carrilTurno As String
Puntero = 8 'Inicia en la celda numero 8
seleccionarTurno = 0
Inicio: 'declaración para ejecutar instrucción de todos los auxiliares de los carriles
Select Case seleccionarTurno
Case 0 'primera ejecución carril consultado
carrilTurno = turno
Case 1
carrilTurno = turno + " (Subturno 1)" 'consultar primer carril auxiliar
Case 2
carrilTurno = turno + " (Subturno 2)"
Case 3
carrilTurno = turno + " (Subturno 3)"
End Select
Do Until Hoja7.Cells(Puntero, "O") = ""
If Hoja7.Cells(Puntero, "O") = carril Then
If Hoja7.Cells(Puntero, "Q") = carrilTurno Then
If Hoja7.Cells(Puntero, "R") = Hora Then
consignado = consignado + Hoja7.Cells(Puntero, "W")
seleccionarTurno = seleccionarTurno + 1 'sumar uno para consultar siguiente carril auxiliar
If seleccionarTurno = 4 Then
Else
Puntero = Puntero + 1
GoTo Inicio 'saltar a el case de carriles auxiliares
End If
End If
End If
End If
Puntero = Puntero + 1
Loop
ConsignadoRecolector = consignado ' imprimir información en celda
End Function
15/06/2017 a las 12:06 pm
Buenas Tardes.... use una UDF simple para sumar valores de acuerdo al color de la celdas. Si yo cambio un color de alguna celda los resultados no se actualizan hasta que no voy a la celda donde llame la función y le doy enter... que debo hacer para evitar esto.... GRACIAS.
15/06/2017 a las 11:54 pm
Pruebe revisar:
Archivo, luego Opciones, y marque "Automático", las UDF al igual que otras funciones dependen de esta configuración para que se produzca la actualización.
07/08/2017 a las 4:23 am
Buenos días, por favor alguien me puede regalar el código de guardar como?
22/10/2017 a las 4:37 pm
Profesor; porque cuando le coloco un mensaje de alerta a una función UDF, y cuando la activo en la celda, al ubicar el mouse en cualquier celda así este en blanco siempre sale dicho mensaje de alerta. Cual es la solución. Quiero que únicamente sea en la fila determinada en dicho momento para tal función. Gracias, ojala alguien pueda orientarme el porque pasa eso. No soy experto pero trato de aprender.
12/09/2018 a las 1:07 pm
Hola buen día comunidad,
estoy intentando usar esta funcion para crear una formula que encuentre un determinado valor n numero de veces y me de los valores de las celdas contiguas (como buscar v pero para valores repetidos varas veces)
El problema es que no funciona aparece #¿Nombre?
Function BUSCAROCURRENCIA(valor_buscado As Variant, matriz_buscar As Range, _
ocurrencia As Integer, indicador_columna As Integer)
Dim cont As Integer
BUSCAROCURRENCIA = "No existe"
For i = 1 To matriz_buscar.Rows.Count
If matriz_buscar.Cells(i, 1).Value = valor_buscado Then
cont = cont + 1
If cont = ocurrencia Then
BUSCAROCURRENCIA = matriz_buscar.Cells(i, indicador_columna).Value
Exit Function
End If
End If
Next
End Function
15/11/2018 a las 6:19 am
Hola, agradecería si me pueden ayudar. He creado una user defined function, pero no consigo que funcione. Tengo una serie de celdas en una hoja, cuyo valor Y COLOR necesito copiar en celdas de otra hoja. La función es:
Function copia_celda(celda As Range)
copia_celda = Range(celda).Copy
Range(ActiveCell.Address).Paste
Application.CutCopyMode = False
End Function
Muchas gracias.
04/03/2019 a las 8:56 am
hola profesor
Le agradezco de antemano me ayude en lo siguiente:
He creado una función pero cuando la ejecuto no me aparece la ayuda en la parte inferior del nombre de la macro.
20/06/2022 a las 2:14 am
¿Puedo usar una UDF que ya tengo guardada como complemento de excel, desde una macro creada en otro libro diferente al libro donde fue creada la funcion?