Інші відповіді зосереджуються на механіці перерахунку та ролі мінливих функцій, але я думаю, що це не вистачає частини суті питання. У ньому розглядаються застосовані правила, але не стільки "чому". Я зосереджусь на цьому.
Концепція дизайну
Дозвольте розпочати з дизайнерської концепції та складових частин більшості сучасних електронних таблиць. Існує "розподіл відповідальності". Функції - це виділені підпрограми, які виконують конкретне завдання, і виконують це щоразу, коли їх запитують. Окремо від цього програма керує електронними таблицями, коли їх запитують.
Самі функції не містять логіки для перерахунку чи не перерахунку. Характер усіх функцій Excel полягає в тому, щоб виконувати певний тип операцій, коли це робиться для цього. Жодна функція не має власної "пам'яті" свого поточного значення або історії його минулих обчислень. Це не може знати, чи вперше його просять зробити свою роботу. Тож жодна нативна функція не має можливості запускатися лише один раз. Якщо будь-яка функція буде перерахована, вона зробить те, що призначено для виконання, і створить нове значення.
Додаток для електронних таблиць містить деяку інформацію, яка дозволяє економити час, пропускаючи непотрібні перерахунки (як описано у відповіді Тейліна). Тільки час перерахунок пропущений, якщо додаток знає , що значення функції не залежить від змін електронних таблиць , які викликали необхідність перераховувати речі.
Що робити, якщо вам потрібно один раз запустити функцію, а потім зберегти її значення? Візьміть свій приклад отримання випадкового числа, а потім результат не зміниться. Це описує створення випадкових генерованих констант, і ви можете це зробити за допомогою Excel.
Excel не може знати, як ви хочете використовувати його можливості; чи хочете ви продовжувати створювати нові значення чи зберегти останній набір. Кожен варіант є випадком використання, який підтримує Excel. Excel вміщує обидва випадки, надаючи інструменти для обчислення нових значень, а також інструменти для збереження старих значень. Ви можете будувати все, що завгодно. Але користувач несе відповідальність, щоб змусити його робити те, що вони хочуть.
Логіка функцій
Тож давайте подивимось на логіку того, що робить функція. Чи може мати сенс логіка перерахунку пропускати випадкову функцію, оскільки на її значення не повинні впливати інші зміни електронної таблиці?
Від того, чи змінюється значення функції при перерахунку, залежить від його призначення та на чому ґрунтується. Розрахунок на постійні значення завжди дасть однаковий результат. Операція на основі значень комірок, які не змінилися, дасть такий же результат.
Однак деякі функції розроблені з наміром і метою кожного разу створювати різний результат. Розглянемо, наприклад, функції на основі поточного часу. Вони дадуть новий результат, виходячи з часу на перерахунок. Ви не можете мати функцію, мета якої - генерувати значення на основі поточного часу, а також не оновлювати його при перерахунку.
Завдання контролю за перерахунком завжди полягає в тому, щоб все відображало поточний стан речей при здійсненні перерахунку. Цей критерій не був би дотриманий, якби функції, засновані на поточному часі, не були оновлені.
"Випадкові" функції, як RANDBETWEEN, мають на меті створити нове випадкове число при перерахунку. Це те, що вони призначені. Ви можете стверджувати, що перерахунок може бути пропущений, оскільки на значення не повинні впливати інші речі, що відбуваються в електронній таблиці.
Якби це було поведінкою за замовчуванням, ви б оновлювали електронну таблицю, але випадкове значення залишалося б постійним. Це не дуже випадкова поведінка. Це підтримувало б один випадок використання, але не інший. Повертаючись до базової дизайнерської концепції, вона обробляється як і будь-яка інша функція. Поводження за замовчуванням полягає в тому, щоб Excel перерахував його. Якщо ви хочете зберегти попереднє значення для вашого випадку використання, вирішувати робити це можна за допомогою доступних інструментів.