5.6k Aufrufe
Gefragt in Tabellenkalkulation von kvtv Einsteiger_in (79 Punkte)
Hallo Ihr guten Geister dieses Forums, habe eine Auslosung mit eurer Hilfe bereits hin bekommen (Forumssuche).
Nun stoße ich aber auf ein Problem welches ich nicht alleine lösen kann. Mit dem unten angegebenen Zufallsgenerator kann ich zwar Ziehungen durchführen aber der zieht halt sollange weiter bis ich keine Lust mehr habe. In dem Tabellenblatt "Gewinne" habe ich in der Spalte A die Namen, in Spalte B die dazugehörigen Nummern (sind für diese Sache unerheblich) und in Spalte C die Anzahl der zu Verfügung stehenden Gewinne. Ich habe es nun auch schon hin bekommen das die Ahnzahl bei jeder passende Ziehung um eins reduziert wird. Jetzt mein Problem: wie muß der Zufalssgenerator geändert werden , das er die Gewinne die in der Spalte C eine Null oder kleiner (Minuszahlen) haben, nicht mehr berücksichtigt werden, bis ich die Zahlen wieder per Hand erhöhe und wie kann ich den Zufallsgenerator dazu bringen die Häufigkeit der Ziehungen des einzelnen Gewinnes prozentual in Abhängigkeit der Anzahl in Spalte C zu machen. z.B.: Trostpreise 200 Stück, kleinerer Gewinn 100 Stück, nächst höherer Gewinn 50 Stück ... bis zum Hauptgewinn sagen wir mal 5 Stück.
Ich hoffe ich habe Euch nicht vor eine unlösbare Aufgabe gestellt.


Sub Zufall1()
Dim G(20) As Integer
Dim vorhanden As Boolean
Dim Anz, a, i, z, x
'Anzahl der Einträge in Tabelle1 ermitteln
Anz = Tabelle1.Range("A65536").End(xlUp).Row
'Anzahl der zu ziehenden Namen
a = 1
For i = 1 To a 'Ziehung
Do 'Prüfschleife
Randomize 'Echte Zufallszahl erzeugen (1-Anz)
z = Int(Rnd * Anz) + 1
Debug.Print z
vorhanden = False 'Merker zurücksetzen
For x = 1 To i 'Prüfung, ob Zahl schon gezogen wurde
If G(x) = z Then 'Wurde ZZ schon gezogen?
vorhanden = True 'Ja, markieren
Exit For
End If
Next 'nein, nächte Zahl prüfen.
If Not vorhanden Then 'Wenn Zufallszahl nicht markiert wurde,
G(i) = z 'dann diese notieren und
Exit Do 'Prüfschleife verlassen,
End If
Loop 'ansonsten einen neuen Ziehungsversuch machen.
Next
'Ausgabe der Namen auf Tabelle 3
With Tabelle3
For i = 1 To a
.Cells(i, 1) = Tabelle1.Cells(G(i), 1)
Next
End With
Sheets("Tabelle3").Select
End Sub

Vielen Dank im voraus für Eure Bemühungen.
LG Karsten

17 Antworten

0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Karsten,

trotz Beschreibung und Code kann ich mir nicht richtig vorstellen, was da ablaufen soll.
Kannst Du eine Beispielmappe bereitstellen?

Gruß
Rainer
0 Punkte
Beantwortet von kvtv Einsteiger_in (79 Punkte)
Hallo Rainer, vielen Dank für die schnelle Antwort. Unter diesem Link findest Du die Datei:

http://www.siteupload.de/p966948-Zufallsgenerator4Forumzip.html

Gruß
Karsten
0 Punkte
Beantwortet von kvtv Einsteiger_in (79 Punkte)
Hallo, ist denn hier keiner der mir einen Tipp geben kann.
Vielen Dank im voraus.
Gruß Karsten
0 Punkte
Beantwortet von kvtv Einsteiger_in (79 Punkte)
Hallo Ihr guten Geister dieses Forums,
habe gerade bemerkt das mir beim hochladen ein Fehler bei der Datei passiert ist. Hier nun der Link zur richtigen:

www.siteupload.de/p967191-Zufallsgenerator4Forumzip.html

Ich hoffe, das damit nicht zu viel Verwirrung gestifftet habe!
Sorry.

Bitte helft mir bei meinem Problem!
Vielen Dank im voraus.
Gruß
Karsten
0 Punkte
Beantwortet von kvtv Einsteiger_in (79 Punkte)
Hallo,
kann mir denn wirklich keiner helfen???
Vielen Dank für Eure Bemühungen im voraus.
Gruß Karsten
0 Punkte
Beantwortet von kvtv Einsteiger_in (79 Punkte)
Hallo,
sollte dies hier das erste mal sein das mir keiner helfen kann.

:-(

LG Karsten
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Karsten,

vielleicht geht es anderen auch so wie mir.

Ich jedenfalls, kann mir trotz Beispielmappe nicht erklären, was da konkret ablaufen soll.

Versuch's doch mal mit einer unmissverständlichen Erklärung.

Gruß
Rainer
0 Punkte
Beantwortet von kvtv Einsteiger_in (79 Punkte)
Hallo Rainer,
danke das Du mich nicht verlassen hast.
Also:
Dieser Zufallsgenerator ist nichts anderes wie eine Verlosungsmaschine. Unsere Kunden sollen einen Flyer bekommen wo sagen wir mal ein Scancode (Strichcode- EAN) abgedruckt ist. Dieser Kunde kommt nun zu uns und möchte schauen was er gewonnen hat. Wir scannen den Code ab (in Tabellenblatt Eingabe) und nun soll per Zufall entschieden werden welchen der 6 Gewinne (in Tabellenblatt Gewinne) er gewonnen hat. Angezeigt wird dies im Tabellenblatt 3 und wird mit dem Löschen button wieder zur nächsten Ziehung vorbereitet. Das soll nun so geschehen, das Excel ,das nach der Menge der Gewinne in spalte C Tabellenblatt Gewinne veranlasst. Soll heißen der Trostpreis ist 200 mal da muß also prozentual mehr gezogen werden wie der Hauptpreis mit 5 Stück. Bei jeder Ziehung des einzelnen Gewinnes, soll dessen Menge um eins reduziert werden. Wenn die Menge auf null ist soll dieser Preis nicht mehr bei der Ziehung berücksichtigt werden. Das mit der Ziehung klappt ja eigentlich schon das mit der Reduzierung um eins klappt halbwegs (jedenfalls wenn die Preise immer diesen Namen behalten, ansonsten klappt es nicht. Die Gewinne sollen aber austauschbar vom Namen her sein). Das mit der prozentualen Häufigkeit in Abhängikeit der Gewinnmenge in Spalte C vom Blatt Gewinne klappt überhaupt nicht. Bitte helft mir ich verzweifele ander Aufgabe. Ach übrigens habe vergessen alle nicht benötigten Maros zu löschen. Sorry.
Trotzdem schon mal vielen lieben Dank für die Mühe die Ihr Euch gebt. Habt Ihr noch fragen bitte stellt sie da ja sonst nicht geholfen bekommen kann. Danke nochmals.
LG Karsten
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Karsten,

wäre diese Info gleich zu Anfang von Dir gekommen, hätte ich Dich bereits da verstanden:-)

Da ich mich aber in der Hauptsache um Formeln kümmere, muss ich Dich nun doch verlassen und überlasse Dein Problem einem/r VBA-Mann/Frau.

Zur Not würde ich es auch hinkriegen, aber warum schinden, wenn es ein anderer aus dem Handgelenk schüttelt :-)

Gruß
Rainer
0 Punkte
Beantwortet von kvtv Einsteiger_in (79 Punkte)
Hallo Rainer,
danke trotzdem erstmal für deine Bemühungen.

LG Karsten
...