=LET(total,SUM(B2:B6),IF(total>500,total*0.9,total)) soma B2:B6 uma vez, chama o resultado de total e depois usa esse nome duas vezes: uma para testar e outra para retornar. Sem a LET você escreveria a SOMA três vezes: =SE(SOMA(B2:B6)>500;SOMA(B2:B6)*0,9;SOMA(B2:B6)). A função se chama LET também no Excel em português, e você pode digitar as fórmulas em português na tabela, com ponto e vírgula: =LET(total;SOMA(B2:B6);SE(total>500;total*0,9;total)).
| 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;SOMA(B2:B6);SE(total>500;total*0,9;total))Os pedidos somam 645, acima de 500, então D2 mostra 580.5. Mude B4 para 50 e o total cai para 485, abaixo do limite, então D2 mostra 485 sem desconto.
Sintaxe da LET
=LET(name1, value1, [name2, value2, ...], calculation)
- Cada
nameé uma palavra que você escolhe, seguida dovalueque ela representa: um número, um intervalo ou uma fórmula. - Você pode definir até 126 pares. Um valor pode usar qualquer nome definido antes dele.
- O último argumento é o
calculation, que usa os nomes e dá o resultado.
A LET precisa do Excel 2021, do Excel 2024 ou do Microsoft 365. No Excel 2019 e anteriores ela mostra #NOME? (#NAME? em inglês; a tabela mostra os nomes de erro em inglês). O Google Sheets tem LET com a mesma sintaxe.
LET com várias variáveis
Os nomes fazem uma fórmula por linha ser lida como uma frase. Aqui cada linha calcula um subtotal e tira 10% quando ele passa de 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;SE(subtotal>100;subtotal*0,9;subtotal))Os 120 das bolsas viram 108, os 120 das canecas também viram 108, e os 150 da mesa viram 135; as canetas (25) e as luminárias (70) ficam como estão. A fórmula foi escrita em D2 e arrastada para baixo, e subtotal significa um número diferente em cada linha.
Um nome pode se apoiar no anterior: =LET(x;2;y;x*3;x+y) define x como 2, y como 6 e retorna 8.
Calcular uma busca uma vez e reutilizar
Uma busca que aparece duas vezes dentro de uma SE roda duas vezes. A LET roda uma vez. Isto retorna o preço mais 20%, ou uma mensagem quando o produto não existe:
| 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;PROCX(E2;A2:A6;C2:C6;"");SE(p="";"Not found";p*1,2))Pear é encontrado, então F2 mostra 1.8. Kiwi não está na lista, a PROCX (XLOOKUP em inglês) retorna o texto vazio passado como quarto argumento, e F3 mostra Not found. Digite Kiwi em A4 e F3 passa a mostrar o preço dele mais 20%.
LET com FILTRO
A LET é mais útil com matrizes dinâmicas, quando um intervalo filtrado é usado mais de uma vez. Isto dá nome às linhas que batem, conta essas linhas e tira a média das vendas delas em uma fórmula só:
| 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;FILTRO(A2:C7;B2:B7=F1);n;LINS(rows);avg;MÉDIA(ÍNDICE(rows;0;3));n&" reps, average "&ARRED(avg;1))Para North a fórmula mostra "3 reps, average 126.7". Escolha South em F1 para ter "2 reps, average 87.5". ÍNDICE(rows;0;3) pega a terceira coluna das linhas filtradas. Sem a LET, a FILTRO seria escrita duas vezes.
Um calendário do mês com células vazias
O calendário da página SEQUÊNCIA mostra dias dos meses vizinhos. A LET dá nome ao primeiro dia do mês e à grade de datas, e depois deixa em branco toda data fora do mês:
| 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;DATA(2026;4;1);days;SEQUÊNCIA(6;7;start-DIA.DA.SEMANA(start)+1);SE(MÊS(days)=MÊS(start);days;""))Mude DATE(2026,4,1) para DATE(2026,5,1) (no Excel em português, DATA(2026;4;1) e DATA(2026;5;1)) e a grade se redesenha para maio. Como o primeiro dia do mês tem nome, só existe uma data para mudar, não três.
Prática: frete com a 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 |
Sua vez: Em D2, some os valores de B2:B6. Se o total for menor que 800, acrescente 25 de frete; senão, retorne o total.
Regras de nomes e erros da LET
A maioria dos erros da LET vem dos nomes:
- Um nome precisa começar com uma letra e não pode ter espaços.
unit pricefalha; useunit_priceouunitPrice. - Um nome não pode parecer um endereço de célula.
a1etax2026são endereços de célula no Excel (TAX é uma coluna), então a LET recusa esses nomes com #NOME?.rateoutax_2026funcionam. - Um nome é escrito exatamente igual toda vez que é usado. Um erro de digitação onde ele é usado dá #NOME?, porque o Excel procura uma função ou um intervalo nomeado com essa grafia.
- O último argumento precisa ser um cálculo.
=LET(x;5)tem um nome e um valor, mas nada para retornar, então o Excel recusa a fórmula. - Os nomes só existem dentro da própria fórmula. Para reutilizar um cálculo em muitas células, salve o cálculo como uma LAMBDA com nome.
=LET(a1,5,a1*2) #NAME? (a1 is a cell address)
=LET(rate,8%,100*rate) 8
No Excel em português: =LET(a1;5;a1*2) dá #NOME? e =LET(rate;8%;100*rate) dá 8.
Perguntas frequentes
O que a função LET faz no Excel?
Ela dá nomes a valores dentro de uma fórmula. =LET(total;SOMA(B2:B6);total*2) calcula SOMA(B2:B6) uma vez, chama o resultado de total e retorna total vezes 2. Os nomes só existem dentro dessa fórmula.
Como usar mais de uma variável na LET?
Acrescente mais pares de nome e valor antes do cálculo final: =LET(price;B2;qty;C2;price*qty). Um valor pode usar um nome definido antes dele, como em =LET(x;2;y;x*3;x+y), que retorna 8.
Por que minha fórmula LET retorna #NOME?
Ou o seu Excel não tem a LET (ela precisa do Excel 2021 ou do Microsoft 365), ou um nome está escrito errado onde é usado, ou um nome não é permitido, por exemplo um que parece endereço de célula, como a1 ou tax2026, ou um que começa com número.
A LET deixa as fórmulas do Excel mais rápidas?
Pode deixar. Sem a LET, uma expressão repetida, como a mesma PROCX escrita duas vezes dentro de uma SE, é calculada cada vez que aparece. Com a LET ela é calculada uma vez e o resultado é reutilizado.