Microsoft Excel

Herbers Excel/VBA-Archiv

Summenprodukt mit variablen Bereichen


Betrifft: Summenprodukt mit variablen Bereichen
von: Liza
Geschrieben am: 12.01.2018 21:27:52

Hallo zusammen,

ich beschäftige mich zur Zeit und bräuchte bei einer Sache gerne ein paar gute Tipps.

Und zwar habe ich eine Tabelle mit Namen (Spalte A), Prozentzahlen (Spalte B) und Anzahl (Spalte C).
Direkt untereinanderstehende Zeilen mit gleichen Namen sollen zu einer Zeile zusammengefasst werden.

Wie die Anzahl addiert wird, habe ich schon herausgefunden. Jedoch schaffe ich es nicht aus den Prozent-Zahlen einen gewichteten Durchschnitt zu bilden. (Also quasi Summenprodukt/Anzahl)
Mein Knackpunkt ist, dass nur für direkt nacheinanderstehende Zeilen mit gleichen Namen ein gewichteter Durchschnitt gebildet werden soll. Kommt ein gleicher Name ein paar Zeilen später nochmal vor, soll dies nicht mit einfließen.

(Ich würde auch gerne meinen VBA-Code einfügen, habe es nur nicht hinbekommen)

Ich hoffe ihr könnt mir helfen.

Hier ein Beispiel:

% Anzahl
Müller 32 40
Details Meyer 30 30
Details Meyer 38 40
Details Schulze 29 10
Details Schulze 33 5
Details Schulze 35 80

  

Betrifft: AW: Summenprodukt mit variablen Bereichen
von: Liza
Geschrieben am: 12.01.2018 21:31:12

So jetzt doch noch anbei mein bisheriger Code:

Sub Zusammenfassen()

Dim Lrow As Long, X As Long, LastId, LastRow As Long

    With ThisWorkbook.Sheets("Tabelle1")
        Lrow = .Cells(.Rows.Count, "A").End(xlUp).Row
        LastRow = 2
        LastId = .Range("A2")
        For X = 3 To Lrow
            If X > Lrow Then Exit For
            If LastId = .Range("A" & X) Then
        
                .Range("C" & LastRow) = .Range("C" & LastRow) + .Range("C" & X) 'Spalte C wird  _
addiert
                .Rows(X).Delete shift:=xlUp
                Lrow = Lrow - 1
                X = X - 1
                Else
                LastRow = X
                LastId = .Range("A" & X)
            End If
        Next
    End With
End Sub



  

Betrifft: AW: Summenprodukt mit variablen Bereichen
von: Fritz
Geschrieben am: 12.01.2018 23:03:59

Ist jetzt nicht besonders schön

.Range("B" & LastRow) = ((.Range("B" & LastRow) * .Range("C" & LastRow)) + _
(.Range("B" & X) * .Range("C" & X))) / (.Range("C" & LastRow) + .Range("C" & X))

.Range("C" & LastRow) = .Range("C" & LastRow) + .Range("C" & X) 'Spalte C wird addiert


  

Betrifft: AW: Summenprodukt mit variablen Bereichen
von: Liza
Geschrieben am: 13.01.2018 10:57:35

Vielen Dank Fritz!

Ich habe es gerade ausprobiert und es funktioniert einwandfrei.