Microsoft Excel

Herbers Excel/VBA-Archiv

Summieren abhängig von Wert in anderer Spalte

Betrifft: Summieren abhängig von Wert in anderer Spalte von: AcJoker
Geschrieben am: 03.09.2014 17:01:25

Hallo,

ich suche eine Möglichkeit die Summe einer Spalte zu bilden solange der Wert in einer anderen Spalte gleich bleibt. Diese Summe würde ich dann gerne in ein anderes Tabellenblatt schreiben mit dem dazugehörigen Wert von dem die Summe abhängig ist.

Z.B.

Spalte A Spalte B
A 2
A 1
B 5
B 2
B 3
C 7

In einem neues Tabellenblatt soll dann stehen
A 3
B 10
C 7

Ich habe folgenden Code gefunden, der auch funktionert.
Option Explicit

Public Sub WelcheSumme() 

Dim myDict   As Object     ' das Scripting.Dictionary Object 
Dim WkSh     As Worksheet  ' das jeweils zu bearbeitende Tabellenblatt 
Dim lLetzte  As Long       ' die letzte belegte Zeile gemäß Spalte A 
Dim vTemp    As Variant    ' ein temporärer Array zur Aufnahme der Eingabe-Daten 
Dim iIndx    As Integer    ' der Index zum Array 
Dim sGruppe  As String     ' der Gruppenbegriff aus Spalte A 
Dim rZelle   As Range      ' die erste Ausgabezelle 

   Set myDict = CreateObject("Scripting.Dictionary") 
    
   Set WkSh = ThisWorkbook.Worksheets("Tabelle1") ' den Tabellenblattnamen ggf. anpassen! 
   lLetzte = WkSh.Cells(Rows.Count, 1).End(xlUp).Row 
'     die Eingabe-Werte in ein Array speichern 
   vTemp = WkSh.Range("A2:B" & lLetzte) ' ab Zeile 2 übernehmen! 
'     den Array abarbeiten 
   For iIndx = LBound(vTemp) To UBound(vTemp) 
      If Trim$(vTemp(iIndx, 1)) <> "" Then  ' ist die Zelle gefüllt? 
         sGruppe = vTemp(iIndx, 1)   ' den Gruppenbegriff speichern 
      End If 
'          in's Dictionary übernehmen und zählen 
      myDict(sGruppe) = myDict(sGruppe) + vTemp(iIndx, 2) 
   Next iIndx 

'     ausgeben der per Dictionary gesammelten Daten 

   Set WkSh = ThisWorkbook.Worksheets("Tabelle2") ' den Tabellenblattnamen ggf. anpassen! 

   WkSh.Range("A2:B" & lLetzte).ClearContents ' den Ausgabe-Bereich leeren/löschen 
   Set rZelle = WkSh.Range("A2")      ' den Ausgabe-Bereich festlegen 

   rZelle.Resize(myDict.Count) = WorksheetFunction.Transpose(myDict.Keys) 
   rZelle.Offset(0, 1).Resize(myDict.Count) = WorksheetFunction.Transpose(myDict.Items) 

   Set myDict = Nothing ' die Ressourcen freigeben 
   Set WkSh = Nothing 

End Sub
Quelle: http://www.office-loesung.de/ftopic499387_0_0_asc.php

Leider kann ich in dem Forum zur Zeit nicht schreiben, da das Forum down ist.

Der Code ist mir etwas zu komplex, jedenfalls bin ich nicht in der Lage in auf meine Bedürfnisse passend zu ändern.

Es fängt schon damit an, das ich nicht in Reihe 2 sondern 5 beginnen möchte.
Und ich keine zwei benachbarten Spalten habe sondern der zu summierende Wert in Q und der Wert mit der Abhängigkeit in Spalte G steht.

Ich verstehe leider einfach die Befehle nicht.
So z.B. verstehe ich nicht was mir die Zahl in diesem Code genau sagt.
vTemp(iIndx, 2)
Unabhängig davon das ich die ganze Funktion des Codes nicht verstehe.

Ursprünglich hatte ich an eine Schleife als Lösung gedacht.
Die erkennt ob sich der Wert ändert, dies dann als Startpunkt in eine Variable schreibt und dann sucht wo die nächste Änderung stattfindet und dies dann als Endpunkt in einer Variable schreibt.
So das ich dann eine Summe über den Bereich bilden kann und diese dann ausgebe.

Aber auch da finde ich irgenwie keinen Anfang dies umzusetzen.

Gruß
Markus

  

Betrifft: AW: Summieren abhängig von Wert in anderer Spalte von: {Boris}
Geschrieben am: 03.09.2014 17:19:38

Hi,

Du brauchst nur die Standardfunktion SUMMEWENN.
Ggfls. musst Du im 2. Tabellenblatt noch die Unikate aus Spalte A mit dem Spezialfilter untereinander bringen. Aber daneben kannst Du dann schlicht mit SUMMEWENN arbeiten.

VG, Boris


  

Betrifft: AW: Summieren abhängig von Wert in anderer Spalte von: AcJoker
Geschrieben am: 03.09.2014 21:30:02

Danke.

Ich bin auf die einfachste Lösung gar nicht erst gekommen, da ich sie bis dato nicht kannte.
Und zwar geht es mit einer Pivot Tabelle bestens und noch dazu extrem einfach.


 

Beiträge aus den Excel-Beispielen zum Thema "Summieren abhängig von Wert in anderer Spalte"