PDA

Vollständige Version anzeigen : Erstellen eines Bundesliga-Spielplanes


Schnitzel
27.07.2001, 07:16
Hallo, ich habe unter Excel einen neuen Spielplan für die Fußball-Bundesliga erstellt. Die Spiele der Hinrunde habe ich schon alle eingegeben. Meine Frage: Gibt es in Excel eine Funktion, dass man die Spielpaarungen austauschen kann?
Z.B.: Bayern München - Schalke 04 umtauschen in Schalke 04 - Bayern München. Sonst muss ich die ganze Rückrunde wieder von Hand eintippen. Falls es eine Funktion gibt, kann man diese auch für mehrere Spiele auf einmal anwenden? Dass ich zum Beispiel sage, tausche mir sämtliche Begegnungen der Spiele, die in der Liste stehen?

Vielen Dank für Eure Hilfe.

Gruß Schnitzel.

dancer1970
27.07.2001, 08:44
Hallo, zwar bin ich kein Fußballfan, aber hilft evtl. die suchen-ersezten Funktion unter bearbeiten?

Ansonsten könnte ich mir vorstellen, dass auch andere sich diese Mühe gemacht haben und es diese Tabelle vielleicht schon gibt.

Gruß eines Motorsportfans

Stefan

Schnitzel
27.07.2001, 11:47
Hallo Dancer,

bei Suchen/Ersetzen müsste ich aber auch alle Daten noch einmal eintragen. Vielleicht gibt es auch noch ´nen anderen Weg. Trotzdem vielen Dank für Deine Hilfe.

CU.

Gruß Schnitzel

jinx
27.07.2001, 15:37
<font size="2" face="Century Gothic">Moin, Schnitzel,

die Möglichkeit gibt es per VBA. Als Denkidee: Aufteilen der Paarungen in zwei Zellen mit den Namen, zusammen führen in anderer Reihenfolge, wenn Spieltag > 17.

Wenn Du den Code dafür haben möchtest, musst Du Dich aber noch etwas gedulden - andere haben ältere Ansprüche auf verkorkste Leistungen von

<font color="#808080" size="3" face="Arial Black">cu
jinx</font>

<font size="1" face="Century Gothic">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurde in diesem Beitrag ein Link entfernt und die Signatur angepasst...</font>

jinx
28.07.2001, 14:22
<font size="2" face="Century Gothic">Moin, Schnitzel,

fast Start der neuen Saison, und immer noch keine Antwort?

Nicht ganz – made it just in time.... ;)

Vorgehen:

Um Quellcode komfortabel (?) einzugeben, den VBA-Editor mit der Tastenkombination ALT + F11 starten.
Es erscheint ein neues Fenster mit der Überschrift „Microsoft Visual Basic“ sowie nach einem Trennungszeichen dem Namen der Arbeitsmappe.
Das Fenster ist viergeteilt:
links oben der Projekt-Explorer
links unten das Eigenschaftsfenster
rechts oben das Codefenster
rechts unten der Direktbereich.

Zuerst über das Menü Einfügen ein neues Modul einfügen und in das Codefenster wechseln (wenn ausgeblendet, mit F7 einblenden).
Dann entweder den folgenden Text per Hand eingeben oder über die Zwischenablage kopieren:

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Sub</span> BundesligaSpielplanNeu()
<span class="REM">' Umwandlung der Spielpaarungen einer bestehenden Hinrunde</span>
<span class="REM">' f&uuml;r die gesamte Blatt fuer Schnitzel. Es wird davon ausgegangen, dass</span>
<span class="REM">' die Paarungen auf einem Tabellenblatt untereinander stehen und</span>
<span class="REM">' zwischen den einzelnen Spieltage immer der gleiche Abstand besteht.</span>
<span class="REM">' Die Paarungen beginnen in A2.</span>
<span class="REM">'</span>
<span class="REM">' Variablendefintion</span>
<span class="TOKEN">Dim</span> Ursprung <span class="TOKEN">As</span> <span class="TOKEN">String</span> <span class="REM">' Name der Ausgangstabelle</span>
<span class="TOKEN">Dim</span> TB <span class="TOKEN">As</span> Worksheet <span class="REM">' aktives Datenblatt</span>
<span class="TOKEN">Dim</span> Heim <span class="TOKEN">As</span> <span class="TOKEN">String</span> <span class="REM">' Variable zur Aufnahme Heimmannschaft</span>
<span class="TOKEN">Dim</span> Gast <span class="TOKEN">As</span> <span class="TOKEN">String</span> <span class="REM">' dto. fuer Gast</span>
<span class="TOKEN">Dim</span> Bereich <span class="TOKEN">As</span> <span class="TOKEN">String</span> <span class="REM">' Angabe der unteren rechten Ecke des</span>
<span class="REM"> ' zu kopierenden Bereiches</span>
<span class="TOKEN">Dim</span> Ziel <span class="TOKEN">As</span> <span class="TOKEN">String</span> <span class="REM">' Variable fuer den neuen Tabellennamen</span>
<span class="TOKEN">Dim</span> i <span class="TOKEN">As</span> <span class="TOKEN">Integer</span> <span class="REM">' Variable, die die Position des definierten</span>
<span class="REM"> ' Trennzeichens im Feld aufnimmt</span>
<span class="TOKEN">Dim</span> i2 <span class="TOKEN">As</span> <span class="TOKEN">Integer</span> <span class="REM">' Variable mit der Anzahl der Zeichen in dem</span>
<span class="REM"> ' zu trennenden Feld</span>
<span class="TOKEN">Dim</span> i3 <span class="TOKEN">As</span> <span class="TOKEN">Integer</span> <span class="REM">' Schleifenzaehler, der nach maximal 17 Durchlaeufen</span>
<span class="REM"> ' die Schleife beendet</span>
<span class="TOKEN">Dim</span> i4 <span class="TOKEN">As</span> <span class="TOKEN">Integer</span> <span class="REM">' Variable, die den Abstand in Zeilen zwischen der</span>
<span class="REM"> ' letzten Partie des einen und der ersten Partie des</span>
<span class="REM"> ' folgenden Spieltages aufnimmt; Beispiel: Es folgt</span>
<span class="REM"> ' eine Leerzeile und dann die Ueberschrift x.Spieltag</span>
<span class="REM"> ' --&gt; Eingabe einer 2</span>
<span class="REM">' Nun geht´s los...</span>
<span class="REM">'</span>
<span class="REM">' Ausschalten der Bildschirmaktualisierung (Flackern!)</span>
Application.ScreenUpdating = <span class="TOKEN">False</span>
<span class="REM">' Einf&uuml;gen neues Blatt mit Namen Blatt fuer Schnitzel</span>
Worksheets.Add.Move after:=Worksheets(Worksheets.Count)
<span class="TOKEN">Set</span> TB = ActiveSheet
ActiveSheet.Name = &quot;Blatt fuer Schnitzel&quot;
<span class="REM">' Arbeitsblatt zum Kopieren auswaehlen und dorthin wechseln;</span>
<span class="REM">' falsche Eingabe wird abgefangen und zur Fehlermeldung am Ende gesandt.</span>
Ursprung = InputBox(&quot;Geben Sie bitte den Namen&quot; + Chr(13) _
+ &quot;des zu kopierenden Arbeitsblattes ein.&quot; + Chr(13) + Chr(13) _
+ &quot;ACHTUNG! Unbedingt den richtigen Namen eingeben!!&quot;, _
&quot;Ursprungsblatt&quot;, &quot;Name des Blattes&quot;)
<span class="TOKEN">On Error GoTo</span> Fehler1
Worksheets(Ursprung).Select
<span class="REM">' Abfrage des zu kopierenden Bereiches auf dem Ursprungsblatt;</span>
<span class="REM">' verlangt wird die untere rechte Ecke des Bereiches, z.B. g200.</span>
<span class="REM">' Kopieren und Einfuegen auf dem neu angelegten Blatt</span>
Bereich = InputBox(&quot;Geben Sie bitte die rechte untere Zelle &quot; + Chr(13) _
+ Chr(13) + &quot;des zu kopierenden Bereichs ein.&quot;, _
&quot;Bereich&quot;, &quot; Endzelle des Bereichs &quot;)
Range(&quot;A1:&quot; &amp; Bereich).Select
Selection.Copy
Sheets(&quot;Blatt fuer Schnitzel&quot;).Select
ActiveSheet.Paste
<span class="REM">' Wechsel auf das neu angelegte Arbeitsblatt.</span>
Sheets(&quot;Blatt fuer Schnitzel&quot;).Select
Columns(&quot;A:A&quot;).Select
<span class="REM">' Wechsel in die Zelle A2, wo die erste Paarung stehen sollte.</span>
<span class="REM">' Setzen des Zaehlers fuer die Rueckrundenparteien auf 1.</span>
<span class="REM">' Erfragen des Abstandes in Leerzeilen zwischen letzter und erster Partie</span>
Range(&quot;A2&quot;).Select
i3 = 1
i4 = InputBox(&quot;Geben Sie bitte den Leerabstand &quot; + Chr(13) + Chr(13) _
+ &quot;zwischen den Begegnungen ein.&quot;, _
&quot;nicht zu konvertierende Zeilen&quot;, &quot;Anzahl der nicht zu konvertierenden Zeilen&quot;)
<span class="REM">' Und nun geht´s looooss</span>
<span class="REM">' Schleifenbeginn, Abfrage ob der 17. Spieltag erreicht ist</span>
<span class="TOKEN">Do</span> <span class="TOKEN">While</span> i3 &lt;= 17
<span class="REM">' Solange die aktive Zelle einen Wert hat (also ungleich NIX/NULL), wird</span>
<span class="REM">' per i die Position des Trennzeichens in der Tabelle festgestellt;</span>
<span class="REM">' per i2 die Anzahl der Zeichen in der betreffenden Zelle festgestellt.</span>
<span class="TOKEN">Do</span> <span class="TOKEN">While</span> ActiveCell.Value &lt;&gt; &quot;&quot;
i = InStr(ActiveCell.Value, &quot;-&quot;)
i2 = Len(ActiveCell.Value)
<span class="REM">' Belegung der Werte der Variablen</span>
<span class="REM">' Heim: links beginnend bis zum Trennzeichen abzueglich eins;</span>
<span class="REM">' Gast: mittig beginnend an Position Trennzeichen +2, Anzahl Zeichen ergibt sich</span>
<span class="REM">' aus Gesamtzahl der Zeichen abzueglich der bis zum Trennzeichen.</span>
<span class="REM">' Zeiger eine Zeile tiefer postieren und</span>
Heim = Left(ActiveCell.Value, i - 1)
Gast = Mid(ActiveCell.Value, i + 2, i2 - i)
ActiveCell.Value = Gast &amp; &quot; - &quot; &amp; Heim
ActiveCell.Offset(1, 0).Select
<span class="TOKEN">Loop</span>
<span class="REM">' Naechster Spieltag</span>
i3 = i3 + 1
<span class="REM">' Setzen des Zeigers auf die Zelle der ersten Partei des folgenden Spieltages</span>
ActiveCell.Offset(i4, 0).Select
<span class="TOKEN">Loop</span>
<span class="REM">' Ende der Schleife</span>
<span class="REM">' Anpassen der Spaltenbreite auf dem neuen Arbeitsblatt bis einschliesslich X</span>
Sheets(&quot;Blatt fuer Schnitzel&quot;).Select
Columns(&quot;A:X&quot;).Select
Selection.Columns.AutoFit
Range(&quot;A1&quot;).Select
<span class="REM">' Umbenennen des Arbeitsblattes auf gewuenschten Namen</span>
Ziel = InputBox(&quot;Geben Sie bitte den Namen&quot; + Chr(13) _
+ &quot;fuer die Umbenennung des Arbeitsblattes ein.&quot;, _
&quot;Umbenennung&quot;, &quot;neuer Name des Blattes&quot;)
ActiveSheet.Name = Ziel
<span class="TOKEN">On Error GoTo</span> Fehler1
<span class="TOKEN">Exit Sub</span>
Fehler1: MsgBox (&quot;Sie haben einen falschen Blattnamen angegeben!&quot;)
Application.DisplayAlerts = <span class="TOKEN">False</span>
Sheets(&quot;Blatt fuer Schnitzel&quot;).Delete
Application.DisplayAlerts = <span class="TOKEN">True</span>
Schluss: MsgBox (&quot;Das war´s fuer diesmal...Makro bitte neu starten&quot; + Chr(13) _
+ &quot;Bitte mehr Konzentration beim naechsten Mal!&quot;)
Application.ScreenUpdating = <span class="TOKEN">True</span>
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span></pre></div>
Code eingefügt mit dem MOF Code Converter (http://www.ms-office-forum.net/forum/codeconverter.php)

Bemerkungen:
Es ist keine Fehlerkorrektur eingearbeitet; wenn Fehler auftreten durch falsche Eingaben, erfolgt Absturz.
Es besteht die Möglichkeit, nicht über Eingabeboxen zu verfahren, sondern die Werte fest vorzugeben.
Solltest Du weniger als 17 Spieltage auf dem Ursprungsblatt haben, sollte die Zahl der Schleifendurchläufe angepasst werden.
Erste MessageBox fragt den Namen des neuen Blattes ab.
Zweite Messagebox möchte den Namen des Ursprungsdatenblattes wissen.
Dritte Messagebox möchte die rechte untere Zelle des zu kopierenden Bereiches wissen (wenig komfortabel, ich weiß – aber wie oft im Jahr erstellst Du einen Bundesligaspielplan?).
Vierte Messagebox will den Abstand in Zeilen zwischen dem letzten und dem ersten Spiel des folgenden Spieltages wissen (gemeint ist die Anzahl der nicht mit Paarungen gefüllten Zeilen!)

Leider sind entgegen den allgemeinen Gepflogenheiten nicht ausreichend Kommentare eingefügt; bei Fragen bitte melden.

Sollten Probleme oder Fehler auftreten, bitte sofort Info.

<font color="#808080" size="3" face="Arial Black">HTH
jinx</font>

<font size="1" face="Century Gothic">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurden in diesem Beitrag der Code für dieses Forum und die Signatur angepasst.<font>

Schnitzel
31.07.2001, 06:49
Hi Jinx,

vielen Dank für Deine Hilfe. Ich bin zwar bis jetzt noch nicht dazu gekommen, den Code auszuprobieren. Aber im Laufe der Woche werd´ ich mich mal dransetzen.

Merci nochmal.

Gruß Schnitzel.

kicole
01.08.2001, 21:31
hallo schnitzel!

ich finde den ganzen vorstehenden krams ganz schön kompliziert! also dachte ich mir hier mal eine ganz einfache lösung, denn so habe ich mal einen spielplan gemacht! alles easy...

also in spalte A trägst du die ersten mannschaften ein, in spalte B den ":" und in spalte C die gegenmannschaften! daneben kannste dir 3 felder (für das ergebnis) oder so viele wie du haben möchtest frei lassen und kopierst spalte C und fügst sie von mir aus in spalte H ein, dann kopierst du die B spalte, fügst sie in spalte I ein und die A spalte fügst du dann in spalte J ein!

ganz einfach oder!?

so und für die nächste saison nimmste dir dann das zweite Tabellenblatt, kopierst den Spielplan (nur die mannschaften ohne ergebnisse ;)) und schiebst dir den neuen spielplan mit den vorhandenen mannschaftsnamen zusammen! fertig!

also hoffe das hilft dir ist nämlich gar nicht schwer und überhaupt nicht kompliziert!!!!

viel spass beim fb schauen!

kicole

<font size="1" face="Century Gothic">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurden in diesem Beitrag Links korrigiert, die auf falsche Adressen zeigten...</font>

jinx
01.08.2001, 21:53
<font size="2" face="Century Gothic">Moin, Kicole,

2 Fragen zu Deinem einfachen Modell:
Was ist mit Ab- bzw. Aufstieg und geänderten Namen bzw. Buchstaben in der Folgesaison?
Wie kopiert man einen in der Art von Schnitzel vorgegebenen Spielplan ohne übermäßige Ausschneideaktionen in Dein Schema?


Nicht das die erste Frage bei mit behandelt wird (dann sollte ich wetten abschliessen!), aber die zweite wird gemäß Anforderung umgesetzt.
In einem Link habe ich auf den Download der aktualisierten Ergebnisse/Tabelle zu einer durch eine Privatfirma gesponsorte Bundesligatabelle gegeben, die jährlich neu aufgelegt wird.... Da spart man sich dann wirklich alle Arbeit und bekommt auch alle Auswertungen; man lernt Excel dadurch aber nicht besser kennen.... ;)

<font color="#808080" size="3" face="Arial Black">cu
jinx</font>

<font size="1" face="Century Gothic">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurde in diesem Beitrag die Signatur angepasst...</font>

kicole
02.08.2001, 18:40
moin moin jinx,

ich weiss nicht ob du dich jetzt irgendwie durch meinen beitrag angegriffen gefühlt hast, vielleicht weil ich bzgl. deines beitrages geschrieben habe "solchen krams" oder so, aber das war keinesfalls böse gemeint!

ich habe mir nur gedacht, dass man aus schnitzels beitrag nicht so genau erkennen konnte ob er nun mit excel umgehen kann oder nicht! und für leute die es nicht so gut können mag das vielleicht mehr arbeit sein aber trotzallem ist es doch leichter! die ab- und aufstiegskandidaten kannste ja einfach ersetzen, dann sind es ja nur 3 mannschaften. ausschneiden musste an sich gar nichts wenn man gut mit ner maus umgehen kann!

ich habe 80 kollegen die mich ständig irgendwas zu office fragen und da sind halt welche bei, die wirklich besser alles noch mit dem bleistift schreiben sollten als mit nem pc zu arbeiten und denen muss ich auch die einfachste lösung auf den tisch legen den könnte ich auch nicht mit deinem beitrag kommen! ich pers. würde es mittlerweile auch ungef. so wie du es machst machen! aber man sollte vielleicht bedenken dass am anderen ende jemand sitzt der sich nicht so gut auskennt!

also mein beitrag war wirklich nicht böse oder so gemeint! vielleicht helfen wir uns demnächst ja mal gegenseitig!

cu kicole

jinx
02.08.2001, 22:28
<font size="2" face="Century Gothic">Moin, kicole,

ob Schnitzel VBA kann? Kann ich Dir nicht beantworten...
In meiner Antwort bin ich davon ausgegangen, dass er es nicht kann - er moege mir verzeihen....
Zu Deinem Vorschlag (man möge mir die Auswahl der Mannschaften nachsehen - ich bin Fan einer anderen Sportart!): Spielt der HSV am ersten Spieltag immer auswärts und am zweiten zu Hause gegen Stuttgart?
Das entscheidende Spiel der letzten Saison hieß HSV gegen Bayern; in dieser spielt Bayern am letzten Spieltag zuhause gegen Rostock und der HSV auswärts in Freiburg. Tja, einfach ersetzen geht wohl da nicht, oder bist Du anderer Meinung?
Wenn Du allerdings einen Plan per Buchstaben entwickelt hast und diesen Buchstaben dann die richtigen Vereine zuweist, erhälst Du die Spieltage für diese Saison.

Und "Ausschneiden muss man an und für sich nicht, wenn man geschickt mit der Maus umgeht.." - ich nenne Deinen Vorschlag Cut and Paste, und das mindestens 306mal (Besuch beim Doktor wegen Sehnenscheidenentzündung?).

Aus dem Beitrag wird der Quelltext einmal ausgeschnitten und eingefügt, der Code wird einmal ausgeführt; man ist - so alles läuft - nach einer Minute fertig. Was ist an so einer Aktion schwierig?

Ich bin auch nicht glücklich über diesen auskommentierten und nicht alle Fehler abfangenden Code, aber für den Zweck reicht er alle Mal. Ich hoffe, ich habe alle notwendigen Aktionen dokumentiert - und ich bin dabei von der Prämisse ausgegangen, dass auch jemand ohne Vorkenntnisse diese Aktionen nachvollziehen kann. Vielleicht glaube ich ja noch an das Gute im Menschen?

<font color="#808080" size="3" face="Arial Black">cu
jinx</font>

<font size="1" face="Century Gothic">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurde in diesem Beitrag die Signatur angepasst...</font>

kicole
02.08.2001, 22:40
also jinx, ich denke das ist ein hilfe-forum! und mir ist es einfach nur zu doof mich mit uneinsichtigen leuten auseinanderzusetzen! ich denke wir werden uns im forum aus dem weg gehen und damit ist der fall für mich erledigt!

hab n schönes leben......

cu