Registriert seit: 25.02.2015
Version(en): Mac Office 2008
Hallo zusammen! Da ich mich leider nur sehr rudimentär in Excel auskenne, möchte ich mich in diesem Forum erkundigen, ob sich jemand meinem Problem annehmen könnte... sofern dies überhaupt lösbar ist. Meine Aufgabenstellung: Es müssen Spiel-Karten mit 4 Feldern und wechselnden Zahlen von 0 bis 36 generiert werden. Die Zahlen müssten für jeweils 1000, 2000 oder 4000 Karten "zusammengewürfelt" werden und dürften natürlich jeweils nur 1x vorkommen. Da die Daten danach in InDesign importiert werden (Datenzusammenführung), müssten also 4 Spalten mit den jeweiligen Zahlenkombinationen (1 bis 36 / für 1000, 2000 oder 4000 Karten) vorhanden sein. Vielen herzlichen Dank im voraus für allfällige Lösungsvorschläge! Gruss Thomas
Registriert seit: 01.11.2014
Version(en): 2007, 2010
25.02.2015, 11:07
(Dieser Beitrag wurde zuletzt bearbeitet: 25.02.2015, 11:08 von Max.)
Hallo Thomas, aslo grundsätzlich kannst Du Zufallswerte so generieren. Arbeitsblatt mit dem Namen 'Tabelle1' | | A | B | C | D | 1 | 21 | 29 | 10 | 27 |
Zelle | Formel | A1 | =ZUFALLSBEREICH(1;36) | B1 | =ZUFALLSBEREICH(1;36) | C1 | =ZUFALLSBEREICH(1;36) | D1 | =ZUFALLSBEREICH(1;36) |
Allerdings versteh ich nicht wie bei bspw. 1000 Karten jeder Wert nur 1x vorkommen soll? (25.02.2015, 10:50)ThomasK schrieb: ... Die Zahlen müssten für jeweils 1000, 2000 oder 4000 Karten "zusammengewürfelt" werden und dürften natürlich jeweils nur 1x vorkommen. ... Gruß Max
Registriert seit: 25.02.2015
Version(en): Mac Office 2008
Hallo Max!
Vielen Dank für die rasche Antwort. Genau da liegt mein Problem... Ich müsste doch eigentlich jeweils 1000, 2000 oder 4000 Zeilen haben, wobei in den 4 Spalten die Zahlen schon "gemischt" sind...?
Gruss und Dank Thomas
Registriert seit: 01.11.2014
Version(en): 2007, 2010
Hallo Thomas,
aslo die Formel kannst Du nach unten ziehen. Das löst aber das Problem nicht. Wenn ich 36 Kartenwerte habe und einen Kartenstapel mit 1000 Karten, dann kann jede Karte 27,7 Mal (1000/36) in diesem Stapel vorkommen, oder?
Gruß Markus
Registriert seit: 25.02.2015
Version(en): Mac Office 2008
Hallo Max!
Ich muss die Ziffern 0 bis 36 – also 37 Zahlen verwenden. Diese werden in beliebiger Kombination von 4 Ziffern pro Blatt abgedruckt... das ergibt doch mehr als 1000 Kombinationen...?
0 / 1 / 2 / 4 bis 0 / 34 / 35 / 36 natürlich muss die Reihenfolge zufällig sein: z.B. 9 / 17 / 23 / 35 oder so...
Danke für die Hilfe!
Gruss Thomas
Registriert seit: 01.11.2014
Version(en): 2007, 2010
25.02.2015, 12:10
(Dieser Beitrag wurde zuletzt bearbeitet: 25.02.2015, 12:26 von Max.)
Hallo Thomas, irgendwie reden wir aneinander vorbei . Okay das mit den Werten von 0 bis 36 ist das kleinste Problem. Die Formel einfach wie folgt ändern: Code: =ZUFALLSBEREICH(0;36)
Mir geht es nicht um die Anzahl der Kombinationen, sondern um das Vorkommen der einzelnen Werte! Wobei das natürlich dann auch die Anzahl der Kombinationen begrenzt :32:. Wenn ich ein Kartendeck aus 1000 Karten habe dann kann jede Karte (0 bis 36) rund 27 Mal in deinem Deck vorkommen, oder? Nämlich 1000 Karten dividiert durch 37 Kartenwerte. Oder anders ausgedrückt: Ein Deck aus 1000 Karten besteht aus 27 Kartenspielen mit je 37 Karten? Oder darf jede Karte nur 1x Mal vorkommen? Dann wäre die Frage, was ist mit den anderen 963 Karten im Deck? Gruß Max
Registriert seit: 25.02.2015
Version(en): Mac Office 2008
Hallo Max Ja, ich denke es liegt wohl an meiner "Erklärung"... – ich habe 1000 (oder 2000... oder 4000) Karten – auf jeder Karte sind 4 beliebige (1- oder 2stellige) Ziffern – die Ziffern sind von 0 bis 36 beliebig (wie eine BINGO-Karte) – sämtliche Ziffern-Kobinationen dürfen NUR 1x vorkommen Hoffe, diese Auflistung ist etwas verständlicher... sorry! Gruss und Dank (bin aber erst morgen wieder online) Thomas
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo, wenn ich es richtig verstanden habe, dann kann das nur mit VBA gehen. Ich habe unten mal einen Code zusammengebastelt, der das machen sollte, was ich verstanden habe, was Du möchtest. Code: Option Explicit
Sub tausender() Dim j As Long, i As Long Dim lozahl As Long Dim varKey Dim varFeld1 Dim arr1() Dim objDic As Object Dim arrZahlen Set objDic = CreateObject("Scripting.Dictionary") Do Do Randomize lozahl = Application.WorksheetFunction.RandBetween(0, 36) 'sechs unterschiedliche Zufallszahlen generieren If InStr(arrZahlen, lozahl) = 0 Then arrZahlen = lozahl & " " & arrZahlen 'Zufallszahlen in ein mit Leerzeichen getrennt in ein Array schreiben i = i + 1 End If Loop While i < 4 varKey = arrZahlen If InStr(objDic(varKey), arrZahlen) = 0 Then objDic(varKey) = arrZahlen j = j + 1 End If arrZahlen = "" i = 0 Loop While j < 1001
j = 0 ReDim arr1(objDic.Count - 1, 3) For Each varKey In objDic For i = 0 To UBound(Split(objDic(varKey))) - 1 arr1(j, i) = Split(objDic(varKey))(i) Next i j = j + 1 Next varKey Range("A1:D1000") = arr1 End Sub
Den Code in ein Modul einfügen und starten. Es wird in den Bereich A!:D100 der aktiven Tabelle geschrieben.
Gruß Atilla
Registriert seit: 13.04.2014
Version(en): 365
Hallo, ich habe mich auch mal versucht: Code: Option Explicit
Sub Klick() Dim loB As Long Dim lozahl As Long Dim arrZahlen, arrZahlen2(3), arrZahlen3(999) Dim loA As Long Dim bolTreffer As Boolean Application.ScreenUpdating = False loA = 0 Do bolTreffer = False arrZahlen = "" Do Randomize lozahl = Application.WorksheetFunction.RandBetween(0, 36) 'vier unterschiedliche Zufallszahlen generieren If InStr(arrZahlen, lozahl) = 0 Then arrZahlen = lozahl & " " & arrZahlen 'Zufallszahlen in ein mit Leerzeichen getrennt in ein Array schreiben arrZahlen2(loB) = lozahl loB = loB + 1 End If Loop While loB < 4 For loB = 0 To 3 arrZahlen3(loA) = arrZahlen3(loA) & WorksheetFunction.Small(arrZahlen2, loB + 1) & " " 'Mit kkleinste sortiert den Arrayinhalt wieder zurückschreiben Next If loA > 0 Then For loB = 0 To loA - 1 If arrZahlen3(loB) = arrZahlen3(loA) Then bolTreffer = True Next End If If bolTreffer = False Then loA = loA + 1
loB = 0 Loop While loA < 1000 For loA = 0 To 999 Range(Cells(loA + 1, 1), Cells(loA + 1, 4)) = Split(arrZahlen3(loA), " ") Next With Range("A1:D1000") .NumberFormat = "General" .Value = .Value End With Application.ScreenUpdating = True End Sub
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr! Über Rückmeldungen würde ich mich freuen.
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo Edgar,
das trifft sich jetzt gut. Gestern noch mit Zufallszahlen rumhantiert und heute kommt dann eine Frage dazu. So kann man dann Neue gleich anwenden und besser abspeichern. Ich habe das Gefühl, dass Deine Variante etwas schneller ist als meine obwohl Du die Zahlen noch zusätzlich sortierst. War vom TE zwar nicht verlangt aber vielleicht kommt er ja auf den Geschmack.
Die äußere Do Schleife von mir kann sicher noch optimiert werden. Ich schau mir das heute Abend noch mal an.
Gruß Atilla
|