Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1752to1756
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige