Sumar con la Función Sumar.SI VBA

Hace unos días yo necesitaba usar desde VBA la función Sumar. Si, así que investigue un poco y encontré al parecido, lo quise acomodar a lo que necesitaba pero no lo logre, en la "Hoja1" tengo una tabla de datos, que empiezan desde "A2;Z500", En la columna "B" Tengo los datos que me servirán de condición, Ejemplo Arturo, Blanca, Camilo, etc, en la "Hoja2" tengo el Listado de las condiciones, en la columna "C", en "C2" estaría Arturo, en "C3" estaría Blanca y así sucesivamente,

Lo que quiero hacer es lo siguiente:

Que me sume todos los valores que están en la columna "D" de la "Hoja1", colocando el resultado el la "Hoja2" en la columna "D", en otras palabras, el resultado de la condición "Arturo" la macro colocaria suma en "D2" y la condición Blanca en celda "D3" así sucesivamente

ESTE ES EL CÓDIGO QUE MENCIONABA, si alguien me pudiera ayudar, desde ya muchas gracias

Sub Contar_Condicional()

'inicializo la variable resultado
RESULTADO = 0
'comienzo el bucle
For i = 2 To 100
If Cells(i, 2) = "OK" Then 'criterio qeu debe cumplir
'sumo sólo los valores que cumplen el criterio
'y voy sumando acumuladamente a lo anterior.
RESULTADO = RESULTADO + Cells(i, 1)
End If
Next
MsgBox RESULTADO
End Sub

1 Respuesta

Respuesta
1

Muy lenta esa macro, lo que pides se puede hacer en un solo paso usando formulas de Excel asi, esta macro coloca la formula sumar. Si con las condiciones que especificaste en la hoja2 a partir de la celda de y hasta la ultima celda con datos de la columna B de la hoja2

Si quieres puedes dejarla como formula o bien convertir a valores quitando la palomita de la linea que esta en verde y esta es la macro

Sub sumar_condicionado()
Set h1 = Worksheets("hoja1")
Set h2 = Worksheets("hoja2")
filas2 = h2.Range("a2").CurrentRegion.Rows.Count
With h1.Range("a2").CurrentRegion
    rango1 = .Columns(2).Address
    rango2 = .Columns(4).Address
End With
With h2.Range("d2").Resize(filas2, 1)
    .Formula = "=sumif(hoja1!" & rango1 & ",hoja2!b2,hoja1!" & rango2 & ")"
    '.Value = .Value
End With
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas