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

Zusammenfassung auch mit Unterbrechung

Forumthread: Zusammenfassung auch mit Unterbrechung

Zusammenfassung auch mit Unterbrechung
18.04.2020 10:50:23
Fred

Hallo Excel und VBA Profis,
ich habe die Tage von Dieter Klemke ein VBA erhalten, welches mir eine Zusammenfassung einer Liste erstellt. Das klappt leider nur bedingt.
  Dim aktSpiel As String
Dim i As Long
Dim letzteZeileQ As Long
Dim letzteZeileZ As Long
Dim s As Long
Dim summe(1 To 7) As Currency
Dim wsQ As Worksheet  ' Quelle
Dim wsZ As Worksheet  ' Ziel
Dim zeileQ As Long
Dim zeileZ As Long
Set wsQ = ThisWorkbook.Worksheets("Spiele_a")
Set wsZ = ThisWorkbook.Worksheets("Spiele_b")
letzteZeileZ = wsZ.Cells(wsZ.Rows.Count, "A").End(xlUp).Row
If letzteZeileZ > 9 Then
wsZ.Range("A10:J10").Resize(letzteZeileZ - 9).ClearContents
End If
letzteZeileQ = wsQ.Cells(wsQ.Rows.Count, "A").End(xlUp).Row
zeileZ = 10
aktSpiel = wsQ.Range("C10")
For zeileQ = 10 To letzteZeileQ + 1
If wsQ.Cells(zeileQ, "C")  aktSpiel Then
' Spiel hat gewechselt
For s = 1 To 3
wsZ.Cells(zeileZ, s) = wsQ.Cells(zeileQ - 1, s)
Next s
For i = 1 To 7
If i  0 Then
wsZ.Cells(zeileZ, "C").Offset(0, i) = summe(i)
End If
summe(i) = wsQ.Cells(zeileQ, "C").Offset(0, i)
Next i
aktSpiel = wsQ.Cells(zeileQ, "C")
zeileZ = zeileZ + 1
Else
For i = 1 To 7
summe(i) = summe(i) + wsQ.Cells(zeileQ, "C").Offset(0, i)
Next i
End If
Next zeileQ
Es sollen Spiele mit zugehörigen Werten zusammengefasst werden.
SpieleListe = "Spiele_a"
Zusammenfassung="Spiele_b"
Sind in "Spiele_a" die Paarungen durch andere Matches "unterbrochen", wird nur bis zur "Unterbrechung" zusammengezählt.
Sollte aber alles zusammengehörig sein.
Kann bitte jemand mal auf die Mappe schauen und evt. korrigieren?
https://www.herber.de/bbs/user/136829.xlsb
mit freundlichen Gruß
Fred
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Zusammenfassung auch mit Unterbrechung
18.04.2020 11:49:55
fcs
Hallo Fred,
sortiere die Liste auf Blatt "Spiele_a" nach Datum (Spalte A) und Spiel (Spalte C).
Dann funktioniert die Auswertung.
Wenn das Makro die Sortierung mit erledigen soll, dan mit forlgenden Anpassungen.
LG
Franz
Sub c_Zusammenfassung_Spiele()
Dim aktSpiel As String
Dim i As Long
Dim letzteZeileQ As Long
Dim letzteZeileZ As Long
Dim s As Long
Dim summe(1 To 7) As Currency
Dim wsQ As Worksheet  ' Quelle
Dim wsZ As Worksheet  ' Ziel
Dim zeileQ As Long
Dim zeileZ As Long
Set wsQ = ThisWorkbook.Worksheets("Spiele_a")
Set wsZ = ThisWorkbook.Worksheets("Spiele_b")
letzteZeileZ = wsZ.Cells(wsZ.Rows.Count, "A").End(xlUp).Row
If letzteZeileZ > 9 Then
wsZ.Range("A10:J10").Resize(letzteZeileZ - 9).ClearContents
End If
letzteZeileQ = wsQ.Cells(wsQ.Rows.Count, "A").End(xlUp).Row
zeileZ = 10

'Start - Quelldaten sortieren nach Datum und Spiel
With wsQ
With .Range(.Rows(zeileZ), .Rows(letzteZeileQ))
.Sort key1:=.Range("A1"), order1:=xlAscending, _
key2:=.Range("C1"), order2:=xlAscending, Header:=xlNo
End With
End With
'Ende - Quelldaten sortieren nach Datum und Spiel
aktSpiel = wsQ.Range("C10")
For zeileQ = 10 To letzteZeileQ + 1
If wsQ.Cells(zeileQ, "C")  aktSpiel Then
' Spiel hat gewechselt
For s = 1 To 3
wsZ.Cells(zeileZ, s) = wsQ.Cells(zeileQ - 1, s)
Next s
For i = 1 To 7
If i  0 Then
wsZ.Cells(zeileZ, "C").Offset(0, i) = summe(i)
End If
summe(i) = wsQ.Cells(zeileQ, "C").Offset(0, i)
Next i
aktSpiel = wsQ.Cells(zeileQ, "C")
zeileZ = zeileZ + 1
Else
For i = 1 To 7
summe(i) = summe(i) + wsQ.Cells(zeileQ, "C").Offset(0, i)
Next i
End If
Next zeileQ
wsZ.Activate
With Worksheets("Spiele_b")
.Range("K10").Resize(.Cells(.Rows.Count, "A").End(xlUp).Row - 1).FormulaLocal = "=$K$7+ _
SUMME($H$10:$J10)"
.Range("L10").Resize(.Cells(.Rows.Count, "A").End(xlUp).Row - 1).FormulaLocal = "=WENN( _
ZEILE()=10;E10/K7;E10/K9)"
.Range("M10").Resize(.Cells(.Rows.Count, "A").End(xlUp).Row - 1).FormulaLocal = "=WENN( _
ZEILE()=10;K10-K7;K10-K9)"
.Range("N10").Resize(.Cells(.Rows.Count, "A").End(xlUp).Row - 1).FormulaLocal = "=WENN(A10=" _
""";1;0)"
End With
' FehlerZeilen löschen
For i = Cells(Rows.Count, 14).End(xlUp).Row To 1 Step -1
If Cells(i, 14) = 1 Then Rows(i).Delete
Next i
End_1 = Sheets("Spiele_b").Cells(Rows.Count, 1).End(xlUp).Row - 0
Sheets("Spiele_b").Range("N10:N" & End_1).ClearContents
' Werte statt Formeln
With Sheets("Spiele_b").UsedRange
.Cells = .Cells.Value
End With
End Sub

Anzeige
AW: Zusammenfassung auch mit Unterbrechung
18.04.2020 12:36:08
Fred
Hallo Franz,
vielen Dank für deine Mühe!
Nun ist die Zusammenfassung "stimmig".
Dir ein schönes Wochenende!
Gruß
Fred
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige