Các câu trả lời khác tập trung vào các cơ chế tính toán lại và vai trò của các hàm dễ bay hơi, nhưng tôi nghĩ rằng đã bỏ lỡ một phần của ý chính của câu hỏi. Nó giải quyết các quy tắc đã được sử dụng nhưng không quá nhiều "tại sao". Tôi sẽ tập trung vào đó.
Khái niệm thiết kế
Hãy để tôi bắt đầu với một khái niệm thiết kế và các khối xây dựng của hầu hết các bảng tính hiện đại. Có một "bộ phận trách nhiệm". Các chức năng là các thói quen chuyên dụng thực hiện một nhiệm vụ cụ thể và thực hiện nó mỗi khi chúng được yêu cầu. Khác với điều đó, ứng dụng bảng tính kiểm soát khi họ được hỏi.
Bản thân các hàm không chứa bất kỳ logic nào để chọn tính toán lại hoặc không tính toán lại. Bản chất của tất cả các hàm Excel là thực hiện một số loại hoạt động bất cứ khi nào được kích hoạt để làm như vậy. Không có hàm nào có "bộ nhớ" riêng về giá trị hiện tại hoặc lịch sử tính toán trong quá khứ của nó. Không có cách nào để biết liệu đây có phải là lần đầu tiên nó được yêu cầu thực hiện công việc của mình hay không. Vì vậy, không có chức năng gốc nào có khả năng chỉ chạy một lần. Nếu bất kỳ chức năng nào được tính toán lại, nó sẽ thực hiện những gì nó được thiết kế để làm và tạo ra một giá trị mới.
Ứng dụng bảng tính có chứa một số thông minh cho phép nó tiết kiệm thời gian bằng cách bỏ qua các phép tính toán lại không cần thiết (như được mô tả trong câu trả lời của teylyn). Lần tính toán lại thời gian duy nhất bị bỏ qua là nếu ứng dụng biết rằng giá trị của hàm không bị ảnh hưởng bởi các thay đổi trong bảng tính đã kích hoạt nhu cầu tính toán lại mọi thứ.
Vì vậy, nếu bạn cần phải có một chức năng chạy một lần và sau đó bảo tồn giá trị của nó? Lấy ví dụ của bạn về việc tạo ra một số ngẫu nhiên và sau đó có kết quả không thay đổi. Điều đó mô tả việc tạo các hằng được tạo ngẫu nhiên và bạn có thể làm điều đó với Excel.
Excel không thể biết bạn muốn sử dụng khả năng của nó như thế nào; cho dù bạn muốn tiếp tục tạo ra các giá trị mới hay bảo tồn bộ cuối cùng. Mỗi tùy chọn là một trường hợp sử dụng mà Excel hỗ trợ. Excel chứa cả hai trường hợp bằng cách cung cấp cho bạn các công cụ để tính toán các giá trị mới và các công cụ để bảo tồn các giá trị cũ. Bạn có thể xây dựng bất cứ điều gì bạn muốn. Nhưng người dùng có trách nhiệm làm cho nó làm những gì họ muốn.
Hàm logic
Vì vậy, hãy nhìn vào logic cho những gì chức năng làm. Có thể có ý nghĩa cho logic tính toán lại bỏ qua một hàm ngẫu nhiên vì giá trị của nó không bị ảnh hưởng bởi các thay đổi khác trong bảng tính?
Giá trị của hàm có thay đổi khi tính toán lại hay không tùy thuộc vào mục đích của nó và dựa trên mục đích của nó. Một tính toán trên các giá trị không đổi sẽ luôn tạo ra kết quả tương tự. Một hoạt động dựa trên các giá trị ô không thay đổi sẽ tạo ra kết quả tương tự.
Tuy nhiên, một số chức năng được thiết kế với mục đích và mục đích tạo ra một kết quả khác nhau mỗi lần. Xem xét, ví dụ, các chức năng dựa trên thời gian hiện tại. Họ sẽ tạo ra một kết quả mới dựa trên thời gian tính toán lại. Bạn không thể có một chức năng mà mục đích của nó là tạo ra một giá trị dựa trên thời gian hiện tại và nó không được cập nhật khi tính toán lại.
Mục tiêu kiểm soát tính toán lại là luôn làm cho mọi thứ phản ánh trạng thái hiện tại của sự vật khi tính toán lại được kích hoạt. Tiêu chí đó sẽ không được đáp ứng nếu các chức năng dựa trên thời gian hiện tại không được cập nhật.
Các hàm "ngẫu nhiên", như RANDBETweEN, có mục đích tạo ra một số ngẫu nhiên mới khi tính toán lại. Đó là những gì họ dự định làm. Bạn có thể lập luận rằng tính toán lại có thể bị bỏ qua vì giá trị không bị ảnh hưởng bởi những thứ khác xảy ra trên bảng tính.
Nếu đó là hành vi mặc định, bạn sẽ cập nhật bảng tính, nhưng giá trị ngẫu nhiên sẽ không đổi. Đó không phải là hành vi rất ngẫu nhiên. Điều đó sẽ hỗ trợ một trường hợp sử dụng nhưng không phải là trường hợp khác. Quay trở lại khái niệm thiết kế cơ bản, nó được xử lý như mọi chức năng khác. Hành vi mặc định là để Excel tính toán lại nó. Nếu bạn muốn duy trì giá trị trước đó cho trường hợp sử dụng của mình, bạn phải làm điều đó với các công cụ có sẵn.