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.
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 posee un error o 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
- 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/08/2012 at 11:55 am
PROFESOR COMO CREAR UNA MACRO QUE ME CALCULE EL VALOR% DE MAS DE DOS VALORES Y ENCONTRAR EL PORCENTAJE QUE ESTA MAS BAJO EN LOS TRES AÑOS
EJEMPLO ENCONTRAR EL VALOR PORCENTUAL D 2009,2010,2011 EN HURTO DE VEHICULOS
25/03/2013 at 10:02 pm
Hola Federico
Respecto a tu consulta, ingresé al ejemplo 27 – “Excel Avanzado: UDF aplicado al cálculo del promedio de prácticas y promedio final”, y con base en ese ejemplo generé una UDF, la cual muestro a continuación:
Function minimo(año1, año2, año3, año4)
int1 = año1 / (año1 + año2 + año3 + año4)
int2 = año2 / (año1 + año2 + año3 + año4)
int3 = año3 / (año1 + año2 + año3 + año4)
int4 = año4 / (año1 + año2 + año3 + año4)
If int1 < int2 And int1 < int3 And int1 < int4 Then
minimo = int1
ElseIf int2 < int1 And int2 < int3 And int2 < int4 Then
minimo = int2
ElseIf int3 < int1 And int3 < int2 And int3 < int4 Then
minimo = int3
Else
minimo = int4
End If
End Function
Saludos
Juan Jaén
26/03/2013 at 10:40 am
Hola
He creado una UDF para determinar la variación porcentual de un dato con respecto de otro. Por ejemplo, deseo conocer el porcentaje de variación del consumo de papel del año 2012 con respecto del año anterio (2011).
La fórmula sería la siguiente:
Consumo Año 2011: 1500
Consumo Año 2012: 2000
Fórmula = ((2000*100)/1500)-100
Resultado=33.33% –
Interpretación: Hubo un incremento en el consumo de papel en un 33.33%
(menos árboles en el mundo?)
Bueno, aquí la UDF:
Function var_porcentual(dato1, dato2)
resultado = (dato2 * 100 / dato1) – 100
var_porcentual = resultado
End Function
Es una UDF sencilla, pero considero que puede ser de vuestra utilidad…
Quedo a la espera de comentarios…
Buen día
Saludos,
Juan Jaén
30/03/2013 at 9:46 am
Molesto su atención para que me ayuden a resolver una inquietud que está referida a cómo puedo subir imagenes en este Blog.
En mi caso y seguramente en el de muchos, es más fácil explicar situaciones, o el desarrollo de lo que hacemos o queremos hacer con la hoja de cálculo, a través de gráficos o imagenes (o copia de pantallas).
Es por ello que acudo a ustedes a ver si me dan un alcance.
Mil gracias
Jorge Rojas.
30/03/2013 at 3:36 pm
estima profesor estoy tratando aplicar la funcion buscarv y concatenar, para asignar el nombre a un rango, en una lista que crada con codigo nombre y apellido, a la hora de aplicar la funcion = BUSCARV (A6;ListaClientes;2;FALSO) me sale siempre #¿NUMERO? LE HE DADO TODAS LAS POSIBLES SOLUCIONES y corregido de muchas maneras la formula pero me sigue sliendo lo mismo no se si es que estas funciones no estan en mi equipos y no se como implementarlas, me seria de mucha ayuda ya que soy nuevo en el tema de exel gracias
31/03/2013 at 8:03 pm
Hola amigos (as)
He creado una UDF que permite calcular la muestra númerica a partir de parametros estadisticos el argumento es:
function muestra (arg1,arg2,arg3,arg4)
muestra=(arg1*arg1*arg2*arg3)/(arg4*arg4)
Resultado=muestra
end function
Espero sus comentarios y criticas para mejorar.
31/05/2014 at 9:50 pm
José,
Buenas noches,
Podrías reducir el código a una sola línea, igualar resultado a muestra y no tendría sentido si puedes igualar directamente la operación.
Saludos,
Yajaira
27/05/2013 at 12:16 am
Necesito crear una función UDF que reciba dos parámetros:
la hoja de excel y el rango de celdas. y pueda llamar la función:
=copiar(“Hoja2″,”A1:C10”)
Al reemplazar en forma UDF no me funciona…
Código anterior de Excel:
Sub Macro1()
sheets(“Hoja1”).Select
Range(“D5:X30”).Select
Selection.Copy
sheets(“Hoja5”).Select
Range(“A2”).Select
ActiveSheet.Paste
End Function
Código UDF personal:
Public Function copiar(hoja As Worksheet, celdas As Excel.Range) As Variant
sheets(“Hoja1”).Select
Range(“D5:X30”).Select
Selection.Copy
sheets(“Hoja5”).Select
Range(“A2”).Select
ActiveSheet.Paste
End Function
Espero su ayuda, gracias!!
27/05/2013 at 8:06 pm
Estimados:
Bien, si se prueba el MsgBox y se pulsa el boton ayuda, salta la ayuda de office, esto me hace pensar que estoy haciendo algo mal y por eso no salta mi ayuda… necesito alguna respuesta:
Sub MessageBox()
MsgBox “El proceso tardará 5 minutos ¿Desea Continuar?”, 3 + 256 + 16384, “Copia de Seguridad.”, “C:\ejemplo.chm”, 71
End Sub
25/10/2014 at 12:31 am
Estimado Richard:
Creo que quieres hacer un MsgBox que alerte el tiempo que demorará el proceso y, además, guarde una copia de seguridad del documento. En ese caso te recomiendo utilizar el siguiente código:
Sub Mensaje()
respuesta = MsgBox(“El proceso tardará 5 minutos ¿Desea Continuar?”, vbYesNo, “Proceso”)
If respuesta = vbYes Then
MsgBox “Se realizará una Copia de Seguridad.”
nbre = Format(Now, “dd-mm-yy hh mm ss”)
ruta = “C:\Users\PC\Documentos”
‘ No olvides que la ruta debe ser cambiada de acuerdo a donde quieres que se guarde la copia.
ActiveWorkbook.SaveCopyAs ruta & “\” & nbre & “.xlsm”
‘ Agrega el codigo procedimiento que ibas a realizar.
End If
If respuesta = vbNo Then
MsgBox “El proceso se ha cancelado.”
End If
End Sub
En caso quieras adicionar un documento de ayuda, aconsejo el siguiente código:
Sub Mensaje()
respuesta = MsgBox(“El proceso tardará 5 minutos ¿Desea Continuar?”, vbYesNoCancel, “Proceso”)
If respuesta = vbYes Then
MsgBox “Se iniciará el proceso y se realizará una copia de seguridad.”
nbre = Format(Now, “dd-mm-yy hh mm ss”)
ruta = “C:\Users\PC\Documentos”
‘ No olvides que la ruta debe ser cambiada de acuerdo a donde quieres que se guarde la copia.
ActiveWorkbook.SaveCopyAs ruta & “\” & nbre & “.xlsm”
‘ Agrega el procedimiento que ibas a realizar.
End If
If respuesta = vbNo Then
respuesta = MsgBox(“El proceso se ha cancelado ¿Necesita Ayuda?”, vbYesNo, “Ayuda”)
If respuesta = vbYes Then
With CreateObject(“Word.Application”)
.Documents.Open “C:\Users\PC\Documentos\Ayuda.docx”
‘ No olvides que debes copiar la ubicación de tu documento.
.Visible = True
End With
End If
End If
End Sub
Espero que esta información te haya podido ayudar.
Slds
Manuel Dicción
05/08/2013 at 5:28 pm
Pra llenar una base de datos hasta que punto es funcional usar un formulario?…
10/09/2013 at 8:26 am
Como dejo una UDF en Excel de manera que la pueda llamar desde cualquier otro archivo …… Gracias por la atención
28/05/2014 at 10:54 am
Luis,
Para que una UDF esté disponible para cualquier archivo Excel, primero debes crear tu función y guardarla como “Complemento de Excel”, se guardará por defecto en una ruta similar a esta de acuerdo a tu computadora:
C:\Users\usuario\AppData\Roaming\Microsoft\Complementos
Luego cierras, vas a otra hoja Excel nueva, ingresas a Archivo/Opciones/Complementos y das click en el botón inferior “Ir”, te va a salir una ventana, das click en “Examinar” y aparecerá tu función guardada, la seleccionas y Aceptar.
Con esto puedes verificar que en cualquier archivo Excel, en la categoría Definidas por el usuario, aparecerá tu función creada.
Espero que te sirva.
Saludos,
Yajaira
13/09/2013 at 7:24 pm
Las funciones definidas por el usuario nos permiten generalizar formulas que usamos a diario y que no se encuentran definidas en excel como los ejemplos que están en este blog. Dejo un código por el cual se puede calcular el área de cualquier polígono regular conociendo su semiperimetro y su apotema:
Function area_poligonor(semiperimetro, apotema)
resultado = semiperimetro * apotema
area_poligonor = resultado
End Function
21/09/2013 at 11:44 pm
Profesor,
¿Como puedo verificar que una determinada UDF es más eficiente que la combinación de funciones predeterminadas?
28/05/2014 at 11:31 am
Christian,
Una UDF y la combinación de funciones deben realizar la misma acción que necesitamos hacer en Excel. Sin embargo, una UDF permite ahorrar tiempo, generar un código más sencillo y con una sola acción simplificar eso uso de varias funciones, más aún si éstas son repetitivas.
Si verificas que la acción se realiza más rápido, con menos código y hace exactamente lo que necesitas, el uso de UDF es el adecuado.
Saludos,
Yajaira
30/10/2013 at 7:58 pm
Como puedo actualizar el valor de una udf, ya que al copiar y pegar mi función creada a otras celdas, estas muestran el ultimo valor obtenido (el valor de la celda donde se copio)
he intentado con F9, comandos como “application.volatile” o “Worksheets(“nombre hoja”).Calculatey” y no he podido resolverlo.
este es mi función:
Function hosp_capi(numpro As Double)
Application.Volatile False
Dim monto As Double
Dim p As Double
monto = 0
p = 0
For w = 0 To 5
Select Case w
Case 0
p = 0.2
Case 1
p = 0.2
Case 2
p = 0.2
Case 3
p = 0.2
Case 4
p = 0.1
Case 5
p = 0.1
End Select
If ActiveCell.Offset(-2, -w) = “” Then
hosp_capi = monto
Exit Function
Else:
If ActiveCell.Offset(-2, -w) = 0 Then
monto = monto + 0
Else:
monto = monto + ((ActiveCell.Offset(-2, -w) * p) * ActiveCell.Offset(-1, -w))
End If
End If
Next
hosp_capi = monto
End Function
Espero puedan ayudarme
Saludos
30/10/2013 at 8:10 pm
olvide comentar que solo obtengo el valor que quiero pegando la formula celda por celda o bien yendo a cada celda donde he pegado la formula y dando F2
29/08/2014 at 3:14 pm
Tengo el mismo problema que tienes o tenías… me puedes decir como lo solucionaste???
16/01/2014 at 11:20 am
Lograste solucionarlo?
06/11/2013 at 7:23 pm
Hola como pudo usar varias UDF s ? es decir varias funciones como se concatenar
10/11/2013 at 11:57 pm
He creado una UDF que me ayuda a calcular el valor futuro conociendo el capital inicial y la tasa efectiva, pero me gustaría crear una UDF que calcule desde la tasa nominal a una efectiva y que calcule también el tiempo.
Function Vfuturo(C, ief, t)
resultado = C * (1 + ief) ^ t
Vfuturo = resultado
End Function
31/05/2014 at 10:06 pm
Para calcular la tasa efectiva desde una tasa nominal anual, se debe conocer el periodo de capitalización, por ejemplo si tenemos una tasa de 12% nominal anual, y la capitalización es mensual, nuestra tasa efectiva será: 12%/12 =1% efectiva mensual, se debe conocer el número de periodos en un año, en este caso hay 12 periodos (meses) en un año, aquí el código en VBA:
Function TasaEfectiva(TNA, num_per_año)
TasaEfectiva = TNA / num_per_año
End Function
24/12/2013 at 11:08 am
Hola, qué tal, quisiera saber si alguien me puede ayudar con lo siguiente: es que estoy tratando de hacer un Excel que me permita calcular las diferentes horas para liquidar una nomina, es decir, que al ingresar la hora de inicio del trabajador y la hora de salida, pueda obtener las horas ordinarias, las extras diurnas, extras nocturnas, dominicales… yo lo estuve tratando de hacer con funciones e incluyendo muchas columnas pero me salían unas funciones demasiado complejas que después no se entendían, y cuando creía que estaba listo, faltaba alguna cosa; mejor dicho se me volvió paquidérmico el proyecto. No sé si alguien lo ha hecho antes, pero sería un reto interesante. muchas gracias. por su colaboración. espero su pronta respuesta.
30/01/2014 at 9:52 pm
La aplicación de esta herramienta me a ayudado a crear hojas de cálculo en excel para cálculos de funciones geométricas y poder hacer interactura a los alumnos con la matemática y el excel
02/02/2014 at 7:50 pm
Hay UDFs muy interesantes.
En las funciones propias de excel, al momento de usarlas, aparece un comentario de lo que hace la función. Asimismo, cuando se usa el boton de Insertar Función, en la pestaña de Fórmulas, aparecen comentarios para cada una de las variables de la función seleccionada.
Mi pregunta es como se pueden poner comentarios en las UDF.
Gracias.
28/05/2014 at 10:35 am
Sergio,
Para poder colocar comentarios en las UDF, basta con colocar el signo ‘ delante de tu comentario, éste cambiará a color verde y dejará de formar parte de la programación del mismo.
Si deseas que un texto numeroso se convierta en comentario, activas la barra de Edición, seleccionas tu texto y haces click en el ícono “Bloque con comentarios”; para deshacer, haces click en el ícono “Bloque sin comentarios”
Espero que te sirva.
Saludos,
Yajaira
31/05/2014 at 7:23 pm
Hola :),para poder insertar una descripción a las udf, debes abrir el cuadro de las macros y luego escribir el nombre de la función, notarás que el botón opciones se activa, dale clic y en la descripción escribes lo que la función hace .
Saludos
02/02/2014 at 9:19 pm
Quisera saber como puedo crear una macro porcentual que se de color verde cuando es positivo y rojo cuando es negativo.
31/05/2014 at 7:06 pm
hola 🙂 con esta función me salio, espero que te sirva
Function porc(a, b)
x = ((b – a) / a) * 100
If x > 0 Then
porc = x
ActiveCell.Select
With Selection.Font
.ThemeColor = xlThemeColorAccent3
.TintAndShade = -0.24997711111789
End With
End If
If x < 0 Then
porc = x
ActiveCell.Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
End If
End Function
Saludos
31/05/2014 at 7:09 pm
Por cierto , el color lo saque utilizando el grabador de macro 🙂
31/05/2014 at 8:18 pm
Se podría prender el grabador y efectuar el cambio de color de texto mediante el formato condicional, luego revisas el codigo VBA, se tendrá algo parecido a esto:
Sub Macro2()
‘ Macro2 Macro
Cells.Select
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, _
Formula1:=”=11″
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Font
.Color = -11489280
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, _
Formula1:=”=11″
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Font
.Color = -16383844
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Range(“A2”).Select
End Sub
02/02/2014 at 9:22 pm
Quisiera saber como puedo crear una macro porcentual que se de color verde cuando es positivo y rojo cuando es negativo.
11/02/2014 at 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 at 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 at 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 at 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 at 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.
19/04/2014 at 3:20 pm
Como podría calcular las utilidades para el personal?
01/06/2014 at 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 at 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 at 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 at 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 at 9:03 am
¿Es posible exportar UDF de un libro a otro?
20/07/2014 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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?
24/05/2015 at 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 at 10:36 pm
Una consulta es posible utilizar macros anidados con funciones y viceversa?
Gracias.
José
09/06/2015 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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