Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Modifikation Zufallsgenerator | Herbers Excel-Forum


Betrifft: Modifikation Zufallsgenerator von: MathiasW.
Geschrieben am: 14.01.2010 16:52:33

Hallo Excelfreunde,

ich habe ein Makro für einen Zufallsgenerator gefunden u. in eine Excel Datei eingebunden.
Dieser müsste allerdings modifiziert werden, da ich in VBA nicht wirklich fit bin, hoffe ich ihr könnt mir helfen.
Die Prozedur sieht so aus

Function Zufall123()
Dim Zufall As Integer, x As Integer
For x = 1 To 50
    Zufall = Int((21 * Rnd) + 1)
    Cells(2, 11).Value = Cells(Zufall, 1)
    Sleep 200
Next
MsgBox Cells(Zufall, 1)
End Function
Die funktioniert auch wirklich gut, nur 2 Bedingungen müssten geändert bzw. eingefügt.
1) Der zufällige Name soll nur aus dem Bereich A2:A28 gewählt und
2) es soll vorher geprüft werden ob im Bereich G2:G28 das Wort "gebucht" steht

Bsp. im in A2 steht Name1 in G2 steht gebucht, in A10 steht Name2 in G10 steht gebucht in A18 steht Name3 in G18 steht gebucht. In den anderen Zellen im Bereich G2:G28 steht nix. Dann soll der zufällige Name nur aus den Zellen A2 & A10 & A18 ausgewählt werden.

Kennt ihr da eine Lösung?

vielen Dank im vorraus
gruss Mathias

  

Betrifft: Der Zufallsgenerator war sicher für einen... von: Luc:-?
Geschrieben am: 14.01.2010 17:18:24

...bestimmten Zweck gedacht, Mathias;
üblicherweise schreibt man vor der erstmaligen Benutzung der vbFkt Rnd (hier noch vor der Schleife) erst noch Randomize, damit nicht bei jedem Durchlauf derselbe Startwert benutzt wird. Außerdem ist die udFkt überflüssig wie ein Kropf, denn das machent ja schon die xlFktt ZUFALLSZAHL und ZUFALLSBEREICH. Der Autor wollte sich wohl bloß etwas FmlFormulierungsarbeit ersparen. Mit...
=INDIREKT("A"&ZUFALLSBEREICH(2;28))
...erhältst du ein Ergebnis, das deiner 1.Forderung entspricht, wenn du das Analyse-AddIn benutzt. Anderenfalls kann man das auch über ZUFALLSZAHL lösen (vgl excelformeln.de).
Zur 2.Forderung später oder von Anderen...
Gruß Luc :-?


  

Betrifft: AW: Der Zufallsgenerator war sicher für einen... von: MathiasW.
Geschrieben am: 14.01.2010 22:22:36

Hallo ihr beiden,

erstmal vielen Dank für die Lösungsansätze, könnt ihr mir das auch ins Makro mit einbauen?
währe echt super.

gruss mathias


  

Betrifft: AW: Der Zufallsgenerator war sicher für einen... von: Josef Ehrensberger
Geschrieben am: 14.01.2010 22:33:11

Hallo Matthias,

mkir entzieht sich zwar der Sinn, und ausserdem sollte der Code eher in eine Sub als in eine Funktion,
aber du wirst schon wissen was du damit vorhast.

Function Zufall123()
  Dim intRet As Integer, intIndex As Integer
  
  Randomize Timer
  
  For intIndex = 1 To 50
    Do
      intRet = Int((21 * Rnd) + 1)
    Loop While Cells(intRet, 7) <> "gebucht"
    
    Cells(2, 11).Value = Cells(intRet, 1)
    Sleep 200
  Next
  
  MsgBox Cells(intRet, 1)
End Function



Gruß Sepp



  

Betrifft: ...mir entzieht sich zwar der Sinn... von: Luc:-?
Geschrieben am: 14.01.2010 23:43:56

...und genau deshalb habe ich das nicht getan, Sepp,
obwohl ich schon drauf und dran war. Solche unsinnigen udFktt mag ich weder korrigieren noch weiterverbreiten, zumal diese hier ja nicht auf Mathias' Mist gewachsen ist und er sie höchstwahrscheinlich auch gar nicht versteht. Habe was gg „Code-Kids“, obwohl die echten möglicherweise eher verstehen, was sie tun...
Gruß Luc :-?


  

Betrifft: AW: ...mir entzieht sich zwar der Sinn... von: MathiasW.
Geschrieben am: 15.01.2010 10:44:00

Funktioniert perfekt... :-)

vielen Dank u. schönes WE
Mathias


  

Betrifft: AW: Modifikation Zufallsgenerator von: Josef Ehrensberger
Geschrieben am: 14.01.2010 19:10:00

Hallo Mathias,

Tabelle3

 ABCDEFGHI
2Name 1       Name 11
3Name 2        
4Name 3     gebucht  
5Name 4        
6Name 5     gebucht  
7Name 6        
8Name 7        
9Name 8        
10Name 9        
11Name 10     gebucht  
12Name 11     gebucht  
13Name 12     gebucht  
14Name 13        
15Name 14        
16Name 15        
17Name 16        
18Name 17        
19Name 18        
20Name 19        
21Name 20     gebucht  
22Name 21        
23Name 22        
24Name 23        
25Name 24        
26Name 25        
27Name 26        
28Name 27        

Formeln der Tabelle
ZelleFormel
I2{=INDEX(A2:A28;INDEX(KKLEINSTE(WENN(G2:G28="gebucht";ZEILE(1:27)); ZEILE(1:27)); KÜRZEN(ZUFALLSZAHL()*ZÄHLENWENN(G2:G28;"gebucht"); 0)+1))}
Enthält Matrixformel:
Umrandende
{ } nicht miteingeben,
sondern Formel mit STRG+SHIFT+RETURN abschließen!
Matrix verstehen


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4




Gruß Sepp



Beiträge aus den Excel-Beispielen zum Thema "Modifikation Zufallsgenerator"