Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Summieren abhängig von Wert in anderer Spalte

Summieren abhängig von Wert in anderer Spalte
03.09.2014 17:01:25
Wert
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

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Summieren abhängig von Wert in anderer Spalte
03.09.2014 17:19:38
Wert
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

AW: Summieren abhängig von Wert in anderer Spalte
03.09.2014 21:30:02
Wert
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.
Anzeige

67 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige