他の答えは再計算のメカニズムと揮発性関数の役割に焦点を当てていますが、私はそれが問題の要旨の一部を見逃していると思います。これは、採用されているルールに対応していますが、「理由」にはあまり対応していません。それに焦点を当てます。
デザインのコンセプト
デザインコンセプトと最新のスプレッドシートの構成要素から始めましょう。「責任の分割」があります。関数は、特定のタスクを実行する専用のルーチンであり、要求されるたびに実行します。それとは別に、スプレッドシートアプリケーションは、尋ねられたときに制御します。
関数自体には、再計算するかどうかを選択するロジックは含まれていません。すべてのExcel関数の性質は、トリガーされるたびに何らかのタイプの操作を実行することです。関数には、現在の値の独自の「メモリ」や過去の計算の履歴はありません。仕事をするように頼まれているのはこれが初めてかどうかを知る方法はありません。したがって、ネイティブ関数には一度だけ実行する機能はありません。いずれかの関数が再計算された場合、その関数は設計どおりに機能し、新しい値を生成します。
スプレッドシートアプリケーションには、不必要な再計算をスキップして時間を節約できるインテリジェンスが含まれています(teylynの回答で説明されています)。唯一のアプリケーションは、関数の値を再計算物事への必要性をトリガし、スプレッドシートの変更によって影響を受けなかったことを知っている場合に再計算がスキップされている時間があります。
では、関数を一度実行してからその値を保持する必要がある場合はどうでしょうか?乱数を生成し、その結果が変わらないという例を考えてみましょう。ランダムに生成された定数の作成について説明しますが、Excelでそれを行うことができます。
Excelは、その機能をどのように使用したいかを知ることができません。新しい値の生成を続けるか、最後のセットを保持するか。各オプションは、Excelがサポートするユースケースです。Excelは、新しい値を計算するツールと古い値を保持するツールを提供することで、両方のケースに対応しています。好きなものを構築できます。しかし、ユーザーには、ユーザーが望むことをさせる責任があります。
関数ロジック
そのため、関数が実行するロジックを見てみましょう。スプレッドシート内の他の変更によって値が影響を受けることはないため、再計算ロジックがランダム関数をスキップすることは理にかなっていますか?
再計算時に関数の値が変化するかどうかは、その目的とその根拠に依存します。定数値の計算では、常に同じ結果が生成されます。変更されていないセル値に基づく操作でも同じ結果が得られます。
ただし、一部の機能は、毎回異なる結果を生成するという意図と目的を持って設計されています。たとえば、現在の時刻に基づいた関数を考えてみましょう。再計算の時間に基づいて、新しい結果が生成されます。現在の時刻に基づいて値を生成し、再計算時に値を更新しないことを目的とする関数を使用することはできません。
再計算制御の目的は、再計算がトリガーされたときに、すべてが常に物事の現在の状態を反映するようにすることです。現在の時刻に基づく関数が更新されない場合、その基準は満たされません。
RANDBETWEENのような「ランダム」関数には、再計算時に新しい乱数を生成する目的があります。それが彼らのやることです。値はスプレッドシートで発生している他の事象の影響を受けないため、再計算をスキップできると主張できます。
これがデフォルトの動作である場合、スプレッドシートを更新しますが、ランダムな値は一定のままです。それは非常にランダムな動作ではありません。これは、1つのユースケースをサポートしますが、他のユースケースはサポートしません。基本的な設計コンセプトに戻ると、他の機能と同様に処理されます。デフォルトの動作では、Excelで再計算されます。ユースケースの以前の値を保持する場合は、使用可能なツールを使用してそれを行うかどうかはユーザー次第です。