Como sumar dos criterios en la misma columna con macros en excel.

En la Hoja1 tengo 3 columnas, quiero correr dos bucles en la columna B, el primero que busque el color azul y que almacene el monto de la columna C y el segundo que busque blanco y que almacene el monto de la columna C y que sume el monto de los dos colores. Resultado = 30+20=50.

Nota: hay colores de la fila 2 hasta la n.

Respuesta
3

Prueba lo siguiente:

=SUMAR.SI(B2:B10,"Azul",C2:C10)+SUMAR.SI(B2:B10,"Blanco",C2:C10)

Nota: Cambia las comas ( , )  por punto y coma ( ; ) si lo utilizas de separador de argumentos.

Gracias por la respuesta en tan poco tiempo, yo use la fórmula sumar. Si. Conjunto; pero busco hacerlo con macros, con si anidado usando for next, tengo el siguiente código me podría ayudar a modificar el siguiente código:

Sub IfAnidado()
'inicializo la variable resultado
Dim Res As Double
Dim i As Long
Res = 0
    'comienzo el bucle
    For i = 2 To 100
        If Cells(i, 2) = "Rojo" Then   'criterio que debe cumplir Columna B
            'sumo sólo los valores que cumplen el criterio
            'y voy sumando acumuladamente a lo anterior.
            Res = Res + Cells(i, 3) 'Rango a sumar C
        End If
        If Hoja7.Cells(i, 3) = Empty Then
            Hoja7.Cells(i, 3) = Res
        End If
    Next
End Sub

Gracias por la respuesta en tan poco tiempo, yo use la fórmula sumar. Si. Conjunto; pero busco hacerlo con macros, con si anidado usando for next, tengo el siguiente código me podría ayudar a modificar el siguiente código:

Sub IfAnidado()
'inicializo la variable resultado
Dim Res As Double
Dim i As Long
Res = 0
    'comienzo el bucle
    For i = 2 To 100
        If Cells(i, 2) = "Rojo" Then   'criterio que debe cumplir Columna B
            'sumo sólo los valores que cumplen el criterio
            'y voy sumando acumuladamente a lo anterior.
            Res = Res + Cells(i, 3) 'Rango a sumar C
        End If
        If Hoja7.Cells(i, 3) = Empty Then
            Hoja7.Cells(i, 3) = Res
        End If
    Next
End Sub

No es necesario el bucle:

Sub sumar()
  Dim res As Double
  Dim lr As Long
  lr = Range("B" & Rows.Count).End(3).Row
  res = WorksheetFunction.SumIf(Range("B2:B" & lr), "Azul", Range("C2:C" & lr)) + _
        WorksheetFunction.SumIf(Range("B2:B" & lr), "Blanco", Range("C2:C" & lr))
  MsgBox res
End Sub

Pero si quieres aprende cómo hacerlo con bucle:

Sub If_Anidado()
  Dim i As Long
  Dim res As Double
  For i = 2 To Range("B" & Rows.Count).End(3).Row
    If LCase(Range("B" & i).Value) = LCase("Azul") Or LCase(Range("B" & i).Value) = LCase("Blanco") Then
      res = res + Range("C" & i).Value
    End If
  Next
  MsgBox res
End Sub

¡Gracias! 

Buenos días, disculpa la molestia, si quiero pegar el resultado en la primer celda vacía que líneas de código le tengo que agregar. No lo quiero en una caja de mensaje sino en una celda vacía.

Cambia esto:

MsgBox res

No mencionas en la primer celda vacía de cuál columna?

Supongo que la columna A.

Entonces utiliza lo siguiente:

range("A" & rows.count).end(3)(2).value = res

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas