注:この回答は古いGoogleスプレッドシートでのみ有効でした。現在、などの非決定的関数NOW()
は、カスタム関数の引数として使用できません。エラーメッセージの結果は、「この機能はしてセルを参照するために許可されていないように、DOをしようとNOW()
、RAND()
あるいはRANDBETWEEN()
」。
Google Apps Scriptの関数は確定的であると想定されています。カスタム関数にはパラメーターがないため、毎回同じ結果を返します。問題2573を
参照:Math.random()がカスタムスプレッドシートの数式として再計算されない
毎回新しい乱数を生成するには、現在のタイムスタンプをパラメーターとして渡すことが機能すると考えられます。
=f(now())
ただし、この関数は戻らないようです。これは、NOW()
ミリ秒ごとに戻り値が変化し、計算に1ミリ秒以上かかるためだと思います。
したがって、頻繁に更新する必要のないものについては、次のように解決する必要があります。
=f(day(now()))
これにより、毎月新しいランダムな値が返されます。
この数式を複数のセルで使用すると、すべてのセルに同じランダム値が返されることに注意してください。これを回避するには、現在のセル座標をパラメーターとして渡すこともできます。
=f(day(now()), 2, 4)
スプレッドシートの例を設定しました。自由に見てください。
代わりに新しいパラメータをintroductingの、あなたがかもしれない運で設定を変更しようとしている必要があり、ファイル→再計算→スプレッドシートの設定をオンに変更し、毎分。少なくともこれは動作するはずです。ドキュメントをRAND()
参照してください。現在、これによりエラーメッセージが表示されるため、これが機能するかどうかを確認できません。