Problem mit Zufallsgenerator
#1
Hallo geschätzte Excelgemeinde,

ich erweitere wieder mein Wissen, bin aber auf ein Problem gestoßen, welches ich nicht lösen kann.

Ich möchte mit dem unten stehenden Code eine Zufallszeile zwischen der zweiten und letzten Zeile erzeugen.

Code:
Spalte = 1
    'Abfrage ob Veggie gewünscht wird
    If Controls("CheckBox" & zaehler & 6) = Enabled Then
    Spalte = 5
    End If
    LetzteZeile = Sheets(i).Cells(Rows.Count, Spalte).End(xlUp).Row
    '________________________________________________________
    
    'Zeilennummer zufällig generieren
    Zeile = Int((LetzteZeile* Rnd) + 2)

Bei der Beobachtung des Durchlaufs des Codes im Lokalfenster stelle ich fest, dass der Wert für Zeile regelmäßig größer ist als der Wert für LetzteZeile.
Das erscheint mir nicht logisch, da ich mit dem Wert für LetzteZeile schon das Maximum des Wertes von Zeile ermittle.
Liege ich falsch? Wo ist der Fehler in meinem Code?

Danke für Eure Antworten.

Gruß

tmessers
Top
#2
Hallo  tmessers,

Die Funktion RND liefert einen Wert in dem Intervall [0;1).
INT(L*RND) ist dann maximal L-1 und wenn du zwei addierst, ist der Maximalwert L+1.

Für deine Anforderung gibt es die Funktion RANDBETWEEN.


PS. Es ginge auch INT((L-1)*RND)+2
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





[-] Folgende(r) 1 Nutzer sagt Danke an Ego für diesen Beitrag:
  • tmessers
Top
#3
@Helmut:

Danke für die schnelle Antwort.
Ich habe Deine Lösung  

          " INT((L-1)*RND)+2"  

genutzt.

Funktioniert wunderbar.

Danke.
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste