Hinweis: Diese Antwort war nur für die alten Google Spreadsheets gültig. Derzeit nicht-deterministische Funktionen wie NOW()
werden nicht als Argument von benutzerdefinierten Funktionen erlaubt . Der Versuch , do zu so Ergebnisse in der Fehlermeldung „Diese Funktion ist nicht erlaubt , eine Zelle mit verweisen NOW()
, RAND()
oder RANDBETWEEN()
“ .
Funktionen in Google Apps Script sollen deterministisch sein. Da Ihre benutzerdefinierte Funktion keine Parameter hat, gibt sie jedes Mal das gleiche Ergebnis zurück.
Siehe Problem 2573: Math.random () wird nicht als benutzerdefinierte Tabellenkalkulationsformel neu berechnet
Um jedes Mal eine neue Zufallszahl zu erstellen, sollte der aktuelle Zeitstempel als Parameter übergeben werden:
=f(now())
Diese Funktion scheint jedoch niemals zurückzukehren. Ich vermute, das liegt daran, dass sich der Rückgabewert von NOW()
jede Millisekunde ändert und die Berechnung mehr als eine Millisekunde dauert.
Sie müssten sich also mit etwas zufrieden geben, das nicht so oft aktualisiert werden muss, wie z
=f(day(now()))
Dies würde jeden Tag des Monats einen neuen Zufallswert zurückgeben.
Wenn Sie diese Formel in mehr als einer Zelle verwenden, wird für alle Zellen der gleiche Zufallswert zurückgegeben. Um dies zu vermeiden, können Sie auch die aktuellen Zellkoordinaten als Parameter übergeben:
=f(day(now()), 2, 4)
Ich habe eine Beispieltabelle erstellt und kann sie mir gerne ansehen.
Anstatt neue Parameter einzuführen, haben Sie möglicherweise Glück , wenn Sie versuchen, die Einstellung unter Datei → Tabelleneinstellungen → Neuberechnung auf Bei Änderung und jede Minute zu ändern . Zumindest sollte dies funktionieren RAND()
, siehe Dokumentation . Derzeit wird mir eine Fehlermeldung angezeigt, sodass ich nicht sehen kann, ob dies funktioniert.