Macro para calcular promedio

Como hacer para que cuando se ingrese el último valor a un rango inmediatamente me calcule el promedio y no antes.
1

1 Respuesta

51.400 pts. Programación Avanzada en Visual Basic, VBA, Modelo de...
Pon una condición de tal forma que si alguno de los valores necesarios esta vacío pues que la celda con la fórmula del promedio se quede vacía.
Ejemplo:
Celda B3=123
Celda B4="" 'Vacío
Celda B5=345
Celda B6=SI(Y(B3<>"", B4<>"", B5<>""), PROMEDIO(B3:B5),"")
Como la celda B4 esta vacía el resultado de la celda B6 también lo está en caso de que las tres celdas tengan valor entonces en la celda B6 se calcula el promedio.
Gracias, lo que me dices cumple con lo que pedí pero pasa lo siguiente:
Supongamos que en un rango de 5 celdas ingreso los números 1, 2, 3, 4, 5; el promedio de ese rango seria 3, como ese rango lo voy a modificar y a sobre escribir sobre los números existentes entonces necesito que me vuelva a calcular el promedio sólo cuando termine de sobre escribir en todo el rango. Pido esto porque cada que yo modifique una celda este me calculara el promedio: ejm: Yo modifico de los número que tengo cambio el 1 por el 2 quedando así: 2, 2, 3, 4, 5, El promedio cambiaría a 3,2 y yo no quiero que eso pase sino hasta que modifique todo el rango.
Ok, entonces te conviene una macro
Sub CalculaPromedio()
    Dim sRango As String
    Dim nValor As Double
    Dim sCelda As String
    Dim nFila As Long
    Dim nCol As Long
    Range("F5").Select 'Seleccionamos la primera celda con datos para el promedio
    Range(Selection, Selection.End(xlDown)).Select 'Nos movemos hacia abajo para obtener el rango de datos de la columna
    sRango = Selection.Address 'Obtenemos el rango
    Range("F5").Select 'Seleccionamos la primera celda con datos para el promedio
    Selection.End(xlDown).Select
    nFila = Selection.Row + 2 'Identificamos la última fila y añadimos 2 para así deja una fila vacia entre el rango y la celda con el promedio
    nCol = Selection.Column
    Cells(nFila, nCol).Select
    sCelda = ActiveCell.Address
    Range(sCelda).FormulaLocal = "=PROMEDIO(" & sRango & ")"
    nValor = Range(sCelda).Value
    Range(sCelda).Value = nValor
End Sub
Si gustas te envío el archivo con el ejemplo.
Si por favor, mándame el ejemplo al este correo: (xxxxxx) y me dices si me puedes colaborar con otro favor que hace unas semanas estoy intentando resolver
Ya te lo envié

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas