VBA für Berechnung in Untergruppen
Liebe Excel- Nutzer
Kann mir jemand bei meinem Problem helfen, ich weiß im Moment nicht, wie in einer Gruppe die Summe der Untergruppe bilden soll.
Hier mein Beispiel:
Tabelle Spalten: A bis H
Spalte A: Gruppe (1, 2, 3)
Spalte B: Untergruppe ( „C_12“, „ST“,…..“G“)
Spalte E: Wert
Spalte H: berechneter Wert abgelegt
Ich habe ein Makro zur Berechnung de Werte angefangen:
Sub berechnen()
Dim Probe, PR(3) As Integer
Dim Z, lZ, sP As Integer
Dim PrName As Range, ToxName As Range
‘ die Gruppen in Spalte A, jede Gruppe hat die gleichen Untergruppen
PR(1) = "R1"
PR(2) = "R2"
PR(3) = "R3"
,
‘ Untergruppen in Spalte B und Werte in Spalte E mit daraus berechneten Werten in Spalte G
For Probe = 1 To 3
Set wks = activeWorksheets
lZ = Range("A65536").End(xlUp).Row
lSp = Range("IV1").End(xlToLeft).Column
‘Werte für Untergruppen berechnen
For T = 2 To lZ
If (Cells(T, 2) = "C12") Then Cells(T, 8) = (Cells(T, 5).Value * 0.07)
ElseIf (Cells(T, 2) = "ST") Then Cells(T, 8) = (Cells(T, 5).Value * 1.24)
ElseIf (Cells(T, 2) = "DC1") Then Cells(T, 8) = (Cells(T, 5).Value * 0.7)
ElseIf (Cells(T, 2) = "DC2") Then Cells(T, 8) = (Cells(T, 5).Value * 0.71)
ElseIf (Cells(T, 2) = "G14") Then Cells(T, 8) = (Cells(T, 5).Value * 0.8)
ElseIf (Cells(T, 2) = "G") Then Cells(T, 8) = (Cells(T, 5).Value * 0.3)
End If
Next T
‘ jetzt soll der Wert für “GT” in der Gruppe 1 berechnet werden, wenn in Spalte E dafür kein Wert enthalten ist; dieser Wert berechnet sich aus der Summe der oben berechneten Werte „C12“ bis „G“
For T = 2 To lZ
If (Cells(T, 2) = "GT" And Cells(T, 5) > 0) Then End If
Else
‘hier komme ich jetzt nicht weiter, denn es soll nur die Summe der jeweiligen berechneten Gruppe gebildet werden; kann ich jetzt einfach die Summe bilden oder muss ich die Gruppe wieder erst ansprechen, indem das Feld der ersten Spalte abgefragt wird
End If
Antwort schreiben
Antwort 1 von rainberg vom 17.01.2020, 17:29 Options
Hallo,
wenn mich nicht alle täuscht , müsste Dein Problem mit der Tabellenfunktion SUMMENPRODUKT() zu lösen sein.
Da Du es aber mit VBA lösen willst, würde ich Dir empfehlen anstatt einer Schleife mit x Abfragen und Variablen, einfach die
WorksheetFunction.SumProduct()
einzusetzen.
Gruß
Rainer
Antwort 2 von emmaDx vom 18.01.2020, 09:11 Options
Hallo Rainer,
vielen Dank für Deine Antwort.
Ich glaube, ganz so einfach geht es nicht. Setzt die Funktion nicht voraus, dass die Anzahl der Zeilen immer gleich ist?
Ich habe unterschiedliche Blätter, in denen die Daten eingetragen werden, daher möchte ich das Makro, dass dann auch die Blätter hintereinander abarbeiten kann.
Es kann passieren, dass jedes Blatt eine unterschiedliche Anzahl von Zeilen in der jeweiligen Gruppe hat, also u. U. Untergruppen fehlen. Er muss also immer in die Spalte B Zeile für Zeile schauen, welche Untergruppe da ist und dann addieren. Er muss also erst die Gruppe z. B. "R1" lesen (Sp A), dann die Untergruppe lesen (Spalte B) und dann in Spalte H den Wert errechnen aus Spalte E *Faktor. Zum Schluss muss er für Untergruppe "GT" der Gruppe "G1" in Spalte E schauen, ob bereits ein Wert steht, wenn ja, bricht er ab, wenn nicht muss die Summe aus den errechneten Werten für die Untergruppen gebildet werden.
Ich komme jetzt mit dem ansprechen der entsprechenden Fleder nicht klar, um sie mit den Bedingungen auszulesen.
Bin ich jetzt zu kompliziert? Geht es doch einfacher?
Vielleicht kann mir jemand helfen.
Vielen Dank. Gruß EmmaDX
Antwort 3 von rainberg vom 18.01.2020, 09:34 Options
Hallo emmaDX,
wenn Du das so einschätzt, dann will ich Dir nicht widersprechen, denn nur Du kennst Deine Datei.
War nur so eine Idee von mir, beim Lesen Deiner Frage.
Leider verstehe ich auch jetzt noch nicht, was Du konkret erreichen willst, was natürlich auch an mir liegen kann.
Gruß
Rainer