Excel · Capítulo 3 · Lección de conceptos · 6 min de lectura

Cómo SUMIF prueba cada fila

SUMIF y COUNTIF miran un rango de criterios fila por fila, se quedan con las filas que pasan la prueba y solo entonces suman o cuentan. Con varias condiciones, una fila cuenta únicamente si las cumple todas.

La idea

Una función condicional es un bucle que nunca escribes. SUMIF baja por una columna, pregunta a cada fila "¿pasas mi prueba?" y suma la tercera columna solo en las filas que dijeron que sí. COUNTIF hace lo mismo y cuenta los síes.

Piénsalo como un filtro seguido de una agregación, lo que SQL escribe como WHERE y SUM. La prueba es la parte que controlas tú, y casi todos los errores de este capítulo son errores en la prueba. Lee el diagrama como un guion corto: elige una prueba, marca las filas que pasan y suma solo las filas marcadas.

Figura 1

Ocho pedidos del Black Friday, filtrados con SUMIFS

orders
order_idchannelstatuscoupon_codesubtotal
12059apprefundedBFCM25424.46
12060appcompleted119.94
12061webcompletedBFCM258.99
12062webcompleted339.86
12063appcompleted132.97
12064appcompleted2002.88
12065appcompleted136.95
12066appcompletedBFCM2526.99
Resultado
formulareturns
=SUMIF(B2:B9,"app",E2:E9)2844.19
=SUMIFS(E2:E9,B2:B9,"app",C2:C9,"completed")2419.73

Paso 1 de 5 Un día de pedidos de Harbor & Pine en A2:E9. La pregunta: ¿cuántos ingresos llegaron por la app? La respuesta es una suma de subtotal, pero solo sobre algunas filas.

  1. Un día de pedidos de Harbor & Pine en A2:E9. La pregunta: ¿cuántos ingresos llegaron por la app? La respuesta es una suma de subtotal, pero solo sobre algunas filas.
  2. SUMIF(B2:B9, "app", E2:E9) tiene tres partes. El primer rango se prueba, fila por fila, contra el criterio "app". El tercer rango es lo que se suma. Las filas 12061 y 12062 no pasan la prueba.
  3. Solo las filas que sobreviven aportan su subtotal: 424.46 + 119.94 + 132.97 + 2002.88 + 136.95 + 26.99 = 2844.19.
  4. El pedido 12059 fue reembolsado, así que ese ingreso no es real. SUMIFS añade una segunda prueba y una fila debe pasar las dos. 12059 falla la prueba del estado y queda fuera.
  5. Cinco filas pasan las dos pruebas: 2844.19 − 424.46 = 2419.73. Cada condición extra solo puede quitar filas, nunca añadirlas.

Por qué existe

Los responsables rara vez piden "el total". Piden "el total de la app", "el total de los pedidos completados de más de $250", "solo el fin de semana de la promoción". Sin funciones condicionales filtrarías la hoja, seleccionarías las celdas visibles, leerías un número en la barra de estado y lo pegarías en otro sitio, y tendrías que repetirlo todo cuando cambie un pedido.

Una fórmula condicional mantiene viva la pregunta. Apunta el criterio a una celda que contiene "app", y al escribir "web" en esa celda la pregunta se responde de nuevo al instante. Una fórmula arrastrada a lo ancho y a lo largo de una cuadrícula de canales y estados da la tabla de resumen completa.

Cómo funciona por dentro

Los rangos se alinean fila por fila

En SUMIF(rango, criterio, rango_suma), el rango que se prueba y el que se suma deben tener la misma forma. Excel los empareja por posición: la fila 1 de uno con la fila 1 del otro. Si desplazas uno de ellos una fila, por ejemplo B2:B9 contra E3:E10, cada prueba se aplica al importe equivocado. No aparece ningún error. SUMIFS invierte el orden de sus argumentos: el rango que se suma va primero, y luego vienen pares de rango y criterio.

Varias condiciones significan "y"

SUMIFS, COUNTIFS, AVERAGEIFS, MAXIFS y MINIFS aceptan tantos pares de rango y criterio como quieras. Una fila cuenta solo si pasan todos los pares. Para un "o", suma dos SUMIFS separados, pero asegúrate de que ninguna fila pueda pasar ambos o la contarás dos veces. MAXIFS y MINIFS encuentran el valor mayor o menor entre las filas que pasan, como el pedido completado más grande de un fin de semana.

Los criterios son cadenas

Cada criterio se lee como texto y se interpreta. Un valor simple significa igual. Un operador al principio (>, >=, <, <=, <>) cambia la comparación. * y ? son comodines en texto. Para comparar con una celda, pega el operador y la celda: ">="&H1 se convierte en ">=250" cuando H1 contiene 250. Olvidar las comillas o el & es la razón habitual por la que un criterio no coincide con nada sin avisar.

Figura 2

Qué coincide con cada criterio en los mismos ocho pedidos

criteria
criteriontested_againstrows_matching
"app"channel6
">=250"subtotal3
"<>refunded"status7
"BF*"coupon_code3
"<>BFCM25"coupon_code5
""coupon_code5

Paso 1 de 5 Un criterio es una cadena pequeña. Una palabra sola significa igual: "app" coincide con las seis filas cuyo canal es exactamente app (no importan las mayúsculas).

  1. Un criterio es una cadena pequeña. Una palabra sola significa igual: "app" coincide con las seis filas cuyo canal es exactamente app (no importan las mayúsculas).
  2. Un operador de comparación va dentro de las comillas. ">=250" conserva los subtotales de 250 o más: 424.46, 339.86 y 2002.88, es decir, tres filas.
  3. "<>refunded" significa distinto de. Siete de las ocho filas pasan, porque solo 12059 está reembolsado.
  4. * representa cualquier cadena de caracteres y ? uno solo. "BF*" coincide con los cupones que empiezan por BF: tres filas. Las celdas vacías no son texto, así que un comodín nunca las incluye.
  5. "<>BFCM25" coincide con las cinco filas que tienen un cupón distinto, y las celdas vacías cuentan como distintas. Si solo quieres las filas que tienen cupón, usa "*", no "<>".

Qué cuenta como vacío

Hay tres preguntas sobre el vacío, y cada una tiene su función. COUNTA cuenta las celdas que contienen algo, COUNT cuenta solo números y COUNTBLANK cuenta celdas vacías. Una celda con una cadena vacía "" devuelta por una fórmula parece vacía pero es texto. Como "<>x" significa "cualquier cosa excepto x", incluye las celdas vacías. Si quieres decir "tiene un valor distinto de x", exprésalo con dos condiciones: "<>x" y "<>".

Una fórmula para toda una tabla de resumen

El mejor uso de estas funciones es una cuadrícula. Pon los canales en la columna A y los estados en la fila 1, y escribe un solo SUMIFS en la celda superior izquierda: el rango de importes y los dos rangos de criterios bloqueados con $ en todas las esquinas, y los dos criterios apuntando a las etiquetas con referencias mixtas, $A2 para el canal y B$1 para el estado. Rellénala a la derecha y hacia abajo y cada celda se hace su propia pregunta: este canal, este estado. Es la idea de las referencias mixtas del primer capítulo trabajando de verdad, y sustituye a una tabla dinámica cuando necesitas un diseño pequeño y fijo.

Añade una fila y una columna de totales con SUM simple y compara el total general con un SUM de toda la columna de importes. Si difieren, algún pedido tiene un canal o un estado que tus etiquetas no incluyen, una errata o un espacio al final, y ese pedido falta en la tabla sin avisar.

Comprobar la respuesta

La comprobación rápida es un filtro. Aplica un autofiltro con las mismas condiciones, selecciona la columna de importes y lee la suma en la barra de estado de abajo. Si coincide con la fórmula, los criterios hacen lo que crees. Si no, compara el número de filas visibles con COUNTIFS con las mismas condiciones: un recuento que no coincide apunta a un criterio incorrecto; un recuento que coincide pero una suma que no, apunta a rangos desalineados.

Errores comunes

"SUMIF suma la columna que pruebo"

El primer rango se prueba y el tercero se suma. A menudo son columnas distintas, y si omites el tercero, SUMIF suma el propio rango probado. Eso solo es lo que quieres cuando la prueba y el importe son la misma columna, como "suma los subtotales que son al menos 250".

"Una segunda condición amplía el resultado"

Cada par extra de SUMIFS lo reduce. Dos pruebas unidas así significan que ambas deben ser verdaderas. Si quieres los pedidos de la app o de la web, un solo SUMIFS con las dos condiciones de canal devuelve cero, porque ninguna fila está en dos canales.

"<> significa que tiene un valor distinto"

Significa distinto de, y una celda vacía no es igual a nada. Contar "pedidos sin el cupón BFCM25" con "<>BFCM25" incluye por tanto los pedidos que no tienen ningún cupón. Ahí resulta ser la respuesta correcta, pero para "pedidos con algún otro cupón" cuenta de más sin avisar.

Ponte a prueba

Una pregunta. Al responderla, la lección queda marcada en el mapa; nunca bloquea un nivel.

Con los ocho pedidos de arriba, ¿qué devuelve =COUNTIFS(B2:B9,"app",D2:D9,"<>BFCM25")?

Elige qué puede ejecutarse en este sitio. Puedes cambiarlo cuando quieras desde "Configurar cookies", al pie de cada página.