Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Neuberechnung Zufallszahlen unterbinden

Neuberechnung Zufallszahlen unterbinden
NoNet
Hallo VBA-Kenner,
hat jemand von euch einen Lösungsvorschlag für dieses Problem :
In einer Tabelle werden in mehreren Zellen (z.B: A5:B14) Zufallszahlen erstellt, z.B. so :
AB
1
2
3
4
5
6
7
8
9
10
11
12
13
14

Funktionen im Tabellenblatt :
Zelle Formel 
A5   =WENN(ZEILE()-ZEILE(A$4)+(SPALTE(A$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 
A6   =WENN(ZEILE()-ZEILE(A$4)+(SPALTE(A$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 
A7   =WENN(ZEILE()-ZEILE(A$4)+(SPALTE(A$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 
A8   =WENN(ZEILE()-ZEILE(A$4)+(SPALTE(A$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 
A9   =WENN(ZEILE()-ZEILE(A$4)+(SPALTE(A$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 
A10   =WENN(ZEILE()-ZEILE(A$4)+(SPALTE(A$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 
A11   =WENN(ZEILE()-ZEILE(A$4)+(SPALTE(A$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 
A12   =WENN(ZEILE()-ZEILE(A$4)+(SPALTE(A$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 
A13   =WENN(ZEILE()-ZEILE(A$4)+(SPALTE(A$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 
A14   =WENN(ZEILE()-ZEILE(A$4)+(SPALTE(A$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 
B5   =WENN(ZEILE()-ZEILE(B$4)+(SPALTE(B$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 
B6   =WENN(ZEILE()-ZEILE(B$4)+(SPALTE(B$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 
B7   =WENN(ZEILE()-ZEILE(B$4)+(SPALTE(B$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 
B8   =WENN(ZEILE()-ZEILE(B$4)+(SPALTE(B$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 
B9   =WENN(ZEILE()-ZEILE(B$4)+(SPALTE(B$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 
B10   =WENN(ZEILE()-ZEILE(B$4)+(SPALTE(B$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 
B11   =WENN(ZEILE()-ZEILE(B$4)+(SPALTE(B$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 
B12   =WENN(ZEILE()-ZEILE(B$4)+(SPALTE(B$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 
B13   =WENN(ZEILE()-ZEILE(B$4)+(SPALTE(B$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 
B14   =WENN(ZEILE()-ZEILE(B$4)+(SPALTE(B$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 

Im Klassenmodul des Tabellenblattes werden die WERTE per Ereignismakro nach "Tabelle2" übertragen.
Damit beim Übertragen die Zufallszahlen nicht neu berechnet werden, wird der Berechnungsmodus temporär auf "manuell" umgestellt, am Ende wieder auf den zuvor gespeicherten Modus (standardmässig "Automatisch").
Leider werden aber genau bei DIESER Statusänderung (auf "automatisch") die Zufallswerte wieder neu berechnet :-( so dass sie nun nicht mehr mit den soeben übertragenen Werten übereinstimmen.
Private Sub Worksheet_Calculate()
Dim intCalc As Integer
Application.EnableEvents = False
intCalc = Application.Calculation
Application.Calculation = xlCalculationManual
Sheets("Tabelle2").[A5:B14].Value = [A5:B14].Value
Application.Calculation = intCalc 'Hier werden die Zufallszahlen neu berechnet
Application.EnableEvents = True
End Sub
Kennt jemand eine Möglichkeit, die Neuberechnung bei Statusänderung zu unterbinden ?
Das gleiche passiert auch wenn man per "Extras - Optionen - Berechung" die automatische Berechnung aktiviert, daher vermute ich, das lässt sich nicht umgehen !?!!? Die Neuberechnung sollte allerdings erst wieder bei Eingabe eines Wertes in die Tabelle oder eben per Taste F9 ausgelöst werden. Ein Ereignismakro (Worksheet_Change() etc. möchte ich dazu jedoch nicht verwenden).
Vielleicht hat von euch ja doch noch jemand eine gute Idee diesbezüglich ?
Danke, Gruß NoNet
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
keine 100% Lösung...
14.12.2009 18:29:35
Tino
Hallo,
Du kannst mal versuchen in der Tabelle mit der Zufallszahl die Berechnung auf manuell zu stellen.
Userbild
Allerdings werden andere Formeln auf dieser Tabelle auch nicht mehr berechnet.
Diese Einstellung steht beim erneuten öffnen der Datei wieder auf True.
Gruß Tino
Anzeige
Sonst geht wohl nur noch Setzen der...
14.12.2009 19:08:44
Luc:-?
...Zufallszahlen oder der Fmln dafür (mit anschl Ersetzen durch Werte) per VBA beim Mappe-Öffnen, NoNet,
aber das weißt du ja wohl... ;-)
Gruß Luc :-?
habe mal rumgespielt
14.12.2009 22:18:07
Tino
Hallo,
habe hier mal was zusammengebastelt mit einer Hilfstabelle, neu berechnen kannst Du mit F9.
https://www.herber.de/bbs/user/66595.xls
Gruß Tino
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Neuberechnung von Zufallszahlen in Excel unterbinden


Schritt-für-Schritt-Anleitung

Um die Neuberechnung von Zufallszahlen in Excel zu unterbinden, kannst du den Berechnungsmodus temporär auf "manuell" umstellen. Folge diesen Schritten:

  1. Öffne das VBA-Editor-Fenster:

    • Drücke ALT + F11.
  2. Füge ein neues Modul hinzu:

    • Rechtsklicke auf "DieseArbeitsmappe" und wähle "Einfügen" > "Modul".
  3. Füge den folgenden Code ein:

    Private Sub Worksheet_Calculate()
       Dim intCalc As Integer
       Application.EnableEvents = False
       intCalc = Application.Calculation
       Application.Calculation = xlCalculationManual
       Sheets("Tabelle2").[A5:B14].Value = [A5:B14].Value
       Application.Calculation = intCalc 'Hier werden die Zufallszahlen neu berechnet
       Application.EnableEvents = True
    End Sub
  4. Schließe den VBA-Editor und speichere deine Datei.

  5. Teste die Funktion:

    • Übertrage die Werte in "Tabelle2", ohne dass die Zufallszahlen sich neu berechnen.

Häufige Fehler und Lösungen

  • Problem: Zufallszahlen werden trotzdem neu berechnet.

    • Lösung: Stelle sicher, dass der Berechnungsmodus vor dem Übertragen auf "manuell" gesetzt wird. Überprüfe, ob der Code korrekt eingefügt wurde und keine Fehler enthält.
  • Problem: Andere Formeln werden nicht mehr berechnet.

    • Lösung: Wenn du den Berechnungsmodus auf manuell setzt, kann das andere Berechnungen beeinträchtigen. Überlege, ob du den Modus nach dem Übertragen wieder auf "automatisch" umstellst.

Alternative Methoden

Wenn du die Neuberechnung von Zufallszahlen in Excel vermeiden möchtest, kannst du auch den folgenden Ansatz nutzen:

  • Zufallszahlen als Werte speichern:
    • Wähle die Zellen mit den Zufallszahlen aus.
    • Kopiere die Auswahl (STRG + C).
    • Rechtsklicke auf die Zielzelle und wähle "Inhalte einfügen" > "Werte".
    • Dadurch werden die Zufallszahlen als feste Werte eingefügt, und die Neuberechnung ist nicht mehr erforderlich.

Praktische Beispiele

Wenn du eine zufällige vierstellige Zahl generieren möchtest und sicherstellen willst, dass sie nicht neu berechnet wird, kannst du folgende Formel verwenden:

=RANDBETWEEN(1000, 9999)

Um sicherzustellen, dass diese Zahl nicht neu berechnet wird, kopiere die Zelle und füge sie als Wert wieder ein, wie im vorherigen Abschnitt beschrieben.


Tipps für Profis

  • Verwende VBA, um komplexere Anforderungen zu erfüllen: Wenn du oft mit Zufallszahlen arbeitest, erstelle ein Makro, das automatisch Zufallszahlen generiert und sie als Werte speichert.

  • Nutze die Funktion RAND(): Diese Funktion kann auch nützlich sein, wenn du Zufallszahlen innerhalb eines bestimmten Bereichs generieren möchtest, achte jedoch darauf, dass sie mit jeder Berechnung neu generiert wird.

  • Zufallsbereich mit Dezimalstellen: Verwende RANDBETWEEN() in Kombination mit einer Anpassung, um Dezimalstellen zu erzielen:

    =RANDBETWEEN(1, 10) + RAND()

FAQ: Häufige Fragen

1. Wie kann ich die Zufallszahlen aktualisieren, ohne die bestehenden Werte zu verlieren?
Du kannst die Zufallszahlen manuell aktualisieren, indem du die Berechnung auf "manuell" stellst und nur dann auf "automatisch" zurückstellst, wenn du die Werte übertragen hast.

2. Kann ich Zufallszahlen in einem bestimmten Bereich mit Dezimalstellen generieren?
Ja, indem du die RANDBETWEEN()-Funktion mit RAND() kombinierst, kannst du Zufallszahlen mit Dezimalstellen erzeugen.

3. Gibt es eine Möglichkeit, die Zufallszahlen ohne Neuberechnung zu speichern?
Ja, kopiere die Zellen mit Zufallszahlen und füge sie als Werte wieder ein. So bleiben sie fixiert und werden nicht mehr aktualisiert.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige