Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zufallszahl mit Nachkommastellen

Zufallszahl mit Nachkommastellen
16.04.2009 14:33:39
Stefan
Hallo zusammen,
mein Sohnemann hat in Mathe ein wenig Schwierigkeiten bei der Berechnung von Restmengen.
Und da sich Excel natürlich optimal zu Übungszwecken eignet, wollte ich eine Tabelle erstellen,
in der Zufallsbeträge erzeugt werden. Mit der rnd-Funktion geht das ja, aber leider nicht
mit Nachkommastellen. Und ich möchte nicht die Tabellenfunktion nutzen, da sonst das Blatt
(und die Zufallszahlen) gleich neu berechnet werden. Schaltet man die Neuberechnung aus,
kann ich keine Ergebniskontrolle einbauen.
Kann mich jemand mit einer Idee Unterstützen ?
Vielen Dank und Gruß
Stefan K.
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zufallszahl mit Nachkommastellen
16.04.2009 14:51:50
selli
hallo stefan,
so vielleicht:
Cells(1, 1) = Rnd() * 1000
gruß
selli
AW: Zufallszahl mit 2 Nachkommastellen
16.04.2009 15:16:37
hary
Hi Stefan
so?

Sub zufall()
' höchstens 100 und nur 2 Stellen hinter Komma
Cells(1, 1) = WorksheetFunction.Round(Rnd() * 100, 2)
End Sub


Gruss Hary

Anzeige
WorksheetFunction überflüssig, Round...
16.04.2009 21:51:09
Luc:-?
...gibt's auch als vbFkt, Hary.
Außerdem sollte als 1.Zeile nach Kopf Randomize stehen.
Gruß Luc :-?
AW: @ Luc
16.04.2009 22:25:48
Gerd
'n Abend,
Round (entspr. VBA.Round) kannst über den Harz kicken. Wer will schon eine Rundung auf gerade Zahlen?
Worksheetfunction.Round oder Application.Round
Gruß Gerd
Anzeige
Frage mich ernsthaft, was du wohl für...
16.04.2009 23:28:12
Luc:-?
...ein VB haben musst, Gerd...?!
Wenn ich round( schreibe öffnet sich ein PopUp mit folg Inhalt:
Round(Number, [NumDigitsAfterDecimalAsLong])
Was meinst du wohl, was die Bezeichnung von Arg2 auf deutsch heißt? Oder meinst du, die Anzahl der Dezimalen auf die gerundet wdn soll, müsste auch als Dezimalzahl deklariert wdn... ;->
Eine Rundung auf Ganzzahlen erreichst du mit CInt, CLng, Divisionsoperator \, Round ohne Arg2 bzw mit Arg2=0 usw...
Was sich unterscheidet ist, dass Arg2 stets ≥0 sein muss, aber auch fehlen darf, und dass eine auf ...45 endende Dezimalzahl auf eine Dezimale weniger gerundet nicht aufgerundet wird, also ...4 ergibt, während die xlFkt auf ...5 aufrundet! Und Ersteres ist oft erwünscht (Buchhaltung).
Fazit: Nicht Gerüchte nachplappern, sondern selber denken!
Gruß Luc :-?
Anzeige
AW: Frage mich ernsthaft, was du wohl für...
17.04.2009 20:37:34
Gerd
Hi Luc!

Sub t()
MsgBox WorksheetFunction.Round(2.5, 0)   '=3
MsgBox Application.Round(2.5, 0)    '=3
MsgBox Round(2.5, 0)   '=2
End Sub


Ob das ein Bug in der Round-Funktion ist oder diese nur in der Hilfe falsch oder unzulänlich beschrieben ist,
ist mir egal. Ob sie für die Chaise Manhattan Bank in Illinois passt ebenfalls.
Rem: Für hiesige Breiten ist so ein Rückgabewert ganz einfach bescheuert.
Alternativen sind vorhanden. :-)
Gruß Gerd

