¿Cómo usar la función WorksheetFunction.AverageIf en VBA?

`WorksheetFunction.AverageIf` en VBA es una función que calcula el promedio (media aritmética) de todas las celdas en un rango que cumplen con un criterio específico.

Aquí tienes un ejemplo de cómo usar `WorksheetFunction.AverageIf` en VBA:

Sub CalculateAverageIf()
    Dim ws As Worksheet
    Dim averageCriteriaRange As Range
    Dim criteria As String
    Dim averageResult As Double
    
    ' Establecer la hoja de cálculo
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' Definir el rango para el criterio de promedio
    Set averageCriteriaRange = ws.Range("A1:A10")
    
    ' Establecer el criterio (por ejemplo, los valores que son mayores a 5)
    criteria = ">5"
    
    ' Usar la función AverageIf para calcular el promedio
    averageResult = Application.WorksheetFunction.AverageIf(averageCriteriaRange, criteria)
    
    ' Mostrar el resultado en un cuadro de diálogo
    MsgBox "El promedio de las celdas que cumplen con el criterio es: " & averageResult
End Sub

En este ejemplo, se calcula el promedio de las celdas en el rango `A1:A10` de la hoja `Sheet1` que contienen valores mayores a 5. El resultado se almacena en la variable `averageResult` y luego se muestra un cuadro de diálogo con dicho resultado.

No olvides adaptar el nombre de la hoja y los rangos a tu caso en particular.

Si también necesitas especificar un rango donde obtener los valores para calcular el promedio, puedes usar `WorksheetFunction.AverageIfs`, que soporta múltiples criterios y rangos:

Sub CalculateAverageIfs()
    Dim ws As Worksheet
    Dim averageCriteriaRange As Range
    Dim averageValuesRange As Range
    Dim criteria As String
    Dim averageResult As Double
    
    ' Establecer la hoja de cálculo
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' Definir el rango para el criterio de promedio
    Set averageCriteriaRange = ws.Range("A1:A10")
    
    ' Definir el rango de donde tomar los valores para el promedio
    Set averageValuesRange = ws.Range("B1:B10")
    
    ' Establecer el criterio (por ejemplo, los valores que son mayores a 5)
    criteria = ">5"
    
    ' Usar la función AverageIfs para calcular el promedio
    averageResult = Application.WorksheetFunction.AverageIfs(averageValuesRange, averageCriteriaRange, criteria)
    
    ' Mostrar el resultado en un cuadro de diálogo
    MsgBox "El promedio de las celdas que cumplen con el criterio es: " & averageResult
End Sub

En este caso, el promedio se calcula usando los valores en `B1:B10` basándose en si los valores correspondientes en `A1:A10` cumplen con el criterio especificado.

Conoce nuestra tienda

Ver más productos

Mejora tu nivel y logra tus objetivo

Excel

Excel cursos

Access

cursos de Access

Power BI

cursos power BI

Ayúdanos a hacer crecer el proyecto

Deja un comentario