Warum ändern sich Excel-RANDBETWEEN-Nummern für jede Operation im Arbeitsblatt?

14

Ich muss die RANDBETWEEN-Funktion von Microsoft Excel verwenden und mir ist bewusst, dass jedes Mal, wenn Sie irgendwo anders auf dem Arbeitsblatt etwas anderes tun, ein neuer Satz von Zufallszahlen generiert wird. Mir sind auch die Problemumgehungen bekannt, um eine Reihe von Zufallszahlen "einzufrieren", die beispielsweise zum Sortieren von n Listen von Zufallszahlen zwischen a und b generiert wurden. Meine Frage lautet: WARUM ändern sich die generierten Zufallszahlen? Enthält der Algorithmus etwas, das dies erfordert? FWIW, Google Sheets, LibreOffice Calc und Apple Numbers weisen alle dasselbe Verhalten auf.

nowradioguy
quelle
Fragen mit "Warum ...?" sind hier oftmals off-Topic, da wohl nur der Autor eine definitive Antwort geben könnte. Ihre Frage enthält nicht die gewünschte Funktionalität, daher ist es schwierig, Ihnen etwas vorzuschlagen.
Máté Juhász
2
@ MátéJuhász Es scheint, dass die gegebenen Antworten zeigen, dass es nicht schwierig ist ...
Solar Mike
Keine Antwort, aber hier sind einige Workarounds für diejenigen, die eine brauchen: stackoverflow.com/questions/8011032/…
Adam

Antworten:

28

Charles Williams hat eine gute Erklärung, wie Excel die Dinge berechnet und warum.

http://www.decisionmodels.com/calcsecretsi.htm

