Excel: sumar por nombres de encabezado independientemente del orden de columnas

¿Necesitas sumar columnas por nombre de encabezado y que la fórmula siga funcionando aunque cambies el orden de las columnas? En esta guía aprenderás varios métodos fiables en Excel —desde los compatibles con versiones antiguas hasta los más modernos— para sumar por encabezado sin depender de la posición.

Índice

Resumen del problema

Queremos sumar los valores de un bloque de celdas (por ejemplo, B3:C5) únicamente en aquellas columnas cuyo encabezado coincide con una lista de nombres, como “A1” y “A2”, y que la solución funcione aunque el orden de las columnas cambie.

Idea clave

La técnica general es siempre la misma:

  • Comparar la fila de encabezados con la lista de nombres objetivo (p. ej., “A1”, “A2”).
  • Usar ese resultado como máscara para seleccionar solo las columnas que coinciden.
  • Sumar únicamente las columnas activadas por la máscara.

Con esta idea podrás construir fórmulas que no se rompen cuando insertas, borras o reordenas columnas.

Opción A — Compatible sin funciones nuevas

Este enfoque funciona en la mayoría de las versiones de Excel (evita la necesidad de Ctrl+Mayús+Entrar en versiones antiguas) usando SUMPRODUCT:

=SUMPRODUCT( ( (B2:C2="A1") + (B2:C2="A2") ) * B3:C5 )

Cómo trabaja:

  • B2:C2="A1" y B2:C2="A2" devuelven arrays de VERDADERO/FALSO indicando en qué columnas está cada encabezado.
  • La suma de ambas condiciones genera una máscara de 1/0 con todas las columnas a incluir.
  • La multiplicación por B3:C5 mantiene los valores de las columnas seleccionadas y pone 0 en las demás.

Para más de dos encabezados, usa una lista literal:

=SUMPRODUCT( ISNUMBER(MATCH(B2:C2, {"A1","A2"}, 0)) * B3:C5 )

O, mejor aún, una lista en celdas (por ejemplo, los encabezados deseados en E1:G1):

=SUMPRODUCT( ISNUMBER(MATCH(B2:Z2, $E$1:$G$1, 0)) * B3:Z5 )

Consejo: ajusta Z al límite real de tus datos.

Ventajas de esta opción

  • Compatibilidad muy alta: funciona incluso sin funciones modernas.
  • Admite encabezados duplicados: si hay varias columnas con el mismo nombre, las suma todas.
  • Flexible para añadir criterios de filas u otro tipo de filtros.

Variaciones útiles con esta opción

  • Lista de encabezados en rango y filas filtradas: =SUMPRODUCT( ISNUMBER(MATCH(B2:Z2, $E$1:$G$1, 0)) * (B3:Z5) )
  • Coincidencia sensible a mayúsculas con EXACT: =SUMPRODUCT( (EXACT(B2:Z2,"A1") + EXACT(B2:Z2,"A2")) * B3:Z5 )
  • Coincidencia parcial (contiene la palabra): =SUMPRODUCT( ISNUMBER(SEARCH("A1", B2:Z2)) * B3:Z5 ) Ojo: con coincidencias parciales puedes incluir columnas no deseadas si sus encabezados comparten el texto.
  • Forzar a número si hay texto en el rango: =SUMPRODUCT( ISNUMBER(MATCH(B2:Z2, $E$1:$G$1, 0)) * N(B3:Z5) )
  • Resta entre columnas (p. ej., “A1” menos “A2”): =SUMPRODUCT( (B2:Z2="A1")B3:Z5 ) - SUMPRODUCT( (B2:Z2="A2")B3:Z5 )

Opción B — Con XLOOKUP para suscripción

Si cuentas con la suscripción moderna de Excel, XLOOKUP ofrece una fórmula compacta y elegante:

=SUM( XLOOKUP({"A1","A2"}, $B$2:$Z$2, $B$3:$Z$5, 0) )

Claves de esta fórmula:

  • Devuelve las columnas completas bajo los encabezados solicitados, en el orden en que estén en la hoja.
  • El cuarto argumento en XLOOKUP se usa como valor si no se encuentra; con 0 evitamos errores y sumamos cero si falta un encabezado.
  • Para N encabezados, sustituye el literal por un rango (p. ej., $E$1:$G$1): =SUM( XLOOKUP($E$1:$G$1, $B$2:$Z$2, $B$3:$Z$5, 0) )

Cuándo elegir esta opción

  • Quieres una fórmula corta y clara.
  • Necesitas un comportamiento estable si un encabezado no existe (suma 0 en lugar de devolver error).
  • No tienes encabezados duplicados para el mismo nombre (XLOOKUP devuelve una sola coincidencia por nombre).

Opción C — Con CHOOSECOLS y XMATCH

Combinando XMATCH con CHOOSECOLS obtienes una solución muy legible:

=SUM( CHOOSECOLS( $B$3:$Z$5, XMATCH({"A1","A2"}, $B$2:$Z$2) ) )

Cómo funciona:

  • XMATCH localiza las posiciones de las columnas por nombre.
  • CHOOSECOLS devuelve solo esas columnas y luego SUM agrega todo.

Si alguno de los encabezados pudiera no existir, evita errores filtrando los índices válidos:

=LET(
  idx, IFNA( XMATCH($E$1:$G$1, $B$2:$Z$2), 0 ),
  idxOk, FILTER(idx, idx>0),
  SUM( CHOOSECOLS($B$3:$Z$5, idxOk) )
)

Ten en cuenta que esta opción, por diseño, toma una coincidencia por nombre; si hay columnas duplicadas con el mismo encabezado, no las sumará todas salvo que construyas una máscara con SUMPRODUCT (opción A).

Ejemplo reproducible

Supón la siguiente matriz de datos. Los encabezados están en la fila 2, y queremos sumar “A1” y “A2” en las filas 3 a 5.

ColBCDE
FilaEncabezadoEncabezadoEncabezadoEncabezado
2A1A2A3Otros
32359
41-470
510023

La suma de las columnas “A1” y “A2” en B3:C5 es 12 (cálculo: (2+3) + (1-4) + (10+0) = 12).

Si cambias el orden de las columnas —por ejemplo, dejando la fila 2 como A2, Otros, A1, A3— las fórmulas de las opciones A, B y C seguirán devolviendo 12 porque se basan en el nombre del encabezado, no en la posición.

Guía paso a paso con la opción compatible

  1. Selecciona un rango amplio que cubra todos tus encabezados (p. ej., B2:Z2) y el bloque de datos (B3:Z5).
  2. Coloca la lista de encabezados objetivo en celdas, por ejemplo, E1:G1 con A1, A2, etc.
  3. Pega esta fórmula: =SUMPRODUCT( ISNUMBER(MATCH(B2:Z2, $E$1:$G$1, 0)) * B3:Z5 )
  4. Amplía Z hasta tu última columna real.

Comparativa rápida

MétodoCompatibilidadEncabezados duplicadosSi falta un encabezadoLegibilidad
SUMPRODUCT + MATCHAltaLos suma todosIgnorado sin errorMedia
SUM + XLOOKUPModernaUna coincidencia por nombreDevuelve 0 con cuarto argumentoAlta
SUM + CHOOSECOLS + XMATCHModernaUna coincidencia por nombreFiltrar índices válidosAlta

Buenas prácticas

  • Trabaja con rangos ajustados, evita usar columnas completas (B:Z) si no es necesario; mejora el rendimiento.
  • Convierte tu rango a Tabla (Ctrl+T) y usa referencias estructuradas para fórmulas más robustas.
  • Centraliza los nombres objetivo en un rango (p. ej., E1:G1) para cambiar la selección sin editar fórmulas.
  • Normaliza encabezados (quita espacios con TRIM o LIMPIAR y ajusta mayúsculas/minúsculas) para evitar falsos negativos.
  • Usa LET para calcular una vez y reutilizar: =LET(h,$B$2:$Z$2, datos,$B$3:$Z$5, obj,$E$1:$G$1, m,ISNUMBER(MATCH(h,obj,0)), SUMPRODUCT(m*datos))

Versiones con separador regional

Si tu configuración regional usa punto y coma (;) en lugar de ,, adapta así:

=SUMPRODUCT( ISNUMBER(MATCH(B2:Z2; $E$1:$G$1; 0)) * B3:Z5 )

Y la variante con XLOOKUP:

=SUM( XLOOKUP($E$1:$G$1; $B$2:$Z$2; $B$3:$Z$5; 0) )

Con Tablas y referencias estructuradas

Si tu rango de datos es una Tabla llamada TDatos cuya primera fila son los encabezados:

  • La fila de encabezados puede referenciarse con TDatos[#Headers].
  • Las filas de datos, sin la fila de encabezados, con TDatos[#Data].

Ejemplo con la opción A:

=SUMPRODUCT( ISNUMBER(MATCH(TDatos[#Headers]; $E$1:$G$1; 0)) * TDatos[#Data] )

Ejemplo con la opción C:

=LET(
  idx, XMATCH($E$1:$G$1; TDatos[#Headers]);
  SUM( CHOOSECOLS(TDatos[#Data]; idx) )
)

Filtrar por filas además de por columnas

La técnica de máscara por columnas se combina fácilmente con criterios por filas. Por ejemplo, suma “A1” y “A2” solo donde la columna “País” sea “ES”:

=SUMPRODUCT(
  ISNUMBER(MATCH($B$2:$Z$2; $E$1:$G$1; 0)) *
  ($B$3:$Z$100) *
  ($B$3:$B$100="ES")
)

Si dispones de funciones modernas:

=LET(
  cols, XLOOKUP($E$1:$G$1; $B$2:$Z$2; $B$3:$Z$100; 0);
  SUM( FILTER(cols; $B$3:$B$100="ES") )
)

Control de duplicados y listas dinámicas

  • Encabezados duplicados en la hoja: usa la opción A para sumarlos todos; XLOOKUP/XMATCH devuelven una sola posición.
  • Nombres repetidos en la lista de búsqueda ($E$1:$G$1): depúralos con UNIQUE para evitar sumar dos veces: =SUM( XLOOKUP( UNIQUE($E$1:$G$1); $B$2:$Z$2; $B$3:$Z$5; 0) )

Diagnóstico de errores comunes

  • #N/A en la opción C: algún nombre no existe. Usa el patrón con IFNA y FILTER para descartar los que no estén.
  • #VALUE! o resultados inesperados: los rangos deben tener el mismo tamaño horizontal; revisa que B2:Z2 y B3:Z5 abarquen exactamente las mismas columnas.
  • #SPILL! (solo en funciones dinámicas): hay algo bloqueando el derrame; despeja las celdas adyacentes.
  • Texto en datos: aplica N(rango) o multiplica por 1 (doble negativo --) para coaccionar a número.

Plantillas listas para pegar

Opción A — lista literal

=SUMPRODUCT( ISNUMBER(MATCH(B2:Z2, {"A1","A2"}, 0)) * B3:Z5 )

Opción A — lista en celdas

=SUMPRODUCT( ISNUMBER(MATCH(B2:Z2, $E$1:$G$1, 0)) * B3:Z5 )

Opción B — con XLOOKUP y lista literal

=SUM( XLOOKUP({"A1","A2"}, $B$2:$Z$2, $B$3:$Z$5, 0) )

Opción B — con XLOOKUP y lista en celdas

=SUM( XLOOKUP($E$1:$G$1, $B$2:$Z$2, $B$3:$Z$5, 0) )

Opción C — CHOOSECOLS + XMATCH

=SUM( CHOOSECOLS( $B$3:$Z$5, XMATCH({"A1","A2"}, $B$2:$Z$2) ) )

Opción C — tolerante a ausentes

=LET(
  idx, IFNA( XMATCH($E$1:$G$1, $B$2:$Z$2), 0 ),
  SUM( CHOOSECOLS($B$3:$Z$5, FILTER(idx, idx>0)) )
)

Mapa de funciones inglés ↔ español

InglésEspañolNotas
SUMSUMAAgrega números
SUMPRODUCTSUMAPRODUCTOProducto y suma de arrays
MATCHCOINCIDIRÍndice de coincidencia
XLOOKUPBUSCARXBúsqueda moderna
XMATCHCOINCIDIRXCoincidencia moderna
CHOOSECOLSELEGIRCOLUMNASExtraer columnas por índice
FILTERFILTRARFiltra por condición
LETLETAsigna nombres a cálculos
IFNASI.NDManeja #N/A
UNIQUEUNIQUEDevuelve únicos
EXACTIGUALSensible a mayúsculas
NNConvierte a número

Consejos finales

  • Si necesitas sumar múltiples columnas y estas pueden aparecer o desaparecer, centraliza la lista en un rango y usa cualquiera de las tres opciones según tu versión.
  • Si hay nombres de encabezado repetidos, elige la opción A para sumarlos todos sin sorpresas.
  • Para entornos con datos cambiantes, combina la máscara de columnas con filtros por filas para reflejar criterios de negocio en una sola fórmula.
  • Recuerda ajustar separadores ; y , según la configuración regional de tu Excel.

Resumen accionable

  • Rápido y compatible: =SUMPRODUCT( ISNUMBER(MATCH(B2:Z2, $E$1:$G$1, 0)) * B3:Z5 )
  • Compacto y moderno: =SUM( XLOOKUP($E$1:$G$1, $B$2:$Z$2, $B$3:$Z$5, 0) )
  • Legible con columnas elegidas: =SUM( CHOOSECOLS($B$3:$Z$5, XMATCH($E$1:$G$1, $B$2:$Z$2)) )

Referencia rápida de las fórmulas solicitadas

SUMPRODUCT básico

=SUMPRODUCT( ( (B2:C2="A1") + (B2:C2="A2") ) * B3:C5 )

SUMPRODUCT con lista literal

=SUMPRODUCT( ISNUMBER(MATCH(B2:C2, {"A1","A2"}, 0)) * B3:C5 )

SUMPRODUCT con lista en celdas

=SUMPRODUCT( ISNUMBER(MATCH(B2:Z2, $E$1:$G$1, 0)) * B3:Z5 )

XLOOKUP compacto

=SUM( XLOOKUP({"A1","A2"}, $B$2:$Z$2, $B$3:$Z$5, 0) )

XLOOKUP con rango de encabezados

=SUM( XLOOKUP($E$1:$G$1, $B$2:$Z$2, $B$3:$Z$5, 0) )

CHOOSECOLS + XMATCH

=SUM( CHOOSECOLS( $B$3:$Z$5, XMATCH({"A1","A2"}, $B$2:$Z$2) ) )

CHOOSECOLS + XMATCH tolerante a ausentes

=LET(
  idx, IFNA( XMATCH($E$1:$G$1, $B$2:$Z$2), 0 ),
  idxOk, FILTER(idx, idx>0),
  SUM( CHOOSECOLS($B$3:$Z$5, idxOk) )
)

Conclusión

Sea cual sea tu versión de Excel, puedes sumar por nombres de encabezado de forma segura y durable frente a cambios de orden de columnas. La opción A con SUMPRODUCT es la más versátil y compatible; la opción B con XLOOKUP es la más compacta y tolerante a encabezados ausentes; y la opción C con CHOOSECOLS + XMATCH destaca por su claridad. Elige la que mejor encaje con tu entorno y necesidades, y mantén siempre los rangos y encabezados bien definidos para lograr resultados confiables.

Índice