Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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
Antworten 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
Antworten Top
#3
@Helmut:

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

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

genutzt.

Funktioniert wunderbar.

Danke.
Antworten Top


Gehe zu:


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