Como puedo sumar valores de una columna en relación a los valores de otra con excel VBA

Necesito su ayuda para resolver un problema que tengo, recibo unos reportes diarios de los cuales necesito tomar una información y no se como hacerle para que una macro en vba pueda hacerlo, tengo unas columnas como estas:
Plot Units Orden

6724 245 U86680

13 U86680

22 U86680

6724 16 U86680

140 U86680

2425 30 U86680

2325 17 U86680

26 U86680

140 U86680

6724 525 U86680

16 U86680

2425 126 U86680

55 U86680

Los renglones en blanco en la columna Plot y con cantidad en la columna unit, significa que corresponden al mismo numero de Plot, lo que necesito es poder sumar todas las cantidades en Unit que correspondan a cada plot, asi tendría que del Plot 6724 son 977 Units, del 2425 son 211, y del 2325 son 183.

1 Respuesta

Respuesta
2

Coloca los datos desde columna a hasta c

Plot en a unit en b orden en c

En la fila 1 van los rotulos desde la 2 hacia abajo los datos

Importante, no deben haber filas vacias entre en el bloque de datos

La columna d y e deben estar vacias, pues alli depositaremos los totales

Aca el macro:

Sub splot()
Dim r As Range
Dim t As Long
Dim n As String
'4c7569735f50
t = Application.WorksheetFunction.CountA(Range("C2:c65536")) + 1

If t <= 1 Then Exit Sub

For Each r In Range("c2:" & "C" & t)
If Len(Trim(r.Offset(0, -2))) > 0 Then n = Trim(r.Offset(0, -2))
If Len(Trim(r.Offset(0, -2))) = 0 Then r.Offset(0, -2) = n
Next
Set r = Nothing
' resumen sumas
Range("A2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Range("d2").Select
ActiveWindow.SmallScroll Down:=-21
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ActiveSheet.Range("$D$2:$D$65536").RemoveDuplicates Columns:=1, Header:= _
xlNo
Range("E2").Select
ActiveCell.FormulaR1C1 = "=SUMIF(R2C1:R65536C2,RC[-1],R2C2:R65536C2)"
Range("E2").Select
t = Application.WorksheetFunction.CountA(Range("d2:d65536")) + 1
Selection.AutoFill Destination:=Range("E2:" & "E" & t)
Range("A1").Select

End Sub

Perfecto, muchas gracias, no se me había ocurrido que la macro llenara los espacios en blanco primero y me estaba haciendo bolas con eso, muchísimas gracias por tu ayuda.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas