SUMAR CADA N VALOR DE UN RANGO

No es la primera vez que tengo que recurrir a código cuando necesito realizar alguna tarea a la que las fórmulas no son capaces de llegar. Pero esto no siempre sucede, en algunas ocasiones, fruto de la combinación de funciones podemos llegar a resultados igual de satisfactorios.

Por ejemplo, podemos sumar cada n valor de un rango de celdas, es decir, por ejemplo, sumar el contenido de cada dos celdas.

SUMAR CADA N VALOR DE UN RANGO

En este ejemplo he marcado en azul las celdas que necesito sumar, que son las que van de dos en dos (sin tener en cuenta el encabezado). El resultado debe darnos 156.

Para lograr el cálculo debemos utilizar la siguiente fórmula o función:

{=SUMA(SI(RESIDUO(FILA(INDIRECTO("1:"&CONTARA(A1:A26)))-1;2)=0;A1:A26;""))}

En realidad la clave de esta función matricial se apoya en el uso de la función residuo, condicionando su resultado a que los números del rango (matriz) se consideren o no para la suma. Esto lo podéis observar si aplicáis solo parte de la fórmula pero en otra columna, en la “B”:

{=SI(RESIDUO(FILA(INDIRECTO("1:"&CONTARA($A$1:$A$26)))-1;2)=0;$A$1:$A$26;"")}

Este sería el resultado:

SUMAR CADA N VALOR DE UN RANGO1

Como podéis ver, cuando el resultado de Residuo es cero, es lo mismo que decir que la fila es divisible por ese “n” número definido, en este caso el 2. Al ser cierto, la función “si” condicional, toma ese número en la suma y si no lo es, no lo incluye. En el ejemplo de arriba, simplemente he aplicado parte de fórmula para lo que veáis.

De nuevo os recuerdo que las matrices se introducen: seleccionando la fórmula y luego presionando CTRL + MAYUS + ENTRAR

Aunque no tenía intención, al final no me pude resistir y he reproducido el mismo ejercicio pero con macros. Se puede hacer de muchas formas, pero lo he resuelto con un bucle for next:

Sub SUMAR_N_VALORES()
With Sheets(1)
Dim i As Double
Dim j As Double
fin = Application.CountA(.Range("A:A"))
'Desde la celda 2 hasta fin menos 1 (cabecero) e incrementando de 2 en 2
For i = 2 To fin - 1 Step 2
'Acumulamos en j el resultado de la suma
j = j + i
Next i
'Igualamos valor de celda a resultado
.Cells(2, 3) = j
End With
End Sub

El resultado es exactamente el mismo utilizando tanto la fórmula como la macro:

SUMAR CADA N VALOR DE UN RANGO

Ahora solo queda que lo adaptéis a vuestros proyectos y trabajos y obtengáis los beneficios de trabajar con Excel.

Descarga el archivo de ejemplo pulsando en: SUMAR CADA N VALOR DE UN RANGO

6 pensamientos en “SUMAR CADA N VALOR DE UN RANGO

  1. Hola. Me gustan tus explicaciones. Tengo una pregunta. Quisiera colorear en una hoja de Excel sólo las filas alternas. Usando o una fórmula o vba pero en Excel 2010 que creo no está la fórmula residuo. Me puedes dar alguna idea? Gracias

    Me gusta

    • Hola,
       
      Puedes hacerlo directamente a través de Inicio > Formato Condicional> Nueva Regla y eliges la opción: Utilice una fórmula que determine las celdas para aplicar formato.

      Una vez abierta la pantalla introduces esta fórmula: =RESIDUO(FILA(),3)=0  y eliges el color de relleno. Resaltará con ese color cada 3 celdas.

      Puedes hacerlo también con una macro, (suponiendo que tus datos tenga cabecera)
      Sub color_n()
      Dim i As Double
      fin = Application.CountA(Sheets(1).Range(“a:a”))
      For i = 2 To fin Step 3
      Sheets(1).Cells(i, 1).Interior.Color = vbRed
      Next
      End Sub

      Espero te sirva de ayuda!

      Me gusta

  2. Hola, me podrian ayudar???

    Estoy tratando de buscar la forma en cómo sumar o restar cantidad con condiciones diferentes

    Le explico: al ingresar los datos a mi formulario agrego los datos sig:

    Hoja Entradas
    codigo del articulo
    condición (nuevo, usado, incompleto)
    cantidad

    Aquí viene mi duda:
    Al ingresar el código con la condición nuevo, despuesto vuelvo a ingresar el mismo código pero con la condición usado…. en la hoja entradas, sólo lo que hace es sumar en la misma fila (donde aparece el código) las cantidades que voy ingresando, no hace una separación entre código nuevo y condigo usado…

    ayuda por favor!!!

    Me gusta

¿Te ha gustado?, Realiza un comentario.

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios .