Registriert seit: 15.04.2014
Version(en): Office 2007
Hallo Forumslesende Einsargen - heisst, seinen nächsten Mitspieler ins Nirvana zu sckicken. Somit werde ich nun mal mit Einsargen beginnen. Hier ist es ein wenig verzwickt. Pro Spieler hat man 13 Striche zu kassieren bevor man stirbt. Gekegelt wird reihum - Wurfanzahl wird im Uhrzeigersinn weiter gezählt, bis zum Treffer. Und so weiter ... Hat ein Kegler alle 13 Striche, scheidet sie/er aus. Somit fängt hier jetzt das Problem an. Die Anzahl der Werfenden hat sich verändert, somit muss nun die ganze Formelgeschichte anders angepackt werden. Wir sind oft 8 Kegler, aber auch mal 6 oder mehr als 8. Ein Kreis mit Anzahl Anwesenden (sagen wir mal Tortenstücke) wird gezeichnet. Die Position oben fängt an zu werfen, die Holzanzahl wird nun im Uhrzeigersinn bis zum Treffer gezählt. Der besagte Kegler erhält einen Strich. 8 Personen wie in der Datei zu erkennen ist. Kegler 2 hat eine 8 geworfen, sich selber getroffen. Eine kleine Anschaudatei anbei
Einsargen.xlsx (Größe: 19,21 KB / Downloads: 7)
Frage, nur WIE??? Hoffe auf geduldige Mitschreiber/Formelgeber
Registriert seit: 15.04.2014
Version(en): Office 2007
Hallo @all
Einsargen_Probe01.xlsx (Größe: 31,12 KB / Downloads: 4)
Zelle "E42" Code: =WENN(AA42=8;1;0)+WENN(AA43=7;1;0)+WENN(AA44=6;1;0)+WENN(AA45=5;1;0)+WENN(AA46=4;1;0)+WENN(AA47=3;1;0)+WENN(AA48=2;1;0)+WENN(AA49=1;1;0)+WENN(AA49=9;1;0)+WENN(AA42=0;1;0)
Habe mal mit der Formel auf 8 teilnehmer abgezielt. Soweitsogut, nur, aber W6 fängt es nun an in die nicht gewollte Richtung zu laufen Da weiß ich nicht weiter. Wie sage/schreibe ich es jetzt; Teiln. "A" ist raus, zähle/addiere nun mit den neuen Anwesenden-Wert Zelle "C41" ?
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallo Frank, ich glaube, mit einer Formel zum "Werteholen" wird das ganze recht komplex. Neben dem geworfenen Wert in Abhängigkeit vom Werfer müsstest Du ja auch noch berücksichtigen, dass zwischendrin ein oder mehrere Werfer schon ausgefallen sein könnten, und, wie Du auch in der Aufgabenstellung schreibst, eine unterschiedliche Anzahl Werfer vorkommen kann. Ich denke, für eine Formellösung müsstest Du zuerst einmal für jeden Wurf eines Spielers eine eigene Eingabezelle vorsehen. Nur eine Zelle wird ohne VBA nix. Und wenn einmal VBA im Spiel ist, kann man auch alternativ darüber nachdenken, das komplett in VBA umzusetzen. Was die cleverere Lösung ist kann ich noch nicht abschätzen. Aber ich denke, wir bekommen das hier in unserem Excel-Forum auch noch hin .
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallo Frank, ich habe hier mal die von mir erwähnte VBA-Lösung. Basis ist eine Tabelle der Spieler, Würfe und Stände. Für eine "grafische" Ausgabe kannst Du die Stände ja per Formel aus dieser Excel-Tabelle irgendwohin übernehmen. Am code ist noch eine Kleinigkeit für die Ausgabe der Stände usw. einzubauen - siehe Kommentare. Ob jemand eine clevere Formellösung findet - wer weiß ... Tabelle: Arbeitsblatt mit dem Namen 'Tabelle1' | | A | B | C | 1 | Name | Wurf | Stand | 2 | 1 | 2 | | 3 | 2 | | 13 | 4 | 3 | | 13 | 5 | 4 | | | 6 | 5 | | | 7 | 6 | | | 8 | 7 | 3 | | 9 | 8 | | |
Diese Tabelle wurde mit Tab2Html (v2.5.0) erstellt. ©Gerd alias Bamberg |
Code: Sub Zaehlen() 'Variablendeklarationen 'Integer Dim iRowEintrag%, iCnt% 'mit der aktiven Zelle - Cursor auf die Zelle mit dem Eintrag stellen! With ActiveCell 'Wenn in der Zelle was steht und es ist Spalte 2, dann If .Value <> "" And .Column = 2 Then 'Zeilennummer für Eintrag berechnen, "Restwert" (mod) anhand 'Zellwert, Zeile der Zelle, 'Anzahl der Mitspieler anhand Eintraege in Spalte a - 1 (- 1 wegen Ueberschriften) iRowEintrag = (.Value + .Row) Mod (WorksheetFunction.CountA(Columns(1)) - 1) 'Schleife solange im Zielstand die 13 schon erreicht ist Do While Cells(iRowEintrag, 3) = 13 'Schleifenzaehler für Do hochsetzen iCnt = iCnt + 1 'Zeilennummer fuer Eintrag neu berechnen 'Ist noetig, falls wir wieder oben beginnen muessen iRowEintrag = (.Value + .Row + iCnt) Mod (WorksheetFunction.CountA(Columns(1)) - 1) 'Ende Schleife solange im Zielstand die 13 schon erreicht ist Loop 'Ausgabe der Zeilennummer 'Hier muesste der Stand eingetragen werden und ggf. der Wurfeintrag entfernt MsgBox iRowEintrag 'Ende Wenn in der Zelle was steht und es ist Spalte 2, dann End If 'Ende mit der aktiven Zelle - Cursor auf die Zelle mit dem Eintrag stellen! End With End Sub
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 15.04.2014
Version(en): Office 2007
(06.09.2014, 08:21)schauan schrieb: ...ist noch eine Kleinigkeit für die Ausgabe der Stände usw. einzubauen... Hallo André, vorab "Hut abnehm und tiefer Beuger" Habe anstatt Msgbox, Hinweis in Zelle D10 gesetzt. Die Wurffelder mit Dropdown versehen (A15 - A24; Zahlen 1-9 und 0) Name 1 = Wurf 1 = Treffer Zeile 3 Name 2 = Wurf 2 = Treffer Zeile 5 Name 3 = Wurf 3 = Treffer Zeile 7 Name 4 = Wurf 4 = Treffer Zeile 9 Name 5 = Wurf 5 = Treffer Zeile 11Name 6 = Wurf 6 = Treffer Zeile 13Name 7 = Wurf 7 = Treffer Zeile 15Name 8 = Wurf 8 = Treffer Zeile 1hmmmm !?! anbei eine kleine Tabelle wie es eventuell klappen könnte, aber nur eventuell.
M.xlsm (Größe: 22,31 KB / Downloads: 4)
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallo Frank, das erste "kleine" Problemchen sind die Einträge in A15:A24. Siehe mein Kommentar 'Anzahl der Mitspieler anhand Eintraege in Spalte a - 1 (- 1 wegen Ueberschriften) Das Makro ist ja für eine beliebige Anzahl Mitspieler, theoretisch kannst Du die kommplette Spalte A mit Spielern auffüllen (ausgenommen die Überschrift) Du müsstest jetzt entweder die Einträge aus A15:A24 anderswo platzieren oder statt -1 dann 10 mehr abziehen, also -11 schreiben oder statt columns(1) dann Range("A1:A14") nehmen.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 15.04.2014
Version(en): Office 2007
(06.09.2014, 13:09)schauan schrieb: ...das erste "kleine" Problemchen sind die Einträge in A15:A24... Hallo Andrè, habe das ganz ehrlich übersehen. Auswahlliste nach R verschoben (R15:R24). Nun sieht es anders aus, Treffer werden richtig gestellt. Da ist noch ein Fehler, gerade entdeckt. B2 mit 6 füllen, Button klicken, sollte eigentlich "8" angezeigt werden Fehlermeldung Da bin ich jetzt aber ganz Weitere GedankenJede angefangene Runde bekommt in der Zeile 1 ein "X", soll dann solange durchlaufen werden bis alle Teilnehmer einen Wurf gesetzt haben. Ist das der Fall, Sprung in die nächste Spalte Anfang Zeile 2. Bekommt eine Zeile mehrere Treffer, müssten diese nach rechts angezeigt werden. Jetzt meine Frage: Wie die Treffer festsetzen, damit in Spalte R alle "X" addiert und als Ergebnis in Spalte C korrekt angezeigt werden?An alle Problembeseitiger vorab Danke
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
07.09.2014, 07:00
(Dieser Beitrag wurde zuletzt bearbeitet: 07.09.2014, 07:03 von schauan.)
Hallo Frank, der iRow in den beiden Zeilen zum Berechnen von iRowEintrag war im geposteten code an der falschen Stelle und in der Do - Bedingung stand 1 statt 13 - wahrscheinlich hab ich den Endstand nicht gespeichert und einen Zwischenstand gepostet . Zum Zählen der Treffer in Spalte C habe ich noch diese Zeile hinzugefügt: Cells(iRowEintrag, 3) = Cells(iRowEintrag, 3) + 1 Ich könnte übrigens nicht erst ab Spalte D in die nächste springen, wenn alle einen Wurf hatten. Was ist, Wenn Spieler 1 13 mal hintereinander 9 wirft? Dann waren die anderen noch gar nicht dran. So sollte es klappen (ohne Ausfüllen ab Spalte D): Code: Sub Zaehlen() Cells(10, 4).ClearContents 'Variablendeklarationen 'Integer Dim iRowEintrag%, iCnt% 'mit der aktiven Zelle - Cursor auf die Zelle mit dem Eintrag stellen! With ActiveCell 'Wenn in der Zelle was steht und es ist Spalte 2, dann If .Value <> "" And .Column = 2 Then 'Zeilennummer für Eintrag berechnen, "Restwert" (mod) anhand 'Zellwert, Zeile der Zelle, 'Anzahl der Mitspieler anhand Eintraege in Spalte a - 1 (- 1 wegen Ueberschriften) iRowEintrag = (.Value) Mod (WorksheetFunction.CountA(Columns(1)) - 1) + .Row 'Schleife solange im Zielstand die 13 schon erreicht ist Do While Cells(iRowEintrag, 3) = 13 'Schleifenzaehler für Do hochsetzen iCnt = iCnt + 1 'Zeilennummer fuer Eintrag neu berechnen 'Ist noetig, falls wir wieder oben beginnen muessen iRowEintrag = (.Value + iCnt) Mod (WorksheetFunction.CountA(Columns(1)) - 1) + .Row 'Ende Schleife solange im Zielstand die 13 schon erreicht ist Loop 'MsgBox iRowEintrag Cells(iRowEintrag, 3) = Cells(iRowEintrag, 3) + 1 Cells(10, 4) = iRowEintrag 'Ausgabe der Zeilennummer 'Hier muesste der Stand eingetragen werden und ggf. der Wurfeintrag entfernt 'Ende Wenn in der Zelle was steht und es ist Spalte 2, dann End If 'Ende mit der aktiven Zelle - Cursor auf die Zelle mit dem Eintrag stellen! End With End Sub
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 15.04.2014
Version(en): Office 2007
(07.09.2014, 07:00)schauan schrieb: ...So sollte es klappen... HAllo André & @all Die Fehlermeldung ist eliminiert, die Werte werden addiert. Nun ist mir im Verhalten der einzelnen Wurfwerte aufgefallen das hier weiter nach unten gezählt wird. Es erfolgt kein Umbruch (weiß nicht wie anders benennen), also sofern Zeile 9 erreicht wird in Zeile 2 nicht fortgefahren. Einzige richtige Zahl ist hier die 8, siehe angehangene Datei
M_mit_fehler.xlsm (Größe: 25,21 KB / Downloads: 3)
Farbunterlegte Felder sind so zu lesen: - dunkelgrün_____richtig - ocker__________falsch - blau___________falsch, wird nicht gefüllt - grün__________richtig Muss die Namensspalte erweitert werden oder eher mit dem Namensmanager irgendwie eingegrenzt werden. Bitte um Hilfe
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
07.09.2014, 18:01
(Dieser Beitrag wurde zuletzt bearbeitet: 07.09.2014, 20:32 von schauan.)
Hallo Frank, schwere Geburt ... Nächster Versuch, diesmal intensiv getestet und diesmal scheint's zu klappen. Falls nicht, Du findest mich hier im Forum Code: Sub Zaehlen() Cells(10, 4).ClearContents 'Variablendeklarationen 'Integer Dim iRowEintrag%, iCnt% 'mit der aktiven Zelle - Cursor auf die Zelle mit dem Eintrag stellen! With ActiveCell 'Wenn in der Zelle was steht und es ist Spalte 2, dann If .Value <> "" And .Column = 2 Then 'Zeilennummer für Eintrag berechnen, "Restwert" (mod) anhand 'Zellwert, Zeile der Zelle, 'Anzahl der Mitspieler anhand Eintraege in Spalte a - 1 (- 1 wegen Ueberschriften) iRowEintrag = (.Value + .Row - 1) Mod (WorksheetFunction.CountA(Columns(1)) - 1) If iRowEintrag = 0 Then iRowEintrag = WorksheetFunction.CountA(Columns(1)) ElseIf (.Value + .Row - 1) > WorksheetFunction.CountA(Columns(1)) - 1 Then iRowEintrag = iRowEintrag + 1 End If 'Schleife solange im Zielstand die 13 schon erreicht ist Do While Cells(iRowEintrag, 3) = 13 'Schleifenzaehler für Do hochsetzen iCnt = iCnt + 1 'Zeilennummer fuer Eintrag neu berechnen 'Ist noetig, falls wir wieder oben beginnen muessen iRowEintrag = (.Value + .Row - 1 + iCnt) Mod (WorksheetFunction.CountA(Columns(1)) - 1) If iRowEintrag = 0 Then iRowEintrag = WorksheetFunction.CountA(Columns(1)) ElseIf (.Value + .Row - 1) > WorksheetFunction.CountA(Columns(1)) - 1 Then iRowEintrag = iRowEintrag + 1 End If 'Ende Schleife solange im Zielstand die 13 schon erreicht ist Loop 'MsgBox iRowEintrag 'Zum Zählen der Treffer in Spalte C habe ich noch diese Zeile hinzugefügt Cells(iRowEintrag, 3) = Cells(iRowEintrag, 3) + 1 Cells(10, 4) = iRowEintrag 'Ausgabe der Zeilennummer 'Hier muesste der Stand eingetragen werden und ggf. der Wurfeintrag entfernt 'Ende Wenn in der Zelle was steht und es ist Spalte 2, dann End If 'Ende mit der aktiven Zelle - Cursor auf die Zelle mit dem Eintrag stellen! End With End Sub
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
|