Office: (Office 365) Doppelkopf Spielplan (jeder gegen jeden) VBA / Excel / Access

Helfe beim Thema Doppelkopf Spielplan (jeder gegen jeden) VBA / Excel / Access in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen *:)* in diesem Forum habe ich bereits zwei Beiträge gefunden, die in die Richtung meines Anliegens gehen - beides passt letzten Endes... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von wowifeelgood, 24. Oktober 2023.

  1. Doppelkopf Spielplan (jeder gegen jeden) VBA / Excel / Access


    Hallo zusammen Doppelkopf Spielplan (jeder gegen jeden) VBA / Excel / Access *:)*

    in diesem Forum habe ich bereits zwei Beiträge gefunden, die in die Richtung meines Anliegens gehen - beides passt letzten Endes dann aber leider doch nicht auf meinen Anwendungsfall:

    1. Doppelkopf-Turnier:
    Liste für Doppelkopf-Turnier | HERBERS Excel Forum
    2. Spielplan:
    (Office 2019) - Spielplan erstellen mit VBA?

    Nun zu meinem Anwendungsfall/ meiner Frage:
    Wir spielen ab und zu in einer Hobby-Runde Doppelkopf. (eine Runde beteiligt bei dem Spiel immer genau 4 Spieler)
    Um Stammtisch-Absagen vorzubeugen und immer genügend Spieler im Petto zu haben, um auch wirklich monatlich Doppelkopf-Abende zusammen zu bekommen, haben wir eine Gruppe von 8 Leuten ins Leben gerufen - von denen nicht immer alle können, aber immerhin immer mindestens 4.

    Nun stellt sich die Frage, wie abhängig von der jeweiligen Spieleranzahl des Abends - 4 bis 7 Spieler, denn ab 8 Spielern würden zwei reguläre 4er Spielrunden eröffnet werden - an einem Abend möglichst:
    1. alle einmal miteinander spielen (jeder mind. 1x mit jedem der weiteren 3-6 Spieler)
    2. jeder gleich viele Runden spielt
    3. jeder gleich häufig aufspielt (normalerweise immer die erste Person hinter dem Kartengeber)
    4. (jeder gleich häufig austeilt)
    5. möglichst jeder einmal in jeder Konstellation gegen die übrigen Spieler spielt
    6. (das wäre ein "nice-to-have", aber sicherlich erst im Weiteren Schritt: wie jeder gleich viele "Bockrunden" dabei spielt, sobald diese ausgelöst werden (Bockrunden sind Runden, in denen die vergebenen Punkte doppelt gezählt werden. Sie entstehen, sobald ein bestimmter Stich "rumgeht" für die (regulär) nächsten 4 Runden (bei 4 Spielern). bei z.B. 6 oder 7 Spielern müssten es dementsprechend mehr runden sein, bei denen dann allerdings auch nicht 2 oder 3 Spieler bevorteilt werden dürften, die dann 2 Bockrunden statt einer spielen)
    Variabel ist also alleine die Spieleranzahl. (Gerne auch wie in der Doppelkopf-Turnier-xls so, dass man die Spielernamen Eintragen kann, wodurch das hinterlegte Makro automatisch zählt, wie viele Spieler dabei sind und bei der Ausgabe der Spiel-Runden die eingegebenen Namen statt Zahlen-Codes aufgelistet werden)
    Die Anzahl der Spielrunden, die mindestens gespielt werden müssen, damit das Konstrukt aufgeht, ergibt sich dann aus den Parametern und würde dann am Anfang des Spieleabends klar definiert, dass alle bis zum Ende dabei bleiben müssten.

    Vielleicht hat ja jemand so etwas schon für seine Hobby-Runde erstellt, oder eine ähnliche Vorlage als Grundlage, an der man weiter arbeiten kann, oder weitere Ideen.

    Ich wäre dafür offen eine Kombination aus Excel-Tabellenblättern + VBA zu erstellen, oder auch eine Logik in Access anzulegen, die dann auch mit Eintragung der Punkte später eine Datenauswertung und Spielhistorie ermöglicht.

    Auf Anregungen und Ideen bin ich sehr gespannt! Doppelkopf Spielplan (jeder gegen jeden) VBA / Excel / Access *:)*
     
    wowifeelgood, 24. Oktober 2023
    #1
  2. Hajo_Zi
    Hajo_Zi Erfahrener User
  3. lupo1
    lupo1 Tutorial Guru
    35 Kombinationen an einem Abend mit 4 aus 7:

    =LAMBDA(n;[k];[c];LET(
    z;WENN(c;c;WENN(ISTZAHL(--n)*(LÄNGE(n)=1);1;WENN(k;3;2)));
    q;LAMBDA(q;n;ZUSPALTE(WENN(n<2;1;ERSETZEN(q(q;n-1);SEQUENZ(;n);0;n))));
    p;LAMBDA(p;n;LET(t;LÄNGE(n);r;RECHTS(n);EINDEUTIG(ZUSPALTE(WENN(t<2;r;ERSETZEN(p(p;LINKS(n;t-1));SEQUENZ(;t);0;r))))));
    v;LAMBDA(v;x;k;WENN(k>1;ZUSPALTE(v(v;x;k-1)&MTRANS(x));x));
    SORTIEREN(WAHL(z;
    q(q;n);
    p(p;n);
    LET(x;EINDEUTIG(LINKS(p(p;n);k));FILTER(x;NACHZEILE(x;LAMBDA(a;TEXTKETTE(SORTIEREN(TEIL(a;SEQUENZ(;k);1);1;1;1))=a))));
    EINDEUTIG(LINKS(p(p;n);k));
    v(v;EINDEUTIG(TEIL(n;SEQUENZ(LÄNGE(n));1));k)))))("1234567";4)


    Hinweis: Die Formel ist eine Formel, die mehrere Dinge ausrechnen kann. Nur daher ist sie so lang. Benötigt werden die unterstrichenen Teile.

    15 Kombinationen an einem Abend mit 4 aus 6 ("123456";4)
    5 Kombinationen an einem Abend mit 4 aus 5 ("12345";4)

    Diese Kombinationen werden alle verdreifacht, indem aus der Sicht des ersten Spielers an die Stelle des jeweiligen Partners beide Gegner nacheinander treten.

    Also 105, 45 und 15. Ich zeige es hier anhand von drei Formeln in A1:C1:

    A1#: siehe oben
    B1#: =NACHZEILE($A1#;LAMBDA(a;TEXTKETTE(TEIL(a;{1.3.2.4};1))))
    C1#: =NACHZEILE($A1#;LAMBDA(a;TEXTKETTE(TEIL(a;{1.4.2.3};1))))

    Für 5 Spieler ergibt dies dann:

    1234 1324 1423
    1235 1325 1523
    1245 1425 1524
    1345 1435 1534
    2345 2435 2534

    ... also 15 Konstellationen.

    Damit sind 1), 2) und 5) gewährleistet.

    Die Anforderungen 3) und 4) werden hier nicht zusätzlich exakt, sondern nur annähernd (also Differenz 0 oder 1 zu den anderen Spielern) erfüllt werden können, wenn man bei 15 Konstellationen bleiben möchte. Exakt ginge es nur über die Multiplikation mit den 8 gewünschten Permutationen von einer dieser 15 Konstellationen. Dann hätte man aber 120 Spiele, mithin also 5!.

    Am 5er Beispiel versuche ich das mal zu permutieren:

    1234 hat die 8 Permutationen (bei gleichbleibenden Gegnerpaaren!):
    1234 1243 2134 2143 3412 3421 4312 4321

    Gehe ich nun den 15er-Block mit dieser fortschreitenden 8er-Permutation (zeilenweise) durch, ergibt sich z.B.

    1234 1342 4123
    2153
    2513 2351
    5412 5241 1524
    1354 4135 5143
    4523 3524 4325

    Hier stehen aber nun die 1 und 4 je viermal vorn, die 3 hingegen nur einmal. Daher wäre (ROT) die 1354 möglicherweise besser als 3154 zu spielen und die 4325 als 3425. Danach (GRÜN) stehen dann 3 fünfmal und die 2 und 5 nur je zweimal hinten, also wären 4123 als 4132 und 2153 als 2135 zu tauschen. Ob dann noch etwas ungleich bleibt?
     
    Zuletzt bearbeitet: 25. Oktober 2023
    1 Person gefällt das.
  4. Doppelkopf Spielplan (jeder gegen jeden) VBA / Excel / Access

    Hi Hajo,
    auf die Idee bin ich natürlich vorher auch schon gekommen und habe ausgiebig recherchiert und m.E. sämtliche Foren durchsucht. Es gab jedoch noch keinen mit der Gleichen Problemstellung. Die Turnierspielpläne sind auf ganz andere Systeme ausgelegt, da geht es um viele Tische, an denen immer 4 Personen sitzen. Es werden teilweise K.O.-Systeme geschaffen mit Ergebniseintragungen und "Weiterkommen" im Turnier. Oder es werden Spielpläne für 2 Gegner erstellt.
    Es befasst sich aber kein System damit, wie eine faire Spielgestaltung und Kartenverteilung bei einem gleichbleibenden Tisch >4SP ermöglicht werden kann!
     
    wowifeelgood, 25. Oktober 2023
    #4
  5. Danke Lupo! Die Ansätze haben schon mal sehr weitergeholfen! Nachdem ich etwas gebraucht habe, mich in die Logik hineinzuversetzen, habe ich daraus eine Excel-Tabelle als Rohling erstellt. Die Tabelle ist bis auf die Spalte O dynamisch aufgebaut. Bei Eintragung von Spielernamen werden die Formel-Eintragungen, aus deinen Formeln automatisch an die jeweilige Spielerzahl angepasst.

    3 Dinge sind mir dabei aufgefallen:

    1. Es ist beim Doppelkopf nie gegeben, dass immer gleiche Paare miteinander spielen, oder dass das berücksichtigt werden müsste, wer miteinander/ gegeneinander spielt. Es kommt vielmehr nur auf die Konstellation derer vier Spieler an, an die Karten verteilt werden - welche Paare sich dabei dann bilden ist für das weitere irrelevant. Das macht m.M. die Logik dann entbehrlich, welche Gegner in den "=Nachzeile..." Spalten (B1# und C1#) dann auftauchen. (in der xls sind deine Formeln gelb hinterlegt)
    2. wichtiger ist deshalb tatsächlich doch eher Punkt 3), der vorher noch ausgeklammert war, nämlich eine Spielreihenfolge, mit der jeder "auch mal drankommt" und dass auch möglichst reih-um nacheinander Aufspiele stattfinden und dass nicht einer permanent Aufspiel hat. Deshalb habe ich deine =Nachzeile Funktionen etwas umgestellt und insgesamt vervierfacht, mit
    =NACHZEILE($A1#;LAMBDA(a;TEXTKETTE(TEIL(a;{2.3.4.1};1)))) , 3.4.1.2 und 4.1.2.3. (in der xls in den grünen Zellen)
    Anschließend habe ich die Kombinations-Konstellationen unterinander gelistet (M1#), eigentlich mit der Absicht, diese dann in einer weiteren Spalte (O1#) neu zu sortieren, in der Analogie, die ich bislang noch statisch untereinander geschrieben habe.
    3. Dabei habe ich mich insgesamt dann jedoch auch gefragt, ob die Vervierfachung wirklich nötig ist, oder ob ich da dann einen Gedankenfehler eingebaut habe? (laut meiner Prüfung in den orange hinterlegten Feldern ist es das) und wie in dem Fall die Neuanordnung auch noch mit einer Formel so ausgegeben werden kann, dass immer die richtigen Spielreihenfolgen dann auch dynamisch untereinander stehen.
     
    wowifeelgood, 25. Oktober 2023
    #5
  6. Die Datei, die ich ursprünglich hochgeladen hatte, war an einer Stelle noch falsch, deshalb hier die aktuelle xlsx
     
    wowifeelgood, 25. Oktober 2023
    #6
  7. lupo1
    lupo1 Tutorial Guru
    Na, dann bin ich ja froh, dass ich aufeinander aufbauende Schritte gezeigt habe.
     
  8. Doppelkopf Spielplan (jeder gegen jeden) VBA / Excel / Access

    Wie meinst du das? hattest du meine Fragen, die sich jetzt bei meiner Erstellung des Dokuments ergeben haben auch schon bei deiner ersten Nachricht beantwortet und ich habe etwas falsch gelesen oder gedeutet?

    Ich weiß gerade nur nicht, ob ich richtig in der Annahme gehe, dass ich insgesamt 4 Reihen brauche und wäre noch froh über einen Lösungsansatz für eine Formel, die die ausgegebene hellblaue Spalte der untereinander gelisteten Reihen in eine geordnetere Reihenfolge bringt mit den Startziffern 1,2,3,4,5,6,7,1,2,3...,6,7.

    hierzu wäre die beste Lösung, wenn die Spalte von oben nach unten durchgegangen wird und die jeweils erste Zahl mit der 1, oder 2, oder 3 etc. die nicht bereits schon herausgepickt wurde, dann neu untereinander geschrieben wird. Ist sowas per Formel möglich?
     
    wowifeelgood, 25. Oktober 2023
    #8
  9. Ich habe gerade eben nochmal ein bisschen rumgespielt an der Datei.
    Ich habe jetzt eine Formel, die zumindest meine Zählkriterien erfüllt, also von 1-7 aufsteigend die Zahlen aus der Spalte M zu nehmen, jedoch wiederholen sich dort die Zahlen immer wieder nach den 7 Zeilen.(Spalte Q)
    Code:
    =INDEX($M$3:$M$142;VERGLEICH(N3&"*";$M$3:$M$142;0))
    Eine Andere Formel, die einfach alle Zahlen aufsteigend sortiert, wo dann aber nicht die Anfangszahlen mit jeweils 1-7 im Wechsel beginnen. (Spalte R)
    Code:
    =INDEX($M$3:$M$142;VERGLEICH(0;(ZÄHLENWENN($R$2:R2;$M$3:$M$142)+($M$3:$M$142<>"")*0);0))
    Dann habe ich noch mit ChatGPT versucht einen VBA-Code zu generieren, der mir das Ergebnis in Spalte O ausgeben soll. Diese Spalte bleibt aber leider auch nach dem Ausführen des Subs leer. hier der Code:

    Code:
    Sub NeuSortieren()
        Dim ws As Worksheet
        Dim rngM As Range
        Dim rngO As Range
        Dim cellM As Range
        Dim cellO As Range
        Dim i As Integer
        Dim j As Integer
        
        ' Arbeitsblatt festlegen
        Set ws = ThisWorkbook.Sheets("Uebersicht") ' Arbeitsblattname
        
        ' Spalten M und O festlegen
        Set rngM = ws.Range("M3:M142")
        Set rngO = ws.Range("O3")
        
        ' Sortieren von Spalte M
        rngM.Sort Key1:=rngM, Order1:=xlAscending, Header:=xlNo
        
        ' Durchlaufen der Werte in Spalte M und Schreiben in Spalte O
        i = 1
        For Each cellM In rngM.Cells
            ' Überprüfen, ob die Anfangsziffer des Werts in Spalte M mit i übereinstimmt
            If Left(cellM.value, 1) = CStr(i) Then
                ' Schreiben Sie den Wert in Spalte O
                rngO.value = cellM.value
                ' Nächste Zelle in Spalte O
                Set rngO = rngO.Offset(1, 0)
                ' Nächste Anfangszahl
                i = i + 1
                ' Zurücksetzen auf 1, wenn 7 erreicht wird
                If i > 7 Then i = 1
            End If
        Next cellM
    End Sub
    
    
    Mir fehlt also noch der entscheidende Baustein, um irgendwie die Kombination aus den 3 Dingen in Spalte O zu erzeugen. (Klar könnte ich Spalte AA weiter händisch ausfüllen, wie farblich in Spalte M und Q angedeutet, aber dann ist meine ganze Dynamik im sonstigen Dokument hinfällig. Deshalb würde ich mich freuen, wenn sich noch eine Möglichkeit auftut auch das Sortieren automatisch zu erzeugen)

    Für diejenigen, die keine Makro-Excel öffnen möchten, auch nochmal eine xlsx Version ohne den VBA-Code. Doppelkopf Spielplan (jeder gegen jeden) VBA / Excel / Access *:)*
     
    wowifeelgood, 26. Oktober 2023
    #9
Thema:

Doppelkopf Spielplan (jeder gegen jeden) VBA / Excel / Access

Die Seite wird geladen...
  1. Doppelkopf Spielplan (jeder gegen jeden) VBA / Excel / Access - Similar Threads - Doppelkopf Spielplan VBA

  2. Spielplan Club

    in Microsoft Excel Hilfe
    Spielplan Club: Auf der Suche nach einer Vorlage für einen Spielplan für unseren Club, bin ich an verschiedenen Stellen schon fündig geworden, jedoch noch keine Vorlage gefunden, die ich für unsere Anforderung...
  3. Tennis Doppel Spielplan (Jeder gegen Jeden)

    in Microsoft Excel Hilfe
    Tennis Doppel Spielplan (Jeder gegen Jeden): Hallo zusammen, ich bastel seit 2 Tagen an einer Lösung aber mein logisches Denken ist irgendwann an seiner Grenze :-P Für unsere Wintersaison unserer Hobbygruppe baue ich einen Tennisplan....
  4. Spielplan erstellen mit VBA?

    in Microsoft Excel Hilfe
    Spielplan erstellen mit VBA?: Hallo. Ich möchte/müsste einen Spielplan erstellen, in denen Teams gegeneinander antreten sollen. Dabei sollte aber keiner 2x gegen den gleichen spielen. Als beispiel: Es gibt 2 Männer und 2...
  5. Spielplan Doppel Jeder gegen Jeden mit 2 Töpfen

    in Microsoft Excel Hilfe
    Spielplan Doppel Jeder gegen Jeden mit 2 Töpfen: Hallo zusammen Ich bin an einem Spielplan für ein Tennis Doppelturnier. Insgesamt machen 16 Teilnehmer mit. Diese haben wir in2 Töpfe à je 8 Spieler eingeteilt. Topf 1 sind die besseren Spieler...
  6. Bundesliga Spielplan in Access

    in Microsoft Access Hilfe
    Bundesliga Spielplan in Access: Guten Morgen zusammen, da Anfang August wieder die neue Bundesliga Saison beginnt, würde ich gerne mittels Access einen Bundesliga Spielplan inkl. Tippspiel erstellen. Bisher habe ich dieses mit...
  7. EM Spielplan

    in Moderatoren
    EM Spielplan: Hallo zusammen, ich denke darüber nach einen EM Spielplan zu erstellen und als Download anzubieten. Allerdings hänge ich an einem Problem und zwar bei der Berechnung der Tabellenstände. Wenn...
  8. Spielplan

    in Microsoft Excel Hilfe
    Spielplan: Hallo zusammen, habe einen Spielplan in dem ich ein paar Formeln benötige, ich habe schon einiges mit Matrixformeln rumprobiert und auch mit Summenprodukt klapp allerdings noch nicht so...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden