AW: Größter Gruppen-Umsatz
16.06.2018 10:48:06
Barbaraa
Hallo Kisska
Kopiere in das Blatt-Modul folgenden Code ein:
Sub Gruppenumsatz()
Dim aProduktgruppen 'Liste der Produktgruppen
Dim aBereiche 'Liste der Bereiche
Dim lSpalte As Long 'Datumspalte
Dim lZeile As Long 'Produktzeile
Dim dUmsatz As Double 'Umsatzsummen
Dim lBereich As Long 'Bereich des größten Umsatzes
Dim i As Long, j As Long
aProduktgruppen = Liste(2)
aBereiche = Liste(3)
' aSammlung(Produktgruppe, Bereich)=Umsatz
ReDim aSammlung(0 To UBound(aProduktgruppen), 0 To UBound(aBereiche))
For i = 0 To UBound(aProduktgruppen)
aSammlung(i, 0) = aProduktgruppen(i)
Next i
For i = 0 To UBound(aBereiche)
aSammlung(0, i) = aBereiche(i)
Next i
For lSpalte = 4 To Range("C3").End(xlToRight).Column
' Umsätze löschen
For i = 1 To UBound(aSammlung, 1)
For j = 1 To UBound(aSammlung, 2)
aSammlung(i, j) = 0
Next j
Next i
' Umsatzsummen bilden
For lZeile = 4 To Range("C3").End(xlDown).Row
For i = 1 To UBound(aSammlung, 1)
If aSammlung(i, 0) = Cells(lZeile, 2) Then
For j = 1 To UBound(aSammlung, 2)
If aSammlung(0, j) = Cells(lZeile, 3) Then
aSammlung(i, j) = aSammlung(i, j) + Cells(lZeile, lSpalte)
i = 0
Exit For
End If
Next j
If i = 0 Then Exit For
End If
Next i
Next lZeile
' Umsätze markieren
For i = 1 To UBound(aSammlung, 1)
dUmsatz = 0
For j = 1 To UBound(aSammlung, 2)
If aSammlung(i, j) > dUmsatz Then
dUmsatz = aSammlung(i, j)
lBereich = j
End If
Next j
For lZeile = 4 To Range("C3").End(xlDown).Row
If Range("B" & lZeile) = aSammlung(i, 0) Then
If Range("C" & lZeile) = aSammlung(0, lBereich) Then
Cells(lZeile, lSpalte).Interior.Color = vbYellow
End If
End If
Next lZeile
Next i
Next lSpalte
End Sub
Private Function Liste(lSpalte As Long)
Dim i As Long
Dim lZeile As Long
Dim aVerzeichnis
ReDim aVerzeichnis(0)
For lZeile = 4 To Range("C3").End(xlDown).Row
For i = 0 To UBound(aVerzeichnis)
If aVerzeichnis(i) = Cells(lZeile, lSpalte) Then Exit For
Next i
If i > UBound(aVerzeichnis) Then
ReDim Preserve aVerzeichnis(i)
aVerzeichnis(i) = Cells(lZeile, lSpalte)
End If
lZeile = lZeile + 1
Next lZeile
Liste = aVerzeichnis
End Function
Das Blatt-Modul erreichst du durch Rechtsklick auf den Reiter des Blattes (ganz unten) und dann "Code anzeigen".
Starte "Gruppenumsatz" (Menü Ansicht, Makros)
In jeder Datumsspalte werden die Umsätze der umsatzstärksten Bereiche je Produktgruppe gelb markiert.
Ist es das, was Du wolltest?
LGB