Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.04.2024 20:05:21
28.04.2024 18:33:31
28.04.2024 18:25:12
28.04.2024 14:18:05
Anzeige
Archiv - Navigation
1932to1936
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

VBA, Suchkriterium, Ergänzung

VBA, Suchkriterium, Ergänzung
26.05.2023 16:28:16
Fred


Hallo Excel Profis,
ich habe vor Monaten von Onur ein Makro erhalten, welches u.a.
die Remisse des HeimTeams zählt
unabhängig ob dies Team zuhause oder auswärts spielte:

' WICHTIG !!! Es müssen die Spiele abwärts (Datum) sortiert sein
' Kriterium >= 3 Tore
' zählt die Anzahl (wenn Kriterium erfüllt) eines Heimteams in Heim,- Auswärtsspielen
' der vorherigen 3 Spiele

    Dim z, anz, lz, zz, anf
    anf = 11 '                                                                        ab Zeile 11
    lz = ActiveSheet.Cells(Rows.count, 12).End(xlUp).Row '                            bezieht sich auf HeimTeams, Spalte 12
    For z = anf To lz '                                                               von Zeile 11 bis letzte
        anz = 0 '                                                                     Zähler auf Null zu Beginn
        For zz = z + 1 To z + 3 '                                                     relevant, die nächsten 3 Spiele mit Heimteam
            If Cells(zz, 12) = Cells(z, 12) Or Cells(zz, 13) = Cells(z, 12) Then
                If Cells(zz, 15) = Cells(zz, 16) Then '                          Kriterium, wenn Remis
                    anz = anz + 1 '                                                   zählt,- Remis
                    'Stop
                End If
            End If
        Next zz
        Cells(z, 24) = anz '                                                          trägt die Anzahl in Spalte 24 ein
    Next z '                                                                          nächste Zeile in Spalte 12
End Sub

Ich fand das Makro damals einfach, effizient und verständlich aufgebaut und habe es auf unterschiedlichste Weise (leicht verändert) genutzt.
Nun bin ich aber wieder an meine Grenze gekommen.
z.B. ist das obere Makro darauf begrenzt, das die nächsten 3 Zeilen nach dem HeimTeam (zz, 12) in zz, 12 und zz, 13 gesucht wird und dann daraufhin die Anzahl der Remisse (aus folgenden 3 Zeilen) ermittelt wird.

Meine Frage:
Kann ein Experte das Makro dahin ergänzen,
das nicht nur die nächsten 3 Zeilen "durchsucht werden, sondern solange, bis das HeimTeam (zz, 12) 3 x gefunden würde? In "zz, 12 und zz, 13"

Gruss
Fred

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA, Suchkriterium, Ergänzung
26.05.2023 17:57:48
onur
Genau wie damals gilt: Ein Makro ohne die Datei dazu ist nicht viel Wert.


AW: VBA, Suchkriterium, Ergänzung
26.05.2023 18:12:34
Fred
Hallo Onur,
prima das der Meister persönlich mir antwortet:
https://www.herber.de/bbs/user/159340.xlsb
Das ist mit eine der letzten Makro-Lösungen, die ich für meine Fußballdatenbank brauche ....

Gruss
Fred


AW: VBA, Suchkriterium, Ergänzung
26.05.2023 18:28:16
Fred
Hallo Onur,
ich hatte schon zuvor natürlich selber versucht, das Makro entsprechend umzuschreiben.
Meine Versuche für eine modifizierte Version endeten aber immer sehr traurig :-)
Eine Schleife mit "Do Until" war eigentlich mein Favorit. Es sollten die Zeilen durchlaufen, werden bis das HeimTeam "zz, 12" 3 Mal gefunden wurde oder das Ende der Liste erreicht ist. Doch mein Latain war vorher zu Ende ...

Gruss
Fred


Anzeige
AW: VBA, Suchkriterium, Ergänzung
26.05.2023 19:08:15
onur
Deine Wunschergebnis-Liste enthält aber Fehler.


AW: VBA, Suchkriterium, Ergänzung
26.05.2023 19:34:03
Fred
.. war natürlich Absicht,- ein Test :-)


AW: VBA, Suchkriterium, Ergänzung
26.05.2023 19:33:10
Fred
Hallo Onur,
ganz großer Sport!
Man muss 3x hinschauen um den Unterschied im Code festzustellen ...
Meine "Do Until z > lz ...." Version vergeß ich mal ganz schnelle.

Vielen Dank für deine bemerkenswerte Arbeit!

Gruss
Fred


Gerne !
26.05.2023 20:19:41
onur


Anzeige
AW: VBA, Suchkriterium, Ergänzung
26.05.2023 21:22:21
Fred
Hallo Onur,
es ist ein "Problem" aufgetaucht.
Das Makro funzt anscheinend "nur" bis ca. 200 Zeilen. Habe ich mehr Zeilen, kommen falsche Ergebnisse heraus.
Ich hätte es erwähnen soll; Es können bis ca. 5.000 DS sein.
' WICHTIG !!! Es müssen die Spiele abwärts (Datum) sortiert sein
' Kriterium Remis,zz, 15 = zz, 16
' zählt die Anzahl (wenn Kriterium erfüllt) eines Heimteams in Heim,- Auswärtsspielen
' der vorherigen 3 Spiele

    Dim z, anz, lz, zz, anf, x
    anf = 11 '                                                                        ab Zeile 11
    lz = ActiveSheet.Cells(Rows.Count, 12).End(xlUp).Row '                            bezieht sich auf HeimTeams, Spalte 12
    For z = anf To lz '                                                               von Zeile 11 bis letzte
        anz = 0: x = 0 '                                                                     Zähler auf Null zu Beginn
        For zz = z + 1 To lz '                                                     relevant, die nächsten 3 Spiele mit Heimteam
            If Cells(zz, 12) = Cells(z, 12) Or Cells(zz, 13) = Cells(z, 12) Then
                x = x + 1
                If Cells(zz, 15) = Cells(zz, 16) Then '                          Kriterium, wenn >= 3 Tore Treffer + gegenTreffer
                    anz = anz + 1 '                                                   zählt, wenn >= 3 Tore
                    If x = 3 Then Exit For
                End If
            End If
        Next zz
        Cells(z, 24) = anz '                                                          trägt die Anzahl in Spalte 24 ein
    Next z '    
Hier eine Mappe, warum ich glaube, das nur bis Zeile ca. 200 richtig gerechnet wird.
https://www.herber.de/bbs/user/159342.xlsb
Kann das Makro auf solch einen "Umfang" erweitert werden?

Gruss
Fred


Anzeige
AW: VBA, Suchkriterium, Ergänzung
26.05.2023 22:10:51
onur
Sorry - MEIN Fehler
Private Sub CommandButton1_Click()
' WICHTIG !!! Es müssen die Spiele abwärts (Datum) sortiert sein
' Kriterium REMIS
' zählt die Anzahl (wenn Kriterium erfüllt) eines Heimteams in Heim,- Auswärtsspielen
' der NÄCHSTEN 3 Spiele
    Dim z, anz, lz, zz, anf, x
    anf = 11 ' ab Zeile 11
    lz = ActiveSheet.Cells(Rows.Count, 12).End(xlUp).Row 'bezieht sich auf HeimTeams, Spalte 12
    For z = anf To lz ' von Zeile 11 bis letzte
        anz = 0: x = 0 ' Zähler auf Null zu Beginn
        For zz = z + 1 To lz ' relevant, die nächsten 3 Spiele mit Heimteam
            If Cells(zz, 12) = Cells(z, 12) Or Cells(zz, 13) = Cells(z, 12) Then
                If Cells(zz, 15) = Cells(zz, 16) Then anz = anz + 1  ' zählt, wenn REMIS
                x = x + 1: If x = 3 Then Exit For
            End If
        Next zz
        Cells(z, 24) = anz 'trägt die Anzahl in Spalte 24 ein
    Next z 'nächste Zeile in Spalte 12
End Sub


Anzeige
Onur,- alles Supie!
26.05.2023 22:21:17
Fred
Onur, Fantastisch!
Das Makro läuft auf meinen Laptop selbst bei größeren Datenmengen (>5.000) schnelle durch und die Ergebnisse sehen nun auch "vertrauenwürdiger" aus :-)
Werde aber noch Stichprobenmäßig kontrollieren.

Vielen vielen Dank für die schnelle Korrektur!!

Gruss
Fred


Gerne !
26.05.2023 22:24:09
onur


AW: VBA, Suchkriterium, Ergänzung
26.05.2023 22:26:34
Fred
.. anscheinend das entscheidende? - dass die Zählung der Anzahl von Remis-Spielen ("anz") vor das Inkrementieren der Variable x verschoben wurde. Wird daraus sichergestellt, dass das REMIS-Kriterium geprüft wird, bevor x erhöht wird und die Bedingung x = 3 geprüft wird?

Gruss
Fred


Anzeige
AW: VBA, Suchkriterium, Ergänzung
26.05.2023 22:40:06
onur
Die Abfrage
If x = 3 Then Exit For
darf sich NICHT innerhalb der nächsten IF-Schleife befinden, sondern muss auf jeden Fall erfolgen.
Sonst wird nur bei x=3 rausgesprungen, wenn das dritte Spiel zufällig gleichzeitig auch
Cells(zz, 15) = Cells(zz, 16)
(also REMIS) ist.


AW: VBA, Suchkriterium, Ergänzung
27.05.2023 09:03:49
Fred
so Onur,
schön das das Makro (in der neuen Variante) ebenfalls so übersichtlich und "leicht verständlich" bleibt.
Wenn ich nun nur die Treffer (nicht die Gegentreffer) des Teams summieren will, würde es wohl dann so aussehen:
Sub summe_Treffer_6()

    Dim z, anz, lz, zz, anf, x, treffer
    anf = 11 ' ab Zeile 11
    lz = ActiveSheet.Cells(Rows.Count, 12).End(xlUp).Row 
    For z = anf To lz
        anz = 0: x = 0
        treffer = 0
        For zz = z + 1 To lz
            If Cells(zz, 12) = Cells(z, 12) Then
                treffer = treffer + Cells(zz, 14)
                x = x + 1: If x = 6 Then Exit For
            ElseIf Cells(zz, 13) = Cells(z, 12) Then
                treffer = treffer + Cells(zz, 15)
                x = x + 1: If x = 6 Then Exit For
            End If
        Next zz
        Cells(z, 27) = treffer
    Next z
End Sub
Gruss
Fred


Anzeige
AW: VBA, Suchkriterium, Ergänzung
27.05.2023 13:20:43
onur
Aber wozu noch eine Variable "treffer"? Du hast doch schon "anz".

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige