Как заблокировать обновление RAND в ячейках и разрешать по кнопке?

Проблема в том, что содержимое листа обновляется при любой правке. А мне надо чтобы он один раз сгенерировался и с ним можно было работать. Можно как-то отключить/включить работу формулы RAND в документе? Или заменить формулы на работу скрипта...

Пример: Таблица

A B
1 =RAND()
2 =RAND()

Она генерирует числа при загрузке

A B
1 0.33333
2 0.55555

Я работаю с данными

A B
1 0.33333 Число меньше 0.5
2 0.55555

Но когда я вписываю B1, то всё пересчитывается и уже не соответствует действительности

A B
1 0.66666 Число меньше 0.5
2 0.44444

Поэтому нужно найти способ остановить пересчёт.


Ответы (1 шт):

Автор решения: Daddy Cool

Данные как вносятся? В одном из проектов данные заносятся через форму и триггером добавляется значение в эту же строку.

А так можно и руками копипастить рандомное значение в нужную ячейку. После этого оно изменяться не будет. Можно сделать скрипт, который будет заполнять ячейку рандомным значениям. Как запускать скрипт уже на ваш выбор, либо триггером на изменение, либо по времени, либо по кнопке на листе, либо из пункта главного меню.

/** @OnlyCurrentDoc */

function freezeValue() {
  var range = SpreadsheetApp.getActive().getActiveRange();
  range.copyTo(range, SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
};

function onOpen() {
  SpreadsheetApp.getUi().createMenu("⚙️ Advanced")
    .addItem("Freeze Value", "freezeValue")
    .addToUi();
}

Есть еще вариант через лямбду. Оно не обновляется. Но надо потестить.

=LAMBDA(x; x)(RAND())
→ Ссылка