これは少し高度なトピックかもしれません。
F9 キーを押すか、シートを再計算すると、Excel は最初にどのセルが変更される可能性があるかを調べようとするため、それらの評価をまったくスキップできます。アルゴリズムは、すべての祖先と祖先の祖先を検索して、それらのいずれかの値が変更されたかどうかを調べます。その場合は、実際の評価に進みます。
少なくとも、パスに「INDIRECT()」式がない限り、そうです。存在する場合、アルゴリズムはこの数式の値が揮発性 (つまり、常に変化する) であると想定し、すべての子孫を評価します。
さらに揮発性の数式があります: RAND、AREAS、CELL、COLUMNS、INDEX、INDIRECT、NOW、OFFSET、ROWS、TODAY。それらのいくつかは明らかに揮発性であるべきです(のようにRAND()
)。
問題: Excel によって揮発性として扱われる特定のセルを、その祖先が変更されない限り、実際には凍結状態に保つ必要があることを Excel に伝える方法はありますか?
この問題を解決する 1 つの方法は、独自のバージョンの Excel 揮発性関数を VBA で記述することです。VBA 関数は揮発性ではないと見なされます。
問題は、VBA 呼び出しのコストが比較的高いことです。もう 1 つは、「車輪の再発明」の必要性です。安価な解決策があることを願っています。