Berechnen Sie ein static random number (berechnen Sie es einmal) in Excel
Ich bin auf der Suche nach einem Weg, um zu berechnen, wird eine zufällige Zahl einmal in Excel. Also der berechnete das erste mal, die genannt werden, aber dann ist es auch nicht ändern im Nachhinein.
So zum Beispiel, wenn ich sowas hatte in B1 RANDONCE(A1)
dann das erste mal, dass ich einen Wert in A1 würde es berechnen einen zufälligen Wert, aber dann würde es nicht wieder ändern. Oder zumindest nicht, bis I geändert A1 wieder.
Ich möchte dies tun, ohne manuell Kopierens B1, um es wiederum aus einer Formel in einen Wert wie beschrieben hier. Verwendung von Makros ist in Ordnung.
- Wie lange dauert die Wert brauchen, um zu bleiben "fest"? Nur über eine session oder nach dem speichern, etc?
- Wenn Sie glücklich sein würden, mit einem Wert, der nicht wirklich "zufällig", nur undurchsichtig, Sie könnte etwas im Zusammenhang von stackoverflow.com/questions/3498356/md5-hash-function-in-excel zum berechnen der hash-Wert in
A1
. - Klingt wie Sie wollen ein Ereignis. Ich fügte hinzu, eine Antwort weiter unten. Beachten Sie, dass Sie zuordnen können B1 ist es Wert (aus einer Formel) in einem Schritt in VBA, so dass Sie nicht brauchen, um es zu tun, wie Sie geschrieben in dieser Verknüpfung, die Sie Hinzugefügt.
- zu halten, Wie die Zufallszahlen ändern in Excel
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie einen UDF mit memory, so dass es weiß wird, wenn die Zelle geändert hat
Diese UDF gibt einen neuen zufälligen Wert zurück, wenn das angegebene zu nennen ändert, sonst gibt die Letzte zufälligen Wert (dh keine änderung)
Auch wieder leer, wenn die Quelle Zelle leer ist (kann oder kann nicht sein, was Sie benötigen?)
Hinweis: es hat das problem, dass die
Static
Werte sind verloren, wenn das Fenster geschlossen wird, so wird der Wert jedes mal ändern, wenn das Blatt geöffnet wird.Function RandOnce(Low As Long, High As Long, r As Range) As Long
Ändernv = Rnd
v = Int(Rnd * (High + 1 - Low)) + Low
und add 'Zufällig' nach den Deklarationen stellen Sie sicher, dass die RNG wird zurückgesetzt.Ich glaube ich habe ein viel einfacher Weg, dies zu tun. Komplette Tabellenblatt, dann gelten die =RANDBETWEEN Funktion für die Spalte von zahlen. Dann tun Sie dies:
Nun haben Sie die Werte, die zuletzt erstellt, und Sie sind statisch.
Können Sie erstellen einer UDF (User-Defined Function):
In der Zelle, wo Sie wollen das Ergebnis, können Sie setzen:
Den Wert, der geändert wird (eigentlich wird neu berechnet) nur, wenn die Quell-value-änderungen (aka
A1
).Können Sie auch zirkuläre Referenzen zu machen, rein Formel-driven "toggle-Schalter", so dass der Benutzer zu berechnen, die eine Reihe von zufälligen zahlen und dann schalten Sie weitere Neuberechnungen. Schalten Sie Zirkelbezug Warnungen, und setzen Sie dann diese Formel in Zelle B3:
Wenn Zelle B1 enthält "JA", B3 erzeugt eine neue Zufallszahl, die mit jeder Tabellenkalkulation Neuberechnung; wenn B1 enthält einen beliebigen anderen Wert, wird der aktuelle Wert von B3 beibehalten werden.
Dies ist offensichtlich nicht die beste Lösung, wenn Sie haben zu verfolgen, viele Zellen, aber wenn es nur A1 benötigen Sie für die änderungen nachverfolgt werden, können Sie mit einem Ereignis zu tun, Ihre Funktion in B1, dann am Ende, weisen Sie ihm den Wert, den es gegeben wurde. Ich finde dies die einfachste Lösung und es funktioniert, wie Sie benötigen, um.
Beispiel:
Intersect
um Sie lesbarer zu machen. Doch, ich finde diese Lösung ganz toll, da es offensichtlich nicht ändern Sie den Wert (wenn Voll umrechnen oder so, siehe die Debatte mit Chris unten meine Antwort) bisA1
ändern würde (also ich denke, das desserves ein +1 :))