PDA

Vollständige Version anzeigen : Zufällig auswählen


CreatorX
23.02.2008, 04:22
Hallo, ich habe von A2 bis meinetwegen A10 verschiedene Worte in den Feldern stehen. Nun möchte ich, das sich B1 zufällig eins davon auswählt so das es dann auch in B1 steht. Wie geht das? Danke.

jinx
23.02.2008, 06:00
<font size="2" face="Century Gothic">Moin, CreatorX,

entweder die in Excel inetgrierte Funktion ZUFALLSZAHL nutzen oder aber über Extras/Add-In-Manager die Analysefunktionen aktivieren und ZUFALLSBEREICH jeweils in Verbindung mit INDIREKT nutzen:
<table><tr style="vertical-align:top; text-align:center; "><tr><td>Tabelle1</td></tr><tr><td><table border=1 cellspacing=0 cellpadding=0 style="font-family:Arial,Arial; font-size:10pt; padding-left:2pt; padding-right:2pt; "> <style type = "text/css"> th {font-weight:normal} </style> <colgroup><col width=30 style="font-weight:bold; "><col width=79.999998 ><col width=79.999998 ></colgroup><tr style="background-color:#cacaca; text-align:center; font-weight:bold; font-size:8pt; "><td>&nbsp;</td><td>A</td><td>B</td></tr><tr height=17 ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >1</td><td style="">Leer</td><td style="">TEST 9</td></tr><tr height=17 ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >2</td><td style="">TEST 2</td><td style="">TEST 10</td></tr><tr height=17 ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >3</td><td style="">TEST 3</td><td style="">&nbsp;</td></tr><tr height=17 ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >4</td><td style="">TEST 4</td><td style="">&nbsp;</td></tr><tr height=17 ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >5</td><td style="">TEST 5</td><td style="">&nbsp;</td></tr><tr height=17 ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >6</td><td style="">TEST 6</td><td style="">&nbsp;</td></tr><tr height=17 ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >7</td><td style="">TEST 7</td><td style="">&nbsp;</td></tr><tr height=17 ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >8</td><td style="">TEST 8</td><td style="">&nbsp;</td></tr><tr height=17 ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >9</td><td style="">TEST 9</td><td style="">&nbsp;</td></tr><tr height=17 ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >10</td><td style="">TEST 10</td><td style="">&nbsp;</td></tr></table><table style="font-family:Arial; font-size:10pt; border-style: groove ;border-color:#00ff00;background-color:#FFFCF9; "><tr><td><b>Formeln der Tabelle</b></td></tr><tr><td><table style="font-family:Arial; font-size:10pt;">B1 : =INDIREKT("A" & AUFRUNDEN<span style=' color:008000; '>(ZUFALLSZAHL<span style=' color:#0000ff; '>()</span>*9;0)</span>+1)<br>B2 : =INDIREKT("A" & ZUFALLSBEREICH<span style=' color:008000; '>(2;10)</span>)<br></table></td></tr></table></td></tr><tr><td>&nbsp;</td></tr></tr></table> <br></font>

CreatorX
23.02.2008, 14:36
Ok, danke. Wenn ich das jetzt weiterführe und für b2 und b3 usw. auch haben will, wäre es auch möglich, Felder die schon genommen wurden auszulassen. Also wenn jetzt in B1 "Test 9" steht darf es nicht mehr in den anderen Feldern stehen und so weiter. Geht das?

jinx
23.02.2008, 14:56
<font size="2" face="Century Gothic">Moin, CreatorX,

wenn die Zahlen wirklich über den ganzen Bereich verteilt sein sollen, ist Ganzzahlige Zufallszahlen ohne Wiederholung ziehen (http://www.excelformeln.de/formeln.html?welcher=152) der Ausgangspunkt, von dem aus die Lösung erstellt werden kann. Ansonsten kann evtl. der Bereich für die Zufallszahlen-Multiplikation bzw. den Zufallsbereich aufgeteilt werden...</font>

CreatorX
23.02.2008, 17:31
Sehr schön, vielen Dank!

Jetzt möchte ich nur noch, dass sich das Ganze auf Knopfdruck (also per Makro) aktualisiert (also das sich die Werte wieder ändern)

jinx
23.02.2008, 20:30
Moin, CreatorX,

drück doch einfach die Taste F9, das entspricht dem Befehl Application.CalculateFull, den das Makro ausführen müsste... ;)

CreatorX
24.02.2008, 05:35
Vielen Dank, super!

CreatorX
26.02.2008, 14:47
Vielleicht doch nicht super. Gibts nicht ne Möglichkeit, dass sich die Zufallszahl wirklich erst dann aktualisiert wenn ich es will und nicht schon nach jeder kleinen Veränderung in der Arbeitsmappe? Sowas wäre bei meinem Projekt aber dringend erforderlich. Wäre super, wenn mir da jemand helfen könnte.

jinx
26.02.2008, 18:01
<font size="2" face="Century Gothic">Moin, CreatorX,

Extras / Optionen / Berechnung auf manuell umstellen oder eine benutzerdefinierte Funktion in ein Standardmodul der Mappe einfügen und verwenden:

Function fncFesteZufallszahl(Optional lngMultiplikator As Long = 1000) As Long

Randomize
fncFesteZufallszahl = Int(Rnd * lngMultiplikator)

End Function

<b>Tabelle1</b><br /><br /><table border="1" cellspacing="0" cellpadding="0" style="font-family:Arial,Arial; font-size:10pt; background-color:#ffffff; padding-left:2pt; padding-right:2pt; "> <colgroup><col style="font-weight:bold; width:30px; " /><col style="width:80px;" /><col style="width:80px;" /></colgroup><tr style="background-color:#cacaca; text-align:center; font-weight:bold; font-size:8pt; "><td >&nbsp;</td><td >A</td><td >B</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >1</td><td >&nbsp;</td><td style="text-align:right; ">1</td></tr></table><br /><table style="font-family:Arial; font-size:10pt; border-style: groove ;border-color:#00ff00;background-color:#fffcf9; color:#000000; "><tr><td ><b>Formeln der Tabelle</b></td></tr><tr><td ><table border = "1" cellspacing="0" cellpadding="2" style="font-family:Arial; font-size:9pt;"><tr style="background-color:#cacaca; font-size:10pt;"><td >Zelle</td><td >Formel</td></tr><tr><td >B1</td><td >=fncFesteZufallszahl(10)</td></tr></table></td></tr></table> <br /><br /></font>

CreatorX
27.02.2008, 14:49
Ok, danke erstmal. Aber wie kann ich bei der ersten und bei der zweiten Methode die Zufallszahl dann aktualisieren? Und was bedeutet bei der Funktion die Zahl in der Klammer?

jinx
27.02.2008, 17:21
<font size="2" face="Century Gothic">Moin, CreatorX,

beim Ausstellen der Berechnung durch Drücken von F9, bei der zweiten, indem Du entweder in die Zelle gehst und dort F2 und dann Eingabe drückst oder aber per VBA die Berechnung für die Zelle "anstoßen":

Sub Aktualisieren()
Worksheets("Tabelle1").Range("C4").Calculate
End Sub
Die Zahl gibt den Faktor an, mit dem die Zufallszahl multipliziert wird. Erfolgt keine Angabe dieser Zahl (also nur eine leere Klammer), wird die Voreinstellung von 1000 übernommen.</font>

CreatorX
27.02.2008, 17:43
Danke. Jetzt nur noch eine "Kleinigkeit". Bei Zufallszahl() bekomm ich einen Wert zwischen 0 und 1 also 0,... Wie schaffe ich es bei dieser Funktion?

jinx
27.02.2008, 18:03
<font size="2" face="Century Gothic">Moin, CreatorX,

die Funktion ist auf das Liefern von ganzen Zahlen durch die Verwendung von INT festgelegt - wird diese Anweisung entfernt und der Rücklieferungstyp von Long auf Double umgestellt, werden auch Zufallszahlen wie bei Rnd/Zufallszahl() geliefert.</font>

CreatorX
27.02.2008, 18:54
Ich habs dann so gemacht:
Function fncFesteZufallszahl(Optional lngMultiplikator As Double = 1000) As Double

Randomize
fncFesteZufallszahl = Rnd * lngMultiplikator

End Function
Ich denke mal so hast du es gemeint und so funktioniert es auch. Vielen vielen Dank, damit bleiben (erstmal ^-^) keine Wünsche offen. Top Arbeit!