Anzeige
Wenn du dich an der buchhalterischen...
17.04.2009 23:43:30
Luc:-?
...Rundung störst, Gerd,
dann hat das ja wohl nichts mit ganzzahlig zu tun! Außerdem gilt die überall auf der Welt, auch bei uns! Vielleicht haben wir die sogar erfunden, würde mich nicht wundern... ;-)
Aber offensichtlich kennst du das nicht. Das geht so...
In deinem Bsp hast du 2,5 - hier besagt die Regel 5 ist die letzte Ziffer also abrunden. Hättest du 2,51 geschrieben, würde aufgerundet wdn. Das ist in diesem Bereich so festgelegt. Beachte, xl ist eine Kalkulationssoftware! Eigentlich hätte RUNDEN so fkt müssen, aber das hatten die ursprünglichen Pgmierer wohl wie auch manches Andere übersehen. MS hat dann so etwas in VBA korrigiert. In xl selbst ging das aus Kompatibilitätsgründen nicht mehr. Ein anderes Bsp für Korrekturen mit VBA wäre das Datum - 1900 ist in xl fälschlich ein Schaltjahr, in VBA nicht...
Gruß Luc :-?
Anzeige
AW: Wenn du dich an der buchhalterischen...
18.04.2009 12:22:47
Gerd
Hi Luc,
man sollte ganz einfach auf den schrägen Algorithmus der vba.round-funktion hinweisen, wenn man diese
empfiehlt, da normalerweise Kaufmännisches Runden benötigt u. erwartet wird. :-)
Gruß Gerd
Es ist natürlich noch etwas anders,...
19.04.2009 06:21:30
Luc:-?
...Gerd,
insofern ist es schon berechtigt, dass RUNDEN nach der einfacheren Regel des "Kaufmännischen Rundens" erfolgt. Allerdings muss beachtet wdn, dass das kaufmännische Runden kleine systematische Fehler erzeugt, da das Aufrunden um 0,5 vorkommt, das Abrunden um 0,5 jedoch nie; das kann Statistiken geringfügig verzerren. Außerdem ist das Verhalten bei positiven und negativen Zahlen unterschiedlich, wenn die zu rundende Ziffer eine 5 ist (Zitat). Deshalb wird oft die andere Form verlangt, die 3 Regeln hat, wobei noch zwischen gerader und ungerader "Vorrundungsziffer" unterschieden wird. Der größeren Genauigkeit wg wird das ja auch Mathematische Rundung bzw engl Banker's Rounding genannt. Deshalb wohl deine Bemerkung mit den US-Banken. Allerdings wird das in Wissenschaft & Technik ebenfalls verwendet. Es ist auch leichter, der zu rundenden Zahl ggf einen kleinen Betrag hinzuzufügen, um Gleichheit zum K.R. zu erreichen, als das M.R. mit RUNDEN im TabBlatt nachzustellen. Insofern ist das so auch OK. Allerdings war mir das bisher gar nicht bewusst, da es ja auch MS in der VBE-Hilfe nicht für nötig hielt/hält, darauf hinzuweisen... ;-)
Gruß Luc :-?
Anzeige
So, versuche einen ergänzenden Upload!
22.05.2009 04:56:44
Luc:-?
Habe mich zwischenzeitlich mal etwas weitergehend mit dem Problem auseinandergesetzt und eine udFkt geschrieben, deren Wirkung im Folgd dokumentiert ist...
Userbild
Grüße an die Nachwelt!
Luc\ius :-?
xxlFkt RoundA ist Bestandteil des AddIns FXsubset
Die RMeth 4 u. 5 sind noch nicht optimal; wdn in nächster Vs verbessert!
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Zufallszahlen mit Nachkommastellen in Excel generieren


Schritt-für-Schritt-Anleitung

Um Zufallszahlen mit Nachkommastellen in Excel zu generieren, kannst du die folgende VBA-Methode verwenden. Diese Methode ermöglicht es dir, Zufallszahlen innerhalb eines bestimmten Bereichs zu erzeugen, ohne dass die Zahlen bei jeder Neuberechnung der Tabelle migriert werden.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.

  3. Füge den folgenden Code in das Modul ein:

    Sub zufall()
        ' Zufallszahl zwischen 0 und 100 mit 2 Nachkommastellen
        Cells(1, 1) = WorksheetFunction.Round(Rnd() * 100, 2)
    End Sub
  4. Schließe den VBA-Editor und kehre zu deinem Excel-Dokument zurück.

  5. Drücke ALT + F8, wähle zufall und klicke auf Ausführen, um die Zufallszahl in Zelle A1 zu generieren.

Mit dieser Methode kannst du eine excel zufallszahl mit 2 nachkommastellen erzeugen, die du für verschiedene Anwendungen in deiner Tabelle nutzen kannst.


Häufige Fehler und Lösungen

Problem: Die Zufallszahl ändert sich, wenn die Tabelle neu berechnet wird.
Lösung: Um dies zu vermeiden, kannst du die Neuberechnung in Excel deaktivieren. Gehe zu Formeln > Berechnungsoptionen und wähle Manuell.

Problem: Die Zufallszahl wird nicht korrekt gerundet.
Lösung: Stelle sicher, dass du die WorksheetFunction.Round oder Application.Round verwendest, um die Zahl auf die gewünschte Anzahl von Nachkommastellen zu runden.


Alternative Methoden

Neben der Verwendung von VBA kannst du auch die integrierten Excel-Funktionen verwenden:

  1. Zufallszahl zwischen 0 und 1:

    =RAND()

    Um die Zufallszahl auf zwei Dezimalstellen zu beschränken, kannst du die Formel so anpassen:

    =ROUND(RAND(), 2)
  2. Zufallszahl in einem bestimmten Bereich: Wenn du eine Zufallszahl innerhalb eines bestimmten Bereichs mit Nachkommastellen erzeugen möchtest, verwende:

    =ROUND(RANDBETWEEN(1, 100) + RAND(), 2)

Diese Methoden sind nützlich, um einen excel zufallsbereich mit nachkommastellen zu erstellen.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du Zufallszahlen in Excel verwenden kannst:

  • Zufallszahlen für Übungszwecke: Erstelle eine Liste von zufälligen Zahlen für Matheübungen. Verwende die VBA-Methode oder die RAND()-Funktion.

  • Zufallszahlen in Berichten: Generiere zufällige Verkaufszahlen für Forecast-Analysen, indem du die RANDBETWEEN()-Funktion nutzt.

  • Zufallszahlen für Spiele: Verwende Zufallszahlen zur Simulation von Würfeln oder anderen Spielmechaniken.


Tipps für Profis

  • Um sicherzustellen, dass du excel zufallsbereich mit kommazahlen effektiv nutzen kannst, experimentiere mit verschiedenen Kombinationen der genannten Funktionen, um die besten Ergebnisse zu erzielen.

  • Wenn du eine excel zufallszahl ohne neuberechnung benötigst, ziehe es in Betracht, die generierten Werte zu kopieren und als Werte einzufügen, um die Zufallszahlen zu fixieren.

  • Überlege dir, die Funktion Randomize am Anfang deines VBA-Codes hinzuzufügen, um sicherzustellen, dass du bei jedem Durchlauf unterschiedliche Zufallszahlen erhältst.


FAQ: Häufige Fragen

1. Wie kann ich die Anzahl der Nachkommastellen ändern?
Du kannst die Anzahl der Nachkommastellen ändern, indem du den zweiten Parameter der Round-Funktion anpasst. Zum Beispiel, um 3 Nachkommastellen zu verwenden, ändere die 2 in der Funktion zu 3.

2. Kann ich die Zufallszahlen in einem bestimmten Bereich festlegen?
Ja, du kannst mit der RANDBETWEEN()-Funktion Zufallszahlen in einem bestimmten Bereich erzeugen, indem du die gewünschten Minimal- und Maximalwerte angibst.

3. Was ist der Unterschied zwischen Rnd() und Rand()?
Rnd() ist eine VBA-Funktion, während Rand() eine Excel-Arbeitsblattfunktion ist. Beide generieren Zufallszahlen, aber Rnd() wird in VBA verwendet und bietet mehr Flexibilität in der Programmierung.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige