Diğer cevaplar, yeniden hesaplamanın mekaniği ve uçucu fonksiyonların rolü üzerine odaklanmaktadır, ancak bence sorunun özünün bir kısmını kaçırıyor. Kullanılan kurallara hitap eder, ancak “neden” i pek değil. Buna odaklanacağım.
Tasarım Konsepti
Bir tasarım konsepti ve en modern elektronik tabloların yapı taşları ile başlayayım. Bir "sorumluluk bölümü" var. İşlevler, belirli bir görevi gerçekleştiren ve her istendiğinde gerçekleştiren özel yordamlardır. Bundan ayrı olarak, e-tablo uygulaması istendiğinde kontrol eder.
İşlevlerin kendileri, yeniden hesaplamayı veya yeniden hesaplamayı seçecek herhangi bir mantık içermez. Tüm Excel işlevlerinin doğası, her tetiklendiğinde bir tür işlem gerçekleştirmektir. Hiçbir işlevin geçerli değerinin kendi "belleği" veya geçmiş hesaplamalarının geçmişi yoktur. İlk kez iş yapmasının istenip istenmediğini bilmenin bir yolu yoktur. Bu nedenle, hiçbir yerel işlev yalnızca bir kez çalışma yeteneğine sahip değildir. Herhangi bir işlev yeniden hesaplanırsa, yapmak için tasarladığı şeyi yapacak ve yeni bir değer üretecektir.
Elektronik tablo uygulaması, gereksiz hesaplamaları atlayarak zamandan tasarruf etmesini sağlayan bazı istihbarat içerir (teylyn'in cevabında açıklandığı gibi). Yeniden hesaplamanın atlandığı tek zaman, uygulamanın işlevin değerinin, yeniden hesaplama gereksinimini tetikleyen elektronik tablo değişikliklerinden etkilenmediğini bilmesi.
Peki ya bir fonksiyonun bir kez çalıştırılması ve sonra değerini koruması gerekiyorsa? Rastgele bir sayı üretme ve ardından sonucu değiştirmeme örneğinizi alın. Bu, rastgele oluşturulmuş sabitler oluşturmayı açıklar ve bunu Excel ile yapabilirsiniz.
Excel yeteneklerini nasıl kullanmak istediğinizi bilemez; yeni değerler üretmeye devam etmek ya da son seti korumak isteyip istemediğiniz. Her seçenek, Excel'in desteklediği bir kullanım durumudur. Excel, her iki durumu da size yeni değerleri hesaplamak için araçlar ve eski değerleri korumak için araçlar sağlayarak sağlar. Ne istersen inşa edebilirsin. Ancak kullanıcının istediği şeyi yapmasını sağlama sorumluluğu vardır.
İşlev Mantığı
Şimdi işlevin ne yaptığının mantığına bakalım. Yeniden hesaplama mantığının rastgele bir işlevi atlaması mantıklı olabilir mi çünkü değeri elektronik tablodaki diğer değişikliklerden etkilenmemelidir?
Bir işlevin değerinin yeniden hesaplama üzerinde değişip değişmeyeceği, amacına ve neye dayandığına bağlıdır. Sabit değerler üzerinde bir hesaplama her zaman aynı sonucu verecektir. Değişmeyen hücre değerlerine dayalı bir işlem aynı sonucu verir.
Bununla birlikte, bazı işlevler her seferinde farklı bir sonuç üretme amacı ve amacı ile tasarlanmıştır. Örneğin, geçerli saate bağlı işlevleri düşünün. Yeniden hesaplama süresine bağlı olarak yeni bir sonuç üreteceklerdir. Amacı, şimdiki zamana göre bir değer üretmek ve yeniden hesaplandığında güncellenmemesi olan bir fonksiyonunuz olamaz.
Yeniden hesaplama kontrol hedefi, her zaman yeniden hesaplama tetiklendiğinde her şeyin mevcut durumu yansıtmasını sağlamaktır. Halihazırdaki zamana dayalı fonksiyonlar güncellenmezse bu kriter karşılanmaz.
RANDBETWEEN gibi "rasgele" işlevler, yeniden hesaplandığında yeni bir rasgele sayı üretme amacına sahiptir. Yapmaları amaçlanan budur. Yeniden hesaplamanın atlanabileceğini iddia edebilirsiniz, çünkü değer elektronik tabloda gerçekleşen diğer şeylerden etkilenmemelidir.
Varsayılan davranış buysa, e-tabloyu güncelliyorsunuz, ancak rastgele değer sabit kalıyordu. Bu çok rastgele bir davranış değil. Bu bir kullanım durumunu destekleyecek, diğerini desteklemeyecektir. Temel tasarım konseptine geri dönersek, diğer işlevler gibi ele alınır. Varsayılan davranış, Excel'in yeniden hesaplamasını sağlamaktır. Kullanım durumunuz için önceki değeri korumak istiyorsanız, bunu mevcut araçlarla yapmak size kalmıştır.