Wenn eine Arbeitsmappe flüchtige Funktionen enthält (siehe Charles 'Liste, da sich die flüchtige Funktion im Laufe der Jahre mit verschiedenen Excel-Versionen geändert hat), wird im Wesentlichen eine Neuberechnung der gesamten Arbeitsmappe ausgelöst, wenn eine Zelle in der Arbeitsmappe geändert wird (wenn Excel geändert wird) ist auf automatische Berechnung eingestellt). Wenn die Arbeitsmappe keine flüchtigen Funktionen enthält, werden nur die Zellen neu berechnet, die von der letzten Änderung betroffen sind.

Andere hier haben angegeben, dass die automatische Berechnung immer alles in der Arbeitsmappe berechnet, wenn eine Zelle geändert wird, aber das ist falsch. Nur flüchtige Funktionen bewirken die automatische Neuberechnung aller Zellen in der Arbeitsmappe. Ohne flüchtige Funktionen berechnet Excel nur das neu, was neu berechnet werden muss.

Aus diesem Grund raten Leute wie ich, die den Unterschied kennen, dringend dazu, flüchtige Funktionen wie OFFSET () oder INDIRECT () in Arbeitsblattzellen zu vermeiden, da Molke die Arbeitsmappe verlangsamt, indem sie nach jedem Zellwechsel eine vollständige Neuberechnung veranlasst. Das Erlernen der Verwendung von INDEX () anstelle von OFFSET () kann zu dramatischen Geschwindigkeitsverbesserungen führen, da der Index nicht flüchtig ist (weitere Informationen finden Sie in Charles 'Artikel).

Die Berechnungs-Engine von Excel basiert auf der "recalc or die" -Philosophie, die Excel zu Entwicklungszeiten von Konkurrenzprodukten abhebt. Sehen Sie sich diesen Artikel an: https://www.geekwire.com/2015/recalc-or-die-30-years-later-microsoft-excel-1-0-vets-recount-a-project-that-defied-the -Chancen/

Teylyn
quelle
3
Wenn "flüchtige Funktion" richtig definiert ist, sollte es natürlich keinen sichtbaren Unterschied zwischen der Neuberechnung von allem und der Neuberechnung von nur dem geben, was benötigt wird, abgesehen von der Geschwindigkeit.
Hobbs
12

Andere Antworten konzentrieren sich auf die Mechanik der Neuberechnung und die Rolle flüchtiger Funktionen, aber ich denke, dass dies einen Teil des Kerns der Frage verfehlt. Es behandelt die angewandten Regeln, aber nicht so sehr das "Warum". Ich werde mich darauf konzentrieren.

Design Konzept

Lassen Sie mich mit einem Entwurfskonzept und den Bausteinen der meisten modernen Kalkulationstabellen beginnen. Es gibt eine "Aufteilung der Verantwortung". Funktionen sind dedizierte Routinen, die eine bestimmte Aufgabe ausführen und jedes Mal ausführen, wenn sie gefragt werden. Davon abgesehen steuert die Tabellenkalkulationsanwendung, wann sie gefragt werden.

Die Funktionen selbst enthalten keine Logik zur Auswahl der Neuberechnung oder Nicht-Neuberechnung. Die Art aller Excel-Funktionen besteht darin, eine Art von Operation auszuführen, wann immer dies ausgelöst wird. Keine Funktion hat ein eigenes "Gedächtnis" für ihren aktuellen Wert oder eine Historie ihrer vergangenen Berechnungen. Es kann nicht festgestellt werden, ob es das erste Mal ist, dass es gebeten wird, seine Arbeit zu erledigen. Daher kann keine native Funktion nur einmal ausgeführt werden. Wenn eine Funktion neu berechnet wird, wird das getan, wofür sie entwickelt wurde, und es wird ein neuer Wert erzeugt.

Die Tabellenkalkulationsanwendung enthält einige Informationen, mit denen Sie Zeit sparen können, indem Sie unnötige Neuberechnungen überspringen (wie in der Antwort von teylyn beschrieben). Die einzige Zeit, in der die Neuberechnung übersprungen wird, besteht darin, dass die Anwendung weiß, dass der Wert der Funktion durch die Änderungen in der Tabelle, die eine Neuberechnung erforderlich machten, nicht beeinflusst wurde.

Was ist, wenn eine Funktion einmal ausgeführt werden muss, um ihren Wert zu erhalten? Nehmen Sie das Beispiel einer Zufallszahl, bei der sich das Ergebnis nicht ändert. Das beschreibt das Erstellen zufällig generierter Konstanten, und das können Sie mit Excel tun.

Excel kann nicht wissen, wie Sie seine Funktionen verwenden möchten. ob Sie weiterhin neue Werte erzeugen oder den letzten Satz beibehalten möchten. Jede Option ist ein Anwendungsfall, den Excel unterstützt. Excel berücksichtigt beide Fälle, indem es Ihnen die Tools zur Berechnung neuer Werte und die Tools zur Beibehaltung alter Werte zur Verfügung stellt. Sie können bauen, was Sie wollen. Der Benutzer ist jedoch dafür verantwortlich, dass er das tut, was er will.

Funktionslogik

Schauen wir uns also die Logik für die Funktion an. Könnte es für die Neuberechnungslogik sinnvoll sein, eine Zufallsfunktion zu überspringen, da ihr Wert nicht durch andere Änderungen in der Tabelle beeinflusst werden sollte?

Ob sich der Wert einer Funktion bei einer Neuberechnung ändert oder nicht, hängt von ihrem Zweck ab und davon, worauf sie basiert. Eine Berechnung mit konstanten Werten führt immer zum gleichen Ergebnis. Eine Operation, die auf Zellenwerten basiert, die sich nicht geändert haben, führt zu demselben Ergebnis.

Einige Funktionen wurden jedoch mit der Absicht und dem Zweck entwickelt, jedes Mal ein anderes Ergebnis zu erzielen. Betrachten Sie zum Beispiel Funktionen, die auf der aktuellen Zeit basieren. Sie erzeugen ein neues Ergebnis basierend auf der Zeit bei der Neuberechnung. Sie können keine Funktion haben, deren Zweck es ist, einen Wert basierend auf der aktuellen Zeit zu erzeugen und ihn nicht aktualisieren zu lassen, wenn er neu berechnet wird.

Das Ziel der Neuberechnungskontrolle ist es, immer den aktuellen Stand der Dinge wiederzugeben, wenn eine Neuberechnung ausgelöst wird. Dieses Kriterium wäre nicht erfüllt, wenn Funktionen, die auf der aktuellen Zeit basieren, nicht aktualisiert würden.

Die "Zufalls" -Funktionen haben wie RANDBETWEEN den Zweck, bei einer Neuberechnung eine neue Zufallszahl zu erzeugen. Das ist, was sie tun sollen. Sie könnten argumentieren, dass die Neuberechnung übersprungen werden könnte, da der Wert nicht durch andere Ereignisse in der Tabelle beeinflusst werden sollte.

Wenn dies das Standardverhalten wäre, würden Sie die Tabelle aktualisieren, aber der Zufallswert würde konstant bleiben. Das ist kein sehr zufälliges Verhalten. Das würde einen Anwendungsfall unterstützen, den anderen jedoch nicht. Zurück zum grundlegenden Designkonzept, es wird wie jede andere Funktion gehandhabt. Das Standardverhalten besteht darin, Excel neu berechnen zu lassen. Wenn Sie den vorherigen Wert für Ihren Anwendungsfall beibehalten möchten, müssen Sie dies mit den verfügbaren Tools tun.

fixer1234
quelle
Diese gute Erklärung bringt mich zwar näher zu der Antwort, die ich suche, lässt mich aber immer noch nicht überzeugt. Ich versuche 25 Zufallszahlen zwischen 1 und 365 zu generieren. Ich muss dies ZWANZIG MAL tun (ja, es ist eine Simulation des "klassischen" Geburtstagsproblems). Sobald ich einen Satz von 25 Zufallszahlen erzeugt habe, möchte ich, dass sie ihn einfrieren (1), während ich die anderen Sätze von 25 erstelle, und (2) damit ich die 20 Sätze sortieren kann, die ich gerade erzeugt habe. Ich kann dies unter Verwendung von Problemumgehungen tun, die von anderen hier vorgeschlagen wurden, aber dies ist eine ziemliche Anstrengung, um vielen Schülern, die sich mit elementarer Statistik befassen, zu vermitteln.
Nowradioguy
3
@nowradioguy, was ist der Teil, von dem Sie nicht überzeugt sind? Excel funktioniert auf eine bestimmte Art und Weise und wir bleiben bei seinen Fähigkeiten und seinem Design hängen. Für Ihre Anforderungen ist es ziemlich einfach, die Ergebnisse beizubehalten. Sie müssen dies nur einige Male tun. Wenn sich die Zahlen in einer Spalte befinden, wählen Sie den Satz von 25 in einem einzigen Schritt aus und kopieren Sie ihn. Fügen Sie dann spezielle Werte in eine Zelle an einer anderen Stelle ein. Das ist nur ein paar Klicks, wahrscheinlich der schnellste Weg, dies zu tun. Die Einfügung wird wahrscheinlich einen erneuten Berechnungsvorgang auslösen, sodass Sie zur Wiederholung bereit sind. Sie können 20 Sätze in ein paar Minuten machen. Dann viel Spaß damit. :-)
fixer1234
2

Bei jeder Änderung im Arbeitsblatt wird eine automatische Neuberechnung aller Formeln gestartet. Dies ist das Standardverhalten.

Sie können ihn deaktivieren oder den tatsächlichen Wert einfrieren, indem Sie ihn in einen reinen Wert konvertieren (das Gegenteil einer Formel).

MarianD
quelle
1
Ich verstehe das, aber würden Sie zufällig wissen, WARUM? Es ist nicht ersichtlich, warum eine in einer bestimmten Zelle erzeugte Zufallszahl von einer Operation betroffen ist, die an einer anderen Stelle in diesem Arbeitsblatt ausgeführt wird.
Nowradioguy
3
Wie würde Excel im Voraus wissen, ob Sie einen Zufallswert "für das Leben" möchten oder ob Sie ihn häufig ändern möchten? Der zweite Fall ist der wahrscheinlichere (wie im umgekehrten Fall können Sie den Zufallswert direkt in die Zelle eingeben).
MarianD
Ihre Aussage ist falsch. Die automatische Neuberechnung führt NICHT zur Neuberechnung aller Formeln. Nur wenn die Arbeitsmappe flüchtige Funktionen hat.
Teylyn
1

Es wird als "flüchtige" Formel eingestuft und ist daher Teil der Liste der Funktionen, die neu berechnet werden, wenn eine Änderung festgestellt oder eine neue Funktion eingegeben wird.

Eine weitere Option, die Sie in Betracht ziehen sollten, ist die Umstellung des Arbeitsblatts auf manuelle Berechnung, damit Sie steuern können, wann dies geschieht. Denken Sie jedoch daran, eine Neuberechnung durchzuführen, da Änderungen an Werten oder Formeln keine Neuberechnung verursachen.

Solar Mike
quelle
Ich habe versucht, "flüchtige Formel" zu googeln, und es tauchen eine Reihe von Links auf, die erklären, was auf der Liste der "flüchtigen" Formeln steht, aber nirgends kann ich eine Erklärung finden, warum RANDBETWEEN eine flüchtige Formel ist - oder sein muss .
Nowradioguy
1
Man würde annehmen, weil es "zufällig" ist, so dass es logisch ist, dass es jedes Mal neu berechnet wird ... Wie bereits erwähnt, haben Sie zwei verschiedene Methoden, wenn Sie möchten, dass Ihre Zufallszahl festgelegt wird - was bedeutet, dass sie sich nicht mehr ändert. Einige gute Infos hier: decisionmodels.com/calcsecretsi.htm
Solar Mike
Ja Dankeschön; Das war eines der Ergebnisse meiner Google-Suche, aber es geht nicht direkt auf meine Frage ein. Denken Sie darüber nach: Wenn ich eine unabhängige Operation in einer anderen Zelle durchführe und eine Berechnung erfolgt, werden alle zuvor generierten Zufallszahlen neu generiert und geändert. Macht für mich wenig Sinn.
Nowradioguy
Excel berechnet Zellwerte neu, wenn ein Ereignis diesen Prozess auslöst. Randbetween wird als flüchtig eingestuft (ich habe ein Würfelblatt für meine Tochter erstellt, damit es jedes Mal neu berechnet wird, wenn ich F9 drücke ...), sodass es neu berechnet wird. Siehe auch hier: beatexcel.com/ volatile-functions-excel . Wenn Sie möchten, dass sich eine zuvor zufällige Zahl nicht mehr ändert, gibt es zwei Methoden, um dies zu erreichen.
Solar Mike
@ fixer1234 NICHT ALLES ist flüchtig. Nicht jede Formel wird neu bewertet, wenn sich in einer Tabelle etwas ändert. Das passiert nur, wenn die Arbeitsmappe flüchtige Formeln enthält. Wenn Sie nur Sum () oder Countif () oder etwas Ähnliches haben, werden nur die Zellen neu berechnet, die von einer Änderung betroffen sind, NICHT die gesamte Arbeitsmappe.
Teylyn
0

Trotz der heldenhaften Bemühungen, dieses Feature als ein Feature und nicht als einen Bug erscheinen zu lassen, halte ich es für äußerst unwahrscheinlich, dass dieses Verhalten routinemäßig vorteilhaft ist. "Features" machen unser Leben leichter, "Bugs" machen es schwerer. In meinem Fall führt die Eingabe eines Bezeichners oder einer Erklärung in eine Zelle, auf die keine andere Zelle verweist, zu einer unpraktischen Neuzufälligkeit. Ich würde das einen "Bug" nennen.

Ja, ich kann die Neuberechnung manuell steuern (ein Schmerz) oder Werte einfügen, um dies zu verhindern (wieder ein Schmerz). In welchen Fällen erleichtert die durch Texteingabe in einem entfernten Bereich des Blattes verursachte Randomisierung das Leben?

Selbst wenn hinter der Handhabung von "flüchtigen" Funktionen eine Logik steckt, scheint es trivial einfach zu sein, eine Neuberechnung über geeignete Kriterien auszulösen, außer einfach "Enter" zu drücken, nachdem der Text in nicht zusammenhängenden und nicht referenzierten Zellen eingegeben wurde, oder durch andere völlig nicht zusammenhängende Bearbeitungen. Dies zu verhindern sollte der Standard sein und ich kann mir nicht vorstellen, dass es schwierig sein würde, dies umzusetzen. Wenn jemand dieses "Feature" möchte, kann er es aktivieren, aber ich kann mir nicht vorstellen, wann das eine gute Sache wäre. Bestenfalls könnte es relativ harmlos sein. Für mich ist es ein großer Ärger wegen der Art des Blattes, das ich erstelle.

Schließlich - Mit dem Analyse-Toolpaket können Sie Verteilungen von Zufallszahlen auf verschiedene Arten erstellen, und die so erstellten Zahlenbereiche werden nur dann neu berechnet (neu randomisiert), wenn Sie dazu aufgefordert werden. Daher empfehle ich den Benutzern, das Analyse-ToolPak zu verwenden, wenn es ihren Anforderungen entspricht.

user816299
quelle
Willkommen bei Super User. Die Site ist eine Wissensdatenbank mit Lösungen, daher müssen sich die Antwortbeiträge auf die Antworten konzentrieren, die in der Frage gestellt wurden. Fast Ihr gesamter Beitrag ist in Wirklichkeit eine Parole, eine Meinung und ein Kommentar, was wahrscheinlich Ablehnungen hervorruft, da er im Rahmen der Website nicht produktiv ist. Ihr letzter Absatz könnte vielversprechend sein. Ziehen Sie in Betracht, alles andere zu entfernen, und erweitern Sie den letzten Absatz, um mehr vom "Wie" aufzunehmen, vielleicht ein Beispiel. Für Excel-Neulinge wäre es auch hilfreich zu erwähnen, wie das Toolpaket geladen wird.
Fixer1234