Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

Funciones definidas por el usuario (UDF)

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.

Insertar función

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"

como ver las funciones en Excel

 

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 http://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.

  1. Último día del mes en Excel (VBA)
  2. Identificar color de celda en Excel
  3. Provisiones Genéricas para créditos directos (SBS)
  4. Déficit de agua en Hipernatremia
  5. Tamaño mínimo de muestra para variables cualitativas
  6. Función para factorizar por fórmula general
  7. Cálculo de lote económico(EOQ) para gestión de inventarios
  8. Cálculo del Desplazamiento de un cuerpo en MRUV
  9. Función Periodo Promedio de Cobro
  10. Función cuota de Crédito Comercial
  11. Función de Consumo Intertemporal
  12. Función para obtener el precio de una acción a través del método de dividendos a perpetuidad
  13. UDF - Índice Herfindahl Hirschmann (IHH)
  14. Suma de n términos consecutivos de una progresión aritmética
  15. 5 Ejercicios de Funciones definidas por el usuario
  16. Ejemplos de funciones definidas por el usuario
  17. Contar el número de alumnos aprobados/desaprobados en un rango de celdas
  18. Problema de Maximización de Utilidad
  19. Calcular el monto de pago total por un préstamo (El principal)
  20. Distancia entre 2 puntos
  21. Punto de Equilibrio
  22. ¿Qué es el WACC?
  23. Categoría Deudor SBS
  24. Función Vida Optima de Explotación
  25. Indicador de grasa corporal, RCC e IMC.
  26. Hallando la distancia de dos puntos
  27. Deflactar una Base de Datos
  28. Cálculo de Integrales Inmediatas Definidas
  29. Valor en Riesgo (VaR)
  30. UDF: Cálculo de cuota por departamento para recibos compartidos
  31. Calcular propina
  32. Ingreso Estimado con descuento
  33. UDF - Índices de Rentabilidad
  34. UDF - Sacar nota de un curso
  35. Funciones definidas por el usuario
  36. UDF-Cálculo de Resistencia Equivalente
  37. UDF control de calidad IKEA
  38. Función para hallar el Promedio Ponderado del Costo del Capital (WACC)
  39. UDF Calorías necesarias según Harris-Benedict (mujeres)
  40. UDF- Prueba Defensiva (Ratio de Liquidez)
  41. UDF Tabla de Equivalencias para Repostería
  42. Precio de una acción
  43. UDF para la Calificación y Evaluación de Proveedores
  44. UDF Cálculo Volumen Reservorio
  45. UDF para hallar la cantidad de horas trabajadas
  46. UDF para el cálculo de los ratios de endeudamiento GAO, GAF y GAT
  47. UDF Aplicado para el Calculo de La Demanda Agregada
  48. UDF - cálculo de la Energía Potencial, Energía Cinética y Energía Mecánica
  49. UDF aplicado aun juego cotidiano: BINGO
  50. UDF Costos totales de un presupuesto de producción
  51. Cálculo de Impuesto de Renta 5ta Categoría
  52. UDF Descuento AFP
  53. UDF - Cálculo de Límites de control
  54. UDF aplicado a el principio de Arquímides
  55. UDF Aplicado al Flujo de Caja Libre y al Periodo de Recuperación de la Inversión
  56. Funcion Calculo de BETA (Aplicación a Finanzas)
  57. UDF aplicado al Costo Unitario Total
  58. UDF aplicado al Ratio de Sharpe
  59. UDF Ahorro anual proyectado
  60. Elasticidad de la Demanda
  61. UDF Conversiones de Temperatura
  62. UDF del cálculo de pronostico usando el método estacional multiplicativo
  63. UDF Funcion de Indice Masa Corporal
  64. Ejemplo de Ley de Biot-Savart
  65. UDF Aplicado al cálculo del Índice de Ruffier
  66. Función Porcuantotevas
  67. UDF para calcular el costo de la energía consumida por un aparato eléctrico.
  68. UDF aplicado al Cálculo de la Rentabilidad Real
  69. UDF aplicado a Cálculo de Ahorro en un Cuadro Comparativo de Precios
  70. UDF aplicado a obtener la Variación de Productividad de una empresa
  71. UDF aplicado al calculo de rentabilidad de un portafolio, modelo CAPM
  72. UDF aplicado al cálculo del Indice de Masa Corporal
  73. Suma de decibeles
  74. UDF Suma de valores en negrita
  75. UDF para calcular el Descuento de AFP
  76. UDF aplicado a los rangos de Retorno Esperado de una acción
  77. Cantidad de agua requerida, según peso, calorías consumidas y horas de actividad física.
  78. UDF aplicado al cálculo del lote económico de compra (EOQ)
  79. UDF: función del Indice de Riesgo Ambiental IRA
  80. UDF Función Tipo de Cambio Forward Venta (fwventa)
  81. Velocidad Final y Altura en MRUV en caida libre
  82. UDF-cuota leasing
  83. Ejemplo de Basic Earning Power ratio
  84. Extraer números VBA - Ejemplo con Tipo de cambio
  85. Cambiar de categoría de una UDF
  86. Ideas para concatenar celdas con VBA o Macros
  87. UDF aplicado a Cálculo de las Notas Curso Excel
  88. UDF aplicado a Calculo de la CTS
  89. UDF - Estado de Resultados para cuantificar la Utilidad Empresarial
  90. Cálculo Nitrógeno Amoniacal
  91. UDF Promedio de ventas
  92. Distancia entre los puntos
  93. UDF - Tipo de Obesidad según el IMC
  94. UDF Función Utilidad Retail
  95. UDF: determinación del tamaño de una muestra estadística
  96. Formulas para sacar promedio total y nota requerida
  97. Cantidad Económica de Pedido - modelo comercial de inventarios
  98. Función sumtotaldeQ
  99. Concatenar el contenido de un rango de celdas (mail recordatorio)
  100. Función Suma de Dígitos
  101. UDF – Presupuesto
  102. UDF sacar promedio del curso de Finanzas 1
  103. UDF para calcular el pedido de materiales en el mes
  104. UDF Nota Ponderada de Curso de Postgrado
  105. Función FRC/FCS
  106. Cálculo de Tasas Efectivas y Anualidades
  107. Cálculo del WACC en Excel
  108. Crecimiento promedio geométrico del PBI
  109. Función RandomNumber en VBA
  110. UDF aplicado al conteo de datos
  111. UDF para el cálculo del valor futuro según pagos con Gradiente Geométrico
  112. Punto de Equilibrio y Valor de Equilibrio
  113. Excel Avanzado UDF aplicado al cálculo de la cuota flat
  114. Excel Avanzado: UDF aplicado a determinar la variación de productividad
  115. Excel Avanzado: UDF aplicado al calculo del número de operarios en una planta
  116. UDF aplicado al cálculo de la diagonal de un poliedro
  117. Excel avanzado: UDF aplicado a valuación de inventarios
  118. Excel Avanzado: UDF para el cálculo de Productividad de una Agencia Bancaria
  119. Excel avanzado: UDF aplicado al cálculo del área de un círculo
  120. Excel Avanzado: UDF Aplicado a eleccion de Depositos a Plazo Fijo
  121. Calculando ahorros
  122. Excel Avanzado: UDF aplicado para el cálculo de variación de costo por eficiencia
  123. Excel Avanzado: UDF aplicado al cambio de una Tasa de Interés en Dólares a Soles
  124. Excel Avanzado: UDF para dar vuelto en soles a una venta en dólares
  125. UDF aplicado a la aprobación de un curso
  126. Excel Avanzado: UDF Número de cifras de un Decimal transformado en Binario
  127. Cálculo de tiempo de trabajo de un empleado
  128. Función Excel Avanzado: UDF aplicado al cálculo del sobregiro bancario
  129. UDF Aplicado al calculo del Rendimiento Esperado de una accion
  130. Uso de Macros En la Elaboracion de un Índice Bursátil
  131. Ejemplo de "For" aplicado al Cálculo del Factorial de un Número
  132. Ejemplo de UDF para el cálculo de la retracción de una factura.
  133. UDF aplicado a la evaluación de avance de un proyecto
  134. Excel Avanzado: UDF aplicado al cálculo del promedio de prácticas y promedio final.
  135. Ejemplo de función para el cálculo de la comisión ganada por ventas
  136. Funcion para calcular el tipo de cambio proyectado
  137. Ejemplo de función para el cálculo del porcentaje de merma ideal
  138. Función para el Cálculo del Test de Diferencias
  139. Calculo de función FORGEN (fórmula general)
  140. Función para calcular pago ventas
  141. Función para la Descomposición Factorial de un Número con recursividad
  142. Función para calcular el CRAEST
  143. Función para el Cálculo de la Hipotenusa de un Triángulo Rectángulo
  144. Excel Avanzado: UDF Aplicado al cálculo del índice de Lerner
  145. Ejemplo de UDF para valorar opciones Call con el modelo Black Scholes
  146. Ejemplo de UDF para el Cálculo de Pago de Impuesto a la Renta de Cuarta Categoría
  147. Ejmplo de UDF para Calcular el Tipo de Cambio Forward Teórico
  148. Ejemplo de UDF para calcular el Volumen de un cilindro
  149. Función Ingreso
  150. Función Consumo
  151. Función definida por el usuario: Par-Impar
  152. Función Discriminante de un Polinomio Cuadrático
  153. Función definida por el usuario: Área de un triangulo
  154. Función Calificación
  155. Función BeneficioCosto
  156. Función IMC

74 comentarios

  1. 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

  2. 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,

    • 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

  3. ¿Es posible exportar UDF de un libro a otro?

  4. 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

  5. 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.

  6. Disculpen,¿Qué significa este comando t = CInt(Mid(tipo_credito, 1, 2)) , en especial CInt(Mid()) en el ejemplo 7?

  7. 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.

  8. 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.

  9. 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.

  10. 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

  11. como calcular el tiempo se servio de los trabajadores en años ejem 11/10/1990-03/11/2014

  12. 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.

  13. 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.

  14. 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.

  15. 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?

  16. 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,

  17. Una consulta es posible utilizar macros anidados con funciones y viceversa?

    Gracias.

    José

  18. 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.

  19. 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?

  20. 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

  21. 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...

  22. 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

  23. 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?

  24. 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

  25. 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

Deja una respuesta

Los campos requeridos estan marcados con *.