🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

AVERAGEIF y AVERAGEIFS en Excel — Promedios con condiciones y la trampa del #DIV/0! sin coincidencias

|

AVERAGEIF y AVERAGEIFS en Excel — Promedios con condiciones y la trampa del #DIV/0! sin coincidencias

ResumenAVERAGEIFS promedia una columna, pero solo las filas que pasan todas las pruebas: =AVERAGEIFS(rango_promedio; rango_criterios1; criterios1; …). Comparte exactamente la gramática de criterios de SUMIFS y COUNTIFS, pero tiene un comportamiento que te sorprenderá: cuando ninguna fila coincide, SUMIFS devuelve 0 — AVERAGEIFS devuelve #DIV/0!, porque no puedes promediar cero números. Protégelo con IFERROR. Dos cosas más muerden: promedia los ceros pero ignora las celdas en blanco (así que «faltante = 0» arrastra tu media hacia abajo sin avisar), y como SUMIF/SUMIFS, las formas singular y plural invierten sus argumentos. Funciona en Excel 2007+.

=AVERAGEIFS(Score, Class, "A")
=IFERROR(AVERAGEIFS(Score, Class, "A", Score, ">"&G1), "n/d")

AVERAGEIFS es la tercera cara de la agregación condicional: SUMIFS totaliza, COUNTIFS recuenta, AVERAGEIFS promedia. Si has leído las otras dos, ya conoces el lenguaje de criterios — así que esta guía dedica su tiempo a las tres cosas que hacen diferentes y peligrosos a los promedios, no a repetir la sintaxis.

Nota: en una interfaz de Excel en español la función puede aparecer como PROMEDIO.SI.CONJUNTO. Equivalentes: AVERAGEIF = PROMEDIO.SI, SUMIFS = SUMAR.SI.CONJUNTO, COUNTIFS = CONTAR.SI.CONJUNTO, IFERROR = SI.ERROR, FILTER = FILTRAR, MEDIAN = MEDIANA, DATE = FECHA. Las fórmulas de abajo usan los nombres en inglés; el comportamiento es idéntico.

Lo que aprenderás

  • El modelo mental: el motor de agregación condicional, ahora devolviendo una media
  • La trampa estrella: conjunto vacío → #DIV/0!, y el arreglo de un solo envoltorio
  • La trampa silenciosa: los ceros se promedian, las celdas en blanco se ignoran
  • El orden de argumentos invertido en AVERAGEIF vs AVERAGEIFS
  • Por qué AVERAGEIFS no puede hacer un promedio ponderado — y qué usar en su lugar

El modelo mental: el mismo motor, devolviendo una media

AVERAGEIFS se queda con las filas donde pasan todas tus pruebas y devuelve su promedio — SUMIFS de esas filas dividido entre COUNTIFS de esas filas. Esa definición no es trivia; es la fuente de cada trampa de abajo. Los criterios funcionan exactamente como en las funciones hermanas: operadores dentro de comillas, ">"&G1 para comparar contra una celda, DATE() para límites de fecha a prueba de idioma, Y de serie entre los pares.

' Promedio de la clase A
=AVERAGEIFS(Score, Class, "A")

' Promedio de la clase A, por encima del corte de G1 (Y)
=AVERAGEIFS(Score, Class, "A", Score, ">"&G1)

La trampa estrella: sin coincidencias significa #DIV/0!, no cero

Este es el único comportamiento que pilla a todo el mundo, y se sigue directamente de «suma ÷ conteo». Si ninguna fila coincide, el conteo es 0, y dividir entre cero es indefinido — así que AVERAGEIFS devuelve #DIV/0!. Compáralo con sus hermanas sobre el mismo conjunto vacío:

=SUMIFS(Score, Class, "Z")        ' -> 0        (una suma de nada es cero)
=COUNTIFS(Class, "Z")             ' -> 0        (un conteo de nada es cero)
=AVERAGEIFS(Score, Class, "Z")    ' -> #DIV/0!  (una media de nada es indefinida)

Esa asimetría rompe los paneles: un resumen con SUMIFS sobrevive a una categoría vacía, pero el AVERAGEIFS de al lado se enciende en rojo y se propaga a cualquier cosa que lo referencie. El arreglo es decidir qué debería mostrar «sin datos» y envolverlo:

=IFERROR(AVERAGEIFS(Score, Class, "A"), "n/d")
=IFERROR(AVERAGEIFS(Score, Class, "A"), "")     ' en blanco, si lo prefieres

Haz de IFERROR un reflejo en cada AVERAGEIFS que alimente un informe o una categoría que algún día pueda quedar vacía. No es paranoia defensiva — es la diferencia entre que «aún sin ventas» se lea como n/d frente a una hoja rota.

La trampa silenciosa: los ceros cuentan, las celdas en blanco no

AVERAGEIFS ignora las celdas del rango de promedio que están en blanco o son texto — no cuentan ni para el numerador ni para el denominador. Pero una celda que contiene un 0 es un número real, así que se promedia, y arrastra la media hacia abajo. Esto es una decisión de captura de datos disfrazada de problema de fórmula:

Si un comercial no hizo ninguna venta y lo registras como 0, su cero se promedia. Si lo registras como en blanco, queda excluido por completo. La misma «sin ventas», dos promedios completamente distintos — y nada en la fórmula te dice cuál obtuviste.

Decide en el origen qué significa «faltante». Si los ceros deben excluirse del promedio, o los dejas en blanco o añades un criterio que los filtre: =AVERAGEIFS(Score, Class, "A", Score, "<>0"). La idea es hacer la elección explícita en lugar de dejar que tu convención de captura de datos la decida en silencio por ti.

El orden de argumentos invertido (la misma historia que SUMIF)

AVERAGEIF y AVERAGEIFS invierten sus argumentos exactamente igual que lo hacen SUMIF y SUMIFS:

=AVERAGEIF(Class, "A", Score)        ' rango de prueba primero, rango de promedio al final
=AVERAGEIFS(Score, Class, "A")        ' rango de promedio PRIMERO, luego los pares de prueba

Misma trampa, mismo arreglo: usa AVERAGEIFS para todo. El orden es consistente tengas una condición o cinco, y esquivas el cambio silencioso de columna que viene de copiar entre las dos formas.

El criterio: AVERAGEIFS da una media simple, no una ponderada

Este es el error conceptual que sobrevive incluso después de que hayas dominado la sintaxis. AVERAGEIFS promedia las celdas del rango de promedio — cada fila que coincide cuenta por igual. No puede darte un promedio ponderado, donde cada fila debería contar en proporción a una cantidad. El precio promedio entre pedidos no es lo que los clientes pagaron en realidad; necesitas el precio ponderado por la cantidad:

' Pregunta EQUIVOCADA: media simple de las celdas de precio
=AVERAGEIFS(Price, Region, "West")

' CORRECTO para una tarifa combinada: valor total ÷ cantidad total (ponderado)
=SUMIFS(Value, Region, "West") / SUMIFS(Qty, Region, "West")

«Media de las celdas que coinciden» y «tarifa combinada» son preguntas distintas, y AVERAGEIFS solo responde la primera. El mismo límite se aplica a una mediana o moda condicional — no existe MEDIANIFS; recurre a FILTER y envuélvelo: =MEDIAN(FILTER(Score, Class="A")).

Cómo ayuda ExcelMaster

La parte peligrosa de un promedio condicional no es teclearlo — es saber que una categoría vacía lanza #DIV/0!, que los ceros registrados sesgan la media, y que «precio promedio» normalmente debería ser una tarifa ponderada. ExcelMaster lee tu intención — el tamaño medio de operación del equipo Oeste este trimestre, en blanco si no hay ninguna — y escribe el AVERAGEIFS protegido (o el SUMIFS/SUMIFS ponderado cuando es eso lo que de verdad querías decir), para que el número responda la pregunta que hiciste.

Preguntas frecuentes

¿Por qué AVERAGEIFS devuelve #DIV/0!?

Ninguna fila coincidió con tus criterios, así que no hay nada que promediar y Excel no puede dividir entre un conteo de cero. Envuélvelo: =IFERROR(AVERAGEIFS(…), "n/d"). A diferencia de SUMIFS (que devuelve 0 con un conjunto vacío), AVERAGEIFS siempre da error cuando nada coincide.

¿AVERAGEIFS incluye los ceros en el promedio?

Sí. Una celda que contiene 0 es un número real y se promedia, bajando la media. Las celdas en blanco y de texto se ignoran por completo. Si los datos «faltantes» se guardan como 0 y no deberían contar, exclúyelos con un criterio: =AVERAGEIFS(Score, Score, "<>0").

¿Cuál es la diferencia entre AVERAGEIF y AVERAGEIFS?

AVERAGEIF admite una condición con el rango de prueba primero; AVERAGEIFS admite una o más con el rango de promedio primero — los argumentos están invertidos. Usa siempre AVERAGEIFS para evitar el cambio silencioso.

¿Cómo hago un promedio ponderado con condiciones?

AVERAGEIFS no puede — pondera cada fila por igual. Divide un total condicional entre un total condicional: =SUMIFS(Value, Region, "West") / SUMIFS(Qty, Region, "West").

¿Cómo promedio valores entre dos fechas?

Dos criterios sobre la columna de fechas, construidos con DATE(): =AVERAGEIFS(Amount, OrderDate, ">="&DATE(2026,1,1), OrderDate, "<="&DATE(2026,3,31)) — y envuélvelo en IFERROR por si la ventana queda vacía.

Probado en

Probado en: Excel 365 (Windows 11) — última verificación 24-06-2026.

Guías relacionadas: Excel SUMIFS · Excel COUNTIFS · Excel FILTER · Excel UNIQUE