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

 

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.

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

76 comentarios

  1. De las funciones revisadas, se aprecia que en ninguna de ellas se han declarado las variables, entiendo que por lo que son funciones cortas

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

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

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

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

    • 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

  5. Como podría calcular las utilidades para el personal?

    • 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Página de comentarios 2 de 3
1 2 3

Deja una respuesta

Los campos requeridos estan marcados con *.