Sum Cells with condition

Status
Niet open voor verdere reacties.

Esducsafe

Gebruiker
Lid geworden
2 sep 2009
Berichten
185
@ Helpers

Wat de macro doet:
1. Maak tabel unieke waarde ColB en zet uitkomsten in ColF
2. Optellen waarde Col C als waarde ColB = waarde ColB
3. Zet uitkomsten in ColG

Met de macro wil ik nu de berekening laten uitvoeren op basis van de waarde in ColA.
Tot nu toe heb ik geen oplossing kunnen vinden.
Wie kan mij helpen?
Alvast dank
Esko


Code:
  For RRF = 2 To ws.Range("F" & Rows.Count).End(xlUp).Row
    NT = ws.Range("F" & RRF).Value
    For RR1 = 2 To Lr
    If NT = ws.Range("B" & RR1).Value Then _
    ws.Range("G" & RRF).Value = ws.Range("G" & RRF).Value + ws.Range("c" & RR1).Value
    Next RR1
    Next RRF
 

Bijlagen

Onderstaande doet hetzelfde maar geen idee wat je bedoelt met berekeningen uitvoeren op basis van kolom A.
Code:
Sub hsv()
Dim sv, d As Object, i As Long
sv = Cells(1).CurrentRegion.Columns(2)
 Set d = CreateObject("scripting.dictionary")
   For i = 2 To UBound(sv)
     d(sv(i, 1)) = d(sv(i, 1)) + 1
   Next i
      With Cells(2, 6)
        .CurrentRegion.Offset(1).Resize(, 2).ClearContents
        .Resize(d.Count, 2) = Application.Transpose(Array(d.keys, d.items))
        .CurrentRegion.Sort Range(.Address), , , , , , , 1
      End With
End Sub
 
Vraag niet goed omschreven, daarom deze toelichting

In kolom B staan meerdere nummers die het zelfde kunnen zijn.
Van deze nummers wordt in kolom F deze eenmaal weergegeven
en gesorteerd van laag naar hoog.

Vervolgens wordt voor deze unieke waarden (die nu kolom F staan)
de som van de bedragen uit kolom C opgeteld en in kolom G geplaatst

Door mij gewenste toevoeging:
In kolom A staan getallen 1 t/m 3 genummerd.
Op basis van deze getallen 1, 2 of 3 moet in kolom G
bovenstaande berekening gemaakt worden.

Als in kolom A het cijfer 1 staat dan moet in kolom G de som
van de bedragen uit kolom C voor de unieke waarden uit
kolom B opgeteld worden. Deze totaal bedragen staan dan in kolom F.

De eerste bewerking zit in de Excel file.
De toevoeging sommeren op basis nummers kolom A niet!

Hopelijk maakt dit mijn vraag wat duidelijker.

Esko
 
Wat het doel is van ColA ontgaat me nog, maar mijn vorige code deed niet exact hetzelfde,... nu wel.

Code:
Sub hsv()
Dim sv, d As Object, i As Long
sv = Cells(1).CurrentRegion.Columns(2).Resize(, 2)
 Set d = CreateObject("scripting.dictionary")
   For i = 2 To UBound(sv)
     d(sv(i, 1)) = d(sv(i, 1)) + sv(i, 2)
   Next i
      With Cells(2, 6)
        .CurrentRegion.Offset(1).Resize(, 2).ClearContents
        .Resize(d.Count, 2) = Application.Transpose(Array(d.keys, d.items))
        .CurrentRegion.Sort Range(.Address), , , , , , , 1
      End With
End Sub
 
Bij nader inzien en geen verwacht resultaat opgegeven, een gokje.

Code:
Sub hsv()
Dim sv, a, b(2), d As Object, i As Long
sv = Cells(1).CurrentRegion
 Set d = CreateObject("scripting.dictionary")
    For i = 1 To UBound(sv)
        a = d(sv(i, 1) & "|" & sv(i, 2))
             If IsEmpty(a) Then a = b
                a(0) = sv(i, 1)
                a(1) = sv(i, 2)
                a(2) = a(2) + sv(i, 3)
          d(sv(i, 1) & "|" & sv(i, 2)) = a
    Next i
      With Cells(1, 6)
        .CurrentRegion.ClearContents
        .Resize(d.Count, 3) = Application.Index(d.items, 0)
        .CurrentRegion.Sort Range("f1"), , Range("g1"), , , , , 1
      End With
End Sub
 
Laatst bewerkt:
Harry,

Dank voor je reacties.

De casus heeft te maken met het boeken van gegevens in een administratie (Dagboek).
Kolom A = boekperiode
Kolom B = rekeningnummer
Kolom C = bedragen.

Rekeningnummers: Op deze nummers (B) kan in verschillende boekperiodes(A) geboekt worden.
Voor het verkrijgen van een overzicht wat in periode 1 op de rekeningnummers geboekt is,
zoek ik dus een macro (multipe conditions) die de som van geboekte bedragen op dezelfde rekening
in een tabel weergeeft.
Misschien kan ik met je laatste bijdrage dit oplossen.
Esko
 
Dan zou de laatste code het juiste overzicht retour moeten geven.
Per boekingsperiode de som van een boekingsnummer.


Als je Power Query hebt (Excel 365) is dit de M formule.
Code:
let    Bron = Excel.CurrentWorkbook(){[Name="Tabel1"]}[Content],
    #"Type gewijzigd" = Table.TransformColumnTypes(Bron,{{"coA-Number: ", Int64.Type}, {"colB-Number: ", Int64.Type}, {"colC-Number: ", Int64.Type}}),
    #"Rijen gegroepeerd" = Table.Group(#"Type gewijzigd", {"coA-Number: ", "colB-Number: "}, {{"Aantal", each List.Sum([#"colC-Number: "]), type nullable number}}),
    #"Rijen gesorteerd" = Table.Sort(#"Rijen gegroepeerd",{{"colB-Number: ", Order.Ascending}, {"coA-Number: ", Order.Ascending}})
in
    #"Rijen gesorteerd"
 
Laatst bewerkt:
Nee, ik heb geen Power Query.
Wel een oplossing bedacht.
Om de macro met gewenste periode uit te kunnen voeren, maak ik eerst van die data een kopie op een extra sheet. Vervolgens de macro met die sheet uitvoeren en klaar.
Bedankt Harry.
Esko
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan