คำตอบอื่น ๆ ให้ความสำคัญกับกลไกของการคำนวณใหม่และบทบาทของฟังก์ชั่นการระเหย แต่ฉันคิดว่านั่นเป็นส่วนหนึ่งของคำถาม มันอยู่ที่กฎที่ได้รับการว่าจ้าง แต่ไม่มาก "ทำไม" ฉันจะมุ่งเน้นที่
แนวคิดการออกแบบ
ให้ฉันเริ่มต้นด้วยแนวคิดการออกแบบและหน่วยการสร้างของสเปรดชีตที่ทันสมัยที่สุด มี "การแบ่งความรับผิดชอบ" ฟังก์ชั่นเป็นงานประจำที่ทำหน้าที่เฉพาะและทำทุกครั้งที่ถาม นอกเหนือจากนั้นแอปพลิเคชันสเปรดชีตจะควบคุมเมื่อมีการถาม
ฟังก์ชั่นตัวเองไม่มีตรรกะใด ๆ เพื่อเลือกที่จะคำนวณใหม่หรือไม่คำนวณใหม่ ลักษณะของฟังก์ชั่น Excel ทั้งหมดคือการดำเนินการบางประเภทเมื่อใดก็ตามที่ถูกเรียกให้ทำเช่นนั้น ไม่มีฟังก์ชั่นที่มี "หน่วยความจำ" ของตัวเองของมูลค่าปัจจุบันของมันหรือประวัติศาสตร์ของการคำนวณที่ผ่านมา ไม่มีทางที่จะรู้ได้ว่านี่เป็นครั้งแรกที่ถูกขอให้ทำงานหรือไม่ ดังนั้นไม่มีฟังก์ชั่นดั้งเดิมที่มีความสามารถในการทำงานเพียงครั้งเดียว หากฟังก์ชั่นใด ๆ ถูกคำนวณใหม่มันจะทำสิ่งที่ออกแบบมาเพื่อทำและสร้างมูลค่าใหม่
แอปพลิเคชันสเปรดชีตมีข้อมูลบางอย่างที่ช่วยให้ประหยัดเวลาโดยข้ามการคำนวณซ้ำที่ไม่จำเป็น (ดังอธิบายในคำตอบของ teylyn) การคำนวณซ้ำครั้งเดียวเท่านั้นคือหากแอปพลิเคชันทราบว่าค่าของฟังก์ชันไม่ได้รับผลกระทบจากการเปลี่ยนแปลงสเปรดชีตที่ทำให้เกิดความต้องการในการคำนวณใหม่
แล้วถ้าคุณต้องการให้ฟังก์ชั่นทำงานหนึ่งครั้งแล้วเก็บค่ามันไว้ ยกตัวอย่างของคุณในการสร้างตัวเลขสุ่มแล้วมีผลไม่เปลี่ยนแปลง ซึ่งอธิบายการสร้างค่าคงที่ที่สร้างแบบสุ่มและคุณสามารถทำได้ด้วย Excel
Excel ไม่รู้ว่าคุณต้องการใช้ความสามารถของมันอย่างไร ไม่ว่าคุณต้องการที่จะผลิตค่าใหม่หรือรักษาชุดสุดท้าย แต่ละตัวเลือกเป็นกรณีการใช้งานที่ Excel รองรับ Excel รองรับทั้งสองกรณีโดยให้เครื่องมือในการคำนวณค่าใหม่และเครื่องมือในการรักษาค่าเก่า คุณสามารถสร้างสิ่งที่คุณต้องการ แต่ผู้ใช้มีหน้าที่รับผิดชอบในการทำให้สิ่งที่พวกเขาต้องการ
ฟังก์ชันลอจิก
ดังนั้นให้ดูที่ตรรกะสำหรับสิ่งที่ฟังก์ชั่นทำ มันอาจจะเหมาะสมสำหรับตรรกะการคำนวณใหม่เพื่อข้ามฟังก์ชั่นการสุ่มเพราะค่าของมันไม่ควรได้รับผลกระทบจากการเปลี่ยนแปลงอื่น ๆ ในสเปรดชีต?
การที่ค่าของฟังก์ชันจะเปลี่ยนไปตามการคำนวณใหม่หรือไม่นั้นขึ้นอยู่กับวัตถุประสงค์ของฟังก์ชันนั้น ๆ การคำนวณค่าคงที่จะให้ผลลัพธ์ที่เหมือนกันเสมอ การดำเนินการตามค่าเซลล์ที่ไม่เปลี่ยนแปลงจะให้ผลลัพธ์เดียวกัน
อย่างไรก็ตามฟังก์ชั่นบางอย่างได้รับการออกแบบด้วยความตั้งใจและวัตถุประสงค์ในการสร้างผลลัพธ์ที่แตกต่างกันทุกครั้ง ตัวอย่างเช่นลองพิจารณาฟังก์ชั่นตามเวลาปัจจุบัน พวกเขาจะสร้างผลลัพธ์ใหม่ตามเวลาในการคำนวณใหม่ คุณไม่สามารถใช้ฟังก์ชันที่มีวัตถุประสงค์เพื่อสร้างมูลค่าตามเวลาปัจจุบันและไม่มีการปรับปรุงเมื่อคำนวณใหม่
วัตถุประสงค์การควบคุมการคำนวณใหม่คือการทำให้ทุกอย่างสะท้อนสถานะปัจจุบันของสิ่งต่าง ๆ เสมอเมื่อมีการเรียกใช้การคำนวณใหม่ เกณฑ์ดังกล่าวจะไม่ถูกต้องหากฟังก์ชั่นตามเวลาปัจจุบันไม่ได้รับการอัพเดต
ฟังก์ชั่น "สุ่ม" เช่น RANDBETWEEN มีจุดประสงค์ในการสร้างหมายเลขสุ่มใหม่เมื่อคำนวณใหม่ นั่นคือสิ่งที่พวกเขาตั้งใจจะทำ คุณสามารถยืนยันว่าการคำนวณซ้ำอาจข้ามได้เนื่องจากค่าไม่ควรได้รับผลกระทบจากสิ่งอื่น ๆ ที่เกิดขึ้นในสเปรดชีต
หากนั่นเป็นพฤติกรรมเริ่มต้นคุณจะอัปเดตสเปรดชีต แต่ค่าสุ่มจะคงที่ นั่นไม่ใช่พฤติกรรมที่สุ่มมาก ที่จะรองรับกรณีการใช้งานอย่างใดอย่างหนึ่ง แต่ไม่ได้อื่น ๆ กลับไปสู่แนวคิดการออกแบบขั้นพื้นฐานมันถูกจัดการเหมือนกับฟังก์ชั่นอื่น พฤติกรรมเริ่มต้นคือการให้ Excel คำนวณใหม่ หากคุณต้องการรักษาค่าก่อนหน้านี้สำหรับกรณีการใช้งานของคุณขึ้นอยู่กับคุณที่จะทำเช่นนั้นด้วยเครื่องมือที่มีอยู่