Функция LET в Google Sheets выполняется единожды для каждой ячейки, в которой она используется, или же она пересчитывается при каждой перезагрузке или изменении данных в зависимости от контекста?

В представленном фрагменте формулы: 

```javascript
=LET(_price;IMPORTRANGE("1W-6ghRaQDQonR0JGV0OsiIApR5O0UzgvpwFo";"'База'!$C$20");
ARRAYFORMULA(
IF(ISBLANK(D2:D);;
IF(T2:T-T2:T*5%>500;T2:T-T2:T*_price;S2:S-S2:S*_price)
)))
```

учитывая, что таблица содержит 5000 строк, будет ли функция IMPORTRANGE выполняться каждый раз, или она выполняется один раз, и затем используется только полученное значение?
  • 22 февраля 2025 г. 20:04
Ответы на вопрос 2
Функция `LET` в Google Sheets выполняется единожды для каждой ячейки, где она используется, и результаты вычислений сохраняются. Это означает, что когда вы используете `LET`, внутри нее вычисляются значения, и эти значения могут использоваться повторно внутри формулы, не вызывая повторных вычислений.

В контексте вашего фрагмента формулы, функция `IMPORTRANGE`, используемая внутри `LET`, будет выполняться один раз при первом вычислении формулы. Это значение `_price`, которое возвращает `IMPORTRANGE`, затем будет использовано внутри `ARRAYFORMULA` без повторного вызова `IMPORTRANGE` для каждой строки.

Однако имейте в виду, что если данные в источнике изменяются или если вы обновляете формулу, `IMPORTRANGE` может выполняться снова для обновления значения. Но в рамках одной сессии расчет будет производиться только один раз.

Таким образом, в вашем случае, `IMPORTRANGE` будет выполняться один раз, после чего полученное значение будет использоваться во всей формуле, включая массивные операции с `ARRAYFORMULA`. Это позволяет эффективно использовать формулу, особенно если вы работаете с большим количеством данных.
https://support.google.com/docs/answer/13190535?hl=ru 
LET(
  name1; value_expression1;
  [name2; …]; [value_expression2; …];
  formula_expression)
...
Примечание. В значениях formula_expression могут использоваться значения name, заданные в списке функции LET. Значения value_expression рассчитываются в функции LET только однажды, даже если они используются в последующих расчетах value_expression или formula_expression несколько раз.
Похожие вопросы