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

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

    Gracias.

    José

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

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

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

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

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

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

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

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

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

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

  12. Buenos días, por favor alguien me puede regalar el código de guardar como?

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

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

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

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

Página de comentarios 3 de 3
1 2 3

Deja una respuesta

Los campos requeridos estan marcados con *.