=LET(total;СУММ(B2:B6);ЕСЛИ(total>500;total*0,9;total)) один раз складывает B2:B6, называет результат total и затем использует это имя дважды: чтобы проверить его и чтобы вернуть. Функция LET и в русском Excel называется LET. Без неё СУММ пришлось бы написать три раза: =ЕСЛИ(СУММ(B2:B6)>500;СУММ(B2:B6)*0,9;СУММ(B2:B6)). В таблицах формулы записаны по-английски, но их можно вводить и по-русски, с точкой с запятой, как здесь.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Order | Amount | Total to pay | |
| 2 | A-101 | 120 | 580.5 | |
| 3 | A-102 | 95 | ||
| 4 | A-103 | 210 | ||
| 5 | A-104 | 80 | ||
| 6 | A-105 | 140 |
=LET(total;СУММ(B2:B6);ЕСЛИ(total>500;total*0,9;total))Заказы в сумме дают 645, это больше 500, поэтому D2 показывает 580.5. Замените B4 на 50, сумма упадёт до 485, ниже порога, и D2 покажет 485 без скидки.
Синтаксис LET
=LET(name1, value1, [name2, value2, ...], calculation)
- Каждое
name(имя) это слово, которое вы выбираете, а за ним идётvalue(значение), которое оно обозначает: число, диапазон или формула. - Можно задать до 126 пар. Значение может использовать любое имя, заданное до него.
- Последний аргумент это
calculation(вычисление), которое использует имена и даёт результат.
LET требует Excel 2021, Excel 2024 или Microsoft 365. В Excel 2019 и старше она показывает #ИМЯ? (по-английски #NAME?). В Google Таблицах есть LET с тем же синтаксисом.
LET с несколькими переменными
С именами формула для каждой строки читается как предложение. Здесь каждая строка считает промежуточную сумму и даёт скидку 10%, если она больше 100:
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Item | Price | Qty | To pay |
| 2 | Pen | 2.5 | 10 | 25 |
| 3 | Bag | 40 | 3 | 108 |
| 4 | Lamp | 35 | 2 | 70 |
| 5 | Mug | 8 | 15 | 108 |
| 6 | Desk | 150 | 1 | 135 |
=LET(subtotal;B2*C2;ЕСЛИ(subtotal>100;subtotal*0,9;subtotal))120 за сумки превращаются в 108, 120 за кружки тоже в 108, а 150 за стол в 135; ручки (25) и лампы (70) остаются как есть. Формула написана в D2 и протянута вниз, и в каждой строке subtotal означает своё число.
Имя может опираться на предыдущее: =LET(x;2;y;x*3;x+y) задаёт x равным 2, y равным 6 и возвращает 8.
Вычислить поиск один раз и использовать снова
Поиск, который встречается в ЕСЛИ дважды, выполняется дважды. LET выполняет его один раз. Эта формула возвращает цену плюс 20% или сообщение, если товара нет:
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Product | Region | Price | Look for | Price + 20% | |
| 2 | Apple | North | 1.2 | Pear | 1.8 | |
| 3 | Pear | South | 1.5 | Kiwi | Not found | |
| 4 | Carrot | East | 0.8 | |||
| 5 | Bread | North | 2.4 | |||
| 6 | Milk | South | 1.1 |
=LET(p;ПРОСМОТРX(E2;A2:A6;C2:C6;"");ЕСЛИ(p="";"Not found";p*1,2))Pear найден, поэтому F2 показывает 1.8. Kiwi в списке нет, ПРОСМОТРX возвращает пустой текст, заданный четвёртым аргументом, и F3 показывает Not found. Введите Kiwi в A4, и F3 покажет его цену плюс 20%.
LET с ФИЛЬТР
Больше всего LET полезна с динамическими массивами, где отфильтрованный диапазон нужен несколько раз. Эта формула называет подходящие строки, считает их и находит среднее их продаж в одной формуле:
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Name | Region | Sales | Region | North | |
| 2 | Ann | North | 120 | Summary | 3 reps, average 126.7 | |
| 3 | Ben | South | 80 | |||
| 4 | Cara | North | 200 | |||
| 5 | Dan | East | 150 | |||
| 6 | Eve | South | 95 | |||
| 7 | Finn | North | 60 |
=LET(rows;ФИЛЬТР(A2:C7;B2:B7=F1);n;ЧСТРОК(rows);avg;СРЗНАЧ(ИНДЕКС(rows;0;3));n&" reps, average "&ОКРУГЛ(avg;1))Для North она показывает "3 reps, average 126.7". Выберите South в F1, и получится "2 reps, average 87.5". ИНДЕКС(rows;0;3) берёт третий столбец отфильтрованных строк. Без LET ФИЛЬТР пришлось бы написать дважды.
Календарь на месяц с пустыми ячейками
Календарь на странице ПОСЛЕД показывает дни соседних месяцев. LET называет первое число месяца и сетку дат, а затем заменяет пустотой каждую дату вне месяца:
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Sun | Mon | Tue | Wed | Thu | Fri | Sat |
| 2 | 1 | 2 | 3 | 4 | |||
| 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 4 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 5 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 6 | 26 | 27 | 28 | 29 | 30 |
=LET(start;ДАТА(2026;4;1);days;ПОСЛЕД(6;7;start-ДЕНЬНЕД(start)+1);ЕСЛИ(МЕСЯЦ(days)=МЕСЯЦ(start);days;""))Замените в формуле DATE(2026,4,1) на DATE(2026,5,1), и сетка перерисуется для мая. Поскольку первое число месяца названо один раз, менять нужно только одну дату, а не три.
Практика: доставка с LET
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Order | Amount | To pay | |
| 2 | A-101 | 120 | ||
| 3 | A-102 | 95 | ||
| 4 | A-103 | 210 | ||
| 5 | A-104 | 80 | ||
| 6 | A-105 | 140 |
Ваша очередь: В D2 сложите суммы из B2:B6. Если итог меньше 800, прибавьте 25 за доставку; иначе верните итог.
Правила имён LET и ошибки
Большинство ошибок LET связано с именами:
- Имя должно начинаться с буквы и не содержать пробелов.
unit priceне сработает; используйтеunit_priceилиunitPrice. - Имя не может быть похоже на адрес ячейки.
a1иtax2026это адреса ячеек в Excel (TAX это столбец), поэтому LET отвергает их с ошибкой #ИМЯ?.rateилиtax_2026работают. - Имя пишется одинаково везде, где используется. Опечатка в месте использования даёт #ИМЯ?, потому что Excel ищет функцию или именованный диапазон с таким написанием.
- Последний аргумент должен быть вычислением. В
=LET(x;5)есть имя и значение, но нечего возвращать, поэтому Excel её не принимает. - Имена существуют только внутри своей формулы. Чтобы использовать вычисление во многих ячейках, сохраните его как именованную LAMBDA.
=LET(a1,5,a1*2) #NAME? (a1 is a cell address)
=LET(rate,8%,100*rate) 8
В русском Excel вторая формула записывается как =LET(rate;8%;100*rate), а первая даёт #ИМЯ?.
Часто задаваемые вопросы
Что делает функция LET в Excel?
Она даёт имена значениям внутри одной формулы. =LET(total;СУММ(B2:B6);total*2) один раз вычисляет СУММ(B2:B6), называет результат total и возвращает total, умноженное на 2. Имена существуют только внутри этой формулы.
Как использовать в LET больше одной переменной?
Добавьте ещё пары имени и значения перед итоговым вычислением: =LET(price;B2;qty;C2;price*qty). Следующее значение может использовать предыдущее имя, как в =LET(x;2;y;x*3;x+y), которая возвращает 8.
Почему моя формула LET возвращает #ИМЯ?
Либо в вашем Excel нет LET (она требует Excel 2021 или Microsoft 365), либо имя написано с опечаткой там, где оно используется, либо имя недопустимо, например похоже на адрес ячейки, как a1 или tax2026, или начинается с цифры.
Ускоряет ли LET формулы Excel?
Может ускорить. Без LET повторяющееся выражение, например одна и та же ПРОСМОТРX, записанная дважды внутри ЕСЛИ, вычисляется каждый раз, когда встречается. С LET оно вычисляется один раз, и результат используется повторно.