Gleiche Spalten summieren
#1
Hallo Zusammen

bin am suchen nach einer Lösung für folgendes Problem:
Makro für

Tabelle:
A              B             C             D
Artiknr      Charge     Menge      Gewicht
10031       1111        10            10
10031       2222        5              5
10055       5555        5              5
10066       6666        10            10
10066       6666        5              5
10066       7777        10            10

Es sollen Spalte A und B mit anderen Zeilen verglichen werden und bei Gleichheit von A und B Spalte C und D aufsummiert.
Das soll herauskommen
A              B             C             D
Artiknr      Charge     Menge      Gewicht
10031       1111        10            10
10031       2222        5              5
10055       5555        5              5
10066       6666        15            15
10066       7777        10            10


Mein Problem ich bekomme derzeit nur die Überprüfung einer Spalte hin "A" und dann summiert es mir alle anderen auf.

Kann mir hier eventuell jemand helfen.

Danke


Angehängte Dateien
.xlsx   Tabelle.xlsx (Größe: 9,13 KB / Downloads: 4)
Top
#2
Hola,

da die Zieltabelle fehlt: schau dir Summewenns() an:
https://www.online-excel.de/excel//singsel.php?f=188

Gruß,
steve1da
Top
#3
Vergessen zu schreiben die Zeilen sollen auch gelöscht werden und nur Summenzeile soll bleiben.
Top
#4
Hallöchen,

Du könntest das Makro dazu aufzeichnen. Summen kopieren, als Werte einfügen, rest löschen. Siehe dazu Excel-Word-Makrorekorder
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#5
Probier mal:
Code:
Sub DuplikatzeilenSummieren()
   Dim Bereich As Range
   Dim a As Variant, c As Variant, e As Variant
   Dim b As Long
  
   Set Bereich = Range("A1").CurrentRegion
   a = Bereich
   With CreateObject("Scripting.Dictionary")
      For b = 1 To UBound(a)
         c = a(b, 1) & a(b, 2)
         If .Exists(c) Then
            e = .Item(c)      'e wird zum Summieren herausgehoben
            e(3) = e(3) + WorksheetFunction.Index(a, b, 3)
            e(4) = e(4) + WorksheetFunction.Index(a, b, 4)
            .Item(c) = e      'Summenvektor wird wieder zurückgestellt
         Else
            .Item(c) = WorksheetFunction.Index(a, b, 0)
         End If
      Next b
      a = WorksheetFunction.Index(.Items, 0, 0)
   End With
   Bereich.Clear
   Bereich(1).Resize(UBound(a, 1), UBound(a, 2)) = a
End Sub

Alle Zeilen, die den selben Text ergeben, wenn man jeweils Artikel- und Chargen-Nr. verkettet, werden wie gewünscht zusammengefasst. Diese müssen nicht unbedingt untereinander stehen.

LG Raoul

Nachtrag: Eine Pivot-Tabelle kann das auch. Berichtslayout: Tabellenformat, Teilergebnisse nicht anzeigen.
Top
#6
Warum keine Musterdatei?
Das geht mit Powerquery relativ simpel, wenn der Screenshot das Ergebnis sein soll.
Code:
let
    Source = Excel.CurrentWorkbook(){[Name="tabData"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Artikelnr", Int64.Type}, {"Charge", Int64.Type}, {"Menge", Int64.Type}, {"Gewicht", Int64.Type}}),
    #"Grouped Rows" = Table.Group(#"Changed Type", {"Artikelnr", "Charge"}, {{"Menge", each List.Sum([Menge]), type nullable number}, {"Gewicht", each List.Sum([Gewicht]), type nullable number}, {"Rows", each Table.RowCount(_), Int64.Type}}),
    #"Filtered Rows" = Table.SelectRows(#"Grouped Rows", each [Rows] > 1),
    #"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Rows"})
in
    #"Removed Columns"
   
Top
#7
Hallo WS User, hast Du meine Antwort oder ich Deine Frage nicht verstanden? Gruss Raoul.
Top
#8
Genau die Frage hatten wir heute schon mal.
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste