martes, 9 de junio de 2020

EXCEL: Suma cada enésima columna

Excel formula: Sum every nth column

Fórmula genérica

=SUMAPRODUCTO(--(RESIDUO(COLUMNA(rng)-COLUMNA(rng.first)+1,n)=0),rng)

Explicación

Para sumar cada enésima columna, puede usar una fórmula basada en las funciones SUMAPRODUCTO, RESIDUO y COLUMNA.

En el ejemplo que se muestra, la fórmula en L5 es:

=SUMAPRODUCTO(--(RESIDUO(COLUMNA(B5:J5)-COLUMNA(B5)+1,K5)=0),B5:J5)

Cómo funciona esta fórmula

En el núcleo, usa SUMAPRODUCTO para sumar valores en una fila que se han "filtrado" usando lógica basada en RESIDUO. La clave es esta:

RESIDUO(COLUMNA(B5:J5)-COLUMNA(B5)+1,K5)=0

Este fragmento de la fórmula utiliza la función COLUMNA para obtener un conjunto de números de columna "relativos" para el rango (explicado en detalle aquí) que se ve así:

{1,2,3,4,5,6,7,8,9}

Esto entra en RESIDUO así:

RESIDUO({1,2,3,4,5,6,7,8,9},K5)=0

donde K5 es el valor de N en cada fila. La función RESIDUO devuelve el resto para cada número de columna dividido por N. Entonces, por ejemplo, cuando N = 3, RESIDUO devolverá algo como esto:

{1,2,0,1,2,0,1,2,0}

Tenga en cuenta que los ceros aparecen para las columnas 3, 6, 9, etc. La fórmula usa = 0 para forzar un VERDADERO cuando el resto es cero y un FALSO cuando no, luego usamos un doble negativo (-) para obligar a VERDADERO y FALSO a unos y ceros. Eso deja una matriz como esta:

{0,0,1,0,0,1,0,0,1}

Donde 1s ahora indican "enésimos valores". Esto entra en SUMAPRODUCTO como array1, junto con B5: J5 como array2. SUMAPRODUCTO entonces hace lo suyo, primero multiplica, luego suma los productos de las matrices.

Los únicos valores que "sobreviven" a la multiplicación son aquellos en los que la matriz1 contiene 1. De esta manera, puede pensar en la lógica de la matriz1 que "filtra" los valores en la matriz2.

Suma cada dos columnas

Si desea sumar cada dos columnas, simplemente adapte esta fórmula según sea necesario, teniendo en cuenta que la fórmula asigna automáticamente 1 a la primera columna del rango. Para sumar las columnas REDONDEA.PAR, use:

=SUMAPRODUCTO(--(RESIDUO(COLUMNA(A1:Z1)-COLUMNA(A1)+1,2)=0),A1:Z1)

Para sumar las columnas REDONDEA.IMPAR, use:

=SUMAPRODUCTO(--(RESIDUO(COLUMNA(A1:Z1)-COLUMNA(A1)+1,2)=1),A1:Z1)

Comentarios en Facebook


0 comentarios:

Copyright © 2021 TRUJILLOSOFT