Fórmula genérica
=SUMAPRODUCTO(data*(headers=A1))
Explicación
Para sumar valores en columnas haciendo coincidir los encabezados de columna coincidentes, puede usar una fórmula basada en la función SUMAPRODUCTO. En el ejemplo que se muestra, la fórmula en J5 es:
=SUMAPRODUCTO(data*(IZQUIERDA(headers)=J4))
donde "datos" es el rango con nombre B5: G14, y "encabezados" es el rango con nombre B4: G4.
La fórmula suma las columnas donde los encabezados comienzan con "a" y devuelve 201.
Cómo funciona esta fórmula
En esencia, esta fórmula se basa en la función SUMAPRODUCTO para sumar valores en columnas coincidentes en el rango de "datos" con nombre C5: G14. Si todos los datos se proporcionaron a SUMAPRODUCTO en un solo rango, el resultado sería la suma de todos los valores en el rango:
=SUMAPRODUCTO(data) // all data, returns 387
Para aplicar un filtro haciendo coincidir los encabezados de columna (columnas con encabezados que comienzan con "A"), utilizamos la función IZQUIERDA de esta manera:
IZQUIERDA(headers)=J4) // must begin with "a"
Esta expresión devuelve VERDADERO si el encabezado de una columna comienza con "a" y FALSO si no. El resultado es una matriz:
{VERDADERO,VERDADERO,FALSO,FALSO,VERDADERO,FALSO}
Puede ver que los valores 1,2 y 5 corresponden a columnas que comienzan con "a".
Dentro de SUMAPRODUCTO, esta matriz se multiplica por "datos". Debido a la transmisión, el resultado es una matriz bidimensional como esta:
{8,10,0,0,7,0;9,10,0,0,10,0;8,6,0,0,6,0;7,6,0,0,6,0;8,6,0,0,6,0;10,11,0,0,7,0;7,8,0,0,8,0;2,3,0,0,3,0;3,4,0,0,4,0;7,7,0,0,4,0}
Si visualizamos esta matriz en una tabla, es fácil ver que solo los valores en las columnas que comienzan con "a" han sobrevivido a la operación, todas las demás columnas son cero. En otras palabras, el filtro mantiene valores de interés y "cancela" el resto:
A001 | A002 | B001 | B002 | A003 | B003 |
---|---|---|---|---|---|
8 | 10 | 0 | 0 | 7 | 0 |
9 | 10 | 0 | 0 | 10 | 0 |
8 | 6 | 0 | 0 | 6 | 0 |
7 | 6 | 0 | 0 | 6 | 0 |
8 | 6 | 0 | 0 | 6 | 0 |
10 | 11 | 0 | 0 | 7 | 0 |
7 | 8 | 0 | 0 | 8 | 0 |
2 | 3 | 0 | 0 | 3 | 0 |
3 | 4 | 0 | 0 | 4 | 0 |
7 | 7 | 0 | 0 | 4 | 0 |
Con solo una matriz para procesar, SUMAPRODUCTO devuelve la suma de todos los valores, 201.
Suma por coincidencia exacta
El ejemplo anterior muestra cómo sumar columnas que comienzan con uno o más caracteres específicos. Para sumar una columna basada en una coincidencia exacta, puede usar una fórmula más simple como esta:
=SUMAPRODUCTO(data*(headers=J4))
0 comentarios:
Publicar un comentario