=LAMBDA(price,price*1.2)(B2) define uma pequena função com uma entrada, price, e chama essa função na hora em B2: o 2.5 da caneta vira 3. Sozinho, isso é só um =B2*1,2 mais comprido. A graça da LAMBDA é dar um nome à função no Gerenciador de Nomes, para uma fórmula longa virar =ADDVAT(B2), e passar a função para MAP, BYROW e as outras funções abaixo. A LAMBDA tem o mesmo nome no Excel em português, e você pode digitar as fórmulas em português na tabela, com ponto e vírgula: =LAMBDA(price;price*1,2)(B2).
| A | B | C | |
|---|---|---|---|
| 1 | Item | Price | With VAT |
| 2 | Pen | 2.5 | 3 |
| 3 | Bag | 120 | 144 |
| 4 | Lamp | 35 | 42 |
| 5 | Mug | 8 | 9.6 |
| 6 | Desk | 150 | 180 |
=LAMBDA(price;price*1,2)(B2)Sintaxe da LAMBDA
=LAMBDA([parameter1, parameter2, ...], calculation)
- Cada
parameteré um nome para uma entrada, como os nomes da LET. São permitidos até 253. - O último argumento é o
calculation, que usa os parâmetros. - Os valores dos parâmetros vão entre parênteses logo depois do parêntese de fechamento:
=LAMBDA(x;y;x*y)(3;4)retorna 12.
LAMBDA, MAP, BYROW, BYCOL, SCAN, REDUCE e MAKEARRAY precisam do Microsoft 365, do Excel 2024 ou do Excel para a Web. O Excel 2021 tem a LET, mas não essas funções. O Google Sheets também tem LAMBDA, e salva uma com nome em Dados > Funções nomeadas.
Salvar uma LAMBDA como função personalizada
Uma LAMBDA vira reutilizável quando você dá um nome a ela. O Excel não precisa de VBA nem de suplemento para isso:
- Vá em Fórmulas > Gerenciador de Nomes e clique em Novo (ou Fórmulas > Definir Nome).
- Em Nome, digite o nome da função, por exemplo
ADDVAT. - Em Refere-se a, digite a LAMBDA sem entradas:
=LAMBDA(price;price*1,2). - Clique em OK. Agora digite
=ADDVAT(B2)em qualquer célula da pasta de trabalho.
Name: ADDVAT
Refers to: =LAMBDA(price,price*1.2)
In a cell: =ADDVAT(B2) returns 3 when B2 is 2.5
A função existe só nessa pasta de trabalho. Copie uma planilha que usa a função para outra pasta de trabalho e o nome vai junto. Mude a LAMBDA uma vez no Gerenciador de Nomes e todas as células que chamam a função se atualizam. Teste uma LAMBDA em uma célula, com as entradas entre parênteses, antes de salvar; um erro é mais fácil de ver ali.
MAP: aplicar uma LAMBDA a cada célula
A MAP chama a LAMBDA uma vez para cada célula de um intervalo e retorna um intervalo do mesmo formato. Aqui todo preço acima de 100 ganha 10% de desconto:
| A | B | C | |
|---|---|---|---|
| 1 | Item | Price | Price to pay |
| 2 | Pen | 2.5 | 2.5 |
| 3 | Bag | 120 | 108 |
| 4 | Lamp | 35 | 35 |
| 5 | Mug | 8 | 8 |
| 6 | Desk | 150 | 135 |
A bolsa (120) vira 108 e a mesa (150) vira 135; os outros preços passam como estão. Uma fórmula em C2 cobre a coluna inteira. A MAP também consegue percorrer dois intervalos do mesmo tamanho lado a lado: com quantidades em D2:D6, =MAP(B2:B6,D2:D6,LAMBDA(p,q,p*q)) (forma em inglês) multiplica cada preço pela quantidade dele.
BYROW: um resultado por linha
A BYROW entrega à LAMBDA uma linha inteira de cada vez, então a LAMBDA pode usar MÁXIMO, SOMA ou MÉDIA nela. A melhor nota e a média de cada aluno:
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Student | Test 1 | Test 2 | Test 3 | Best | Average |
| 2 | Ann | 72 | 85 | 90 | 90 | 82.3 |
| 3 | Ben | 64 | 70 | 58 | 70 | 64 |
| 4 | Cara | 88 | 92 | 95 | 95 | 91.7 |
| 5 | Dan | 75 | 60 | 81 | 81 | 72 |
=BYROW(B2:D5;LAMBDA(r;MÁXIMO(r)))E2 retorna 90, 70, 95 e 81; F2 retorna 82.3, 64, 91.7 e 72. Um =MÁXIMO(B2:D5) simples daria um número para a tabela inteira; a BYROW é o que mantém as linhas separadas em uma fórmula só. A BYCOL faz o mesmo por coluna: =BYCOL(B2:D5;LAMBDA(c;MÉDIA(c))) retorna a média de cada prova.
SCAN e REDUCE: totais acumulados
A REDUCE percorre um intervalo e leva um valor junto, retornando só o resultado final. A SCAN faz o mesmo, mas retorna cada passo, o que a torna um total acumulado em uma fórmula só:
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Item | Price | Running total | Total |
| 2 | Pen | 2.5 | 2.5 | 315.5 |
| 3 | Bag | 120 | 122.5 | |
| 4 | Lamp | 35 | 157.5 | |
| 5 | Mug | 8 | 165.5 | |
| 6 | Desk | 150 | 315.5 |
=SCAN(0;B2:B6;LAMBDA(total;x;total+x))O primeiro argumento, 0, é o valor inicial. Para cada preço, a LAMBDA recebe o total até ali e o preço, e retorna o novo total. C2 vai 2.5, 122.5, 157.5, 165.5, 315.5, e D2 mostra só o final, 315.5. Para um total simples a SOMA é mais fácil, mas a REDUCE pode levar qualquer coisa, como um texto que cresce ou uma contagem que só sobe em algumas linhas.
Dar nome a uma LAMBDA dentro de uma fórmula com a LET
Uma LAMBDA não precisa do Gerenciador de Nomes se só uma fórmula usa a função. Dê um nome a ela com a LET e passe o nome para a MAP ou a BYROW:
| A | B | C | |
|---|---|---|---|
| 1 | Item | Price | Sale price |
| 2 | Pen | 2.5 | 2.25 |
| 3 | Bag | 120 | 108 |
| 4 | Lamp | 35 | 31.5 |
| 5 | Mug | 8 | 7.2 |
| 6 | Desk | 150 | 135 |
Todo preço ganha 10% de desconto: 2.25, 108, 31.5, 7.2 e 135. No Excel você também pode chamar a LAMBDA com nome direto dentro da LET, =LET(f;LAMBDA(x;x*2);f(5)), que retorna 10.
Prática: um total por linha com a BYROW
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Student | Test 1 | Test 2 | Test 3 | Total |
| 2 | Ann | 72 | 85 | 90 | |
| 3 | Ben | 64 | 70 | 58 | |
| 4 | Cara | 88 | 92 | 95 | |
| 5 | Dan | 75 | 60 | 81 |
Sua vez: Em E2, retorne o total das três provas de cada aluno, um número por linha, com uma fórmula só.
Erros comuns com a LAMBDA
=LAMBDA(x,x*2) #CALC! defined but never called
=LAMBDA(x,x*2)(5) 10
=LAMBDA(x,y,x*y)(3) #VALUE! two parameters, one value
=LAMBDA(x,x*2)(3,4) #VALUE! one parameter, two values
No Excel em português, com ponto e vírgula, os erros aparecem como #CALC! e #VALOR! (#VALUE! em inglês; a tabela mostra os nomes de erro em inglês).
- #CALC! significa que uma LAMBDA está em uma célula sem ser chamada. Coloque as entradas entre parênteses, ou salve no Gerenciador de Nomes e chame pelo nome.
- #VALOR! significa que a quantidade de valores não bate com a quantidade de parâmetros. Conte dos dois lados.
- #NOME? significa que a versão do Excel não tem a LAMBDA, ou que um nome salvo está escrito errado. Um nome de parâmetro segue as regras da LET: sem espaços e sem parecer um endereço de célula.
- Uma LAMBDA da BYROW que retorna vários valores por linha dá #CALC!. Cada linha precisa produzir um valor; para retornar uma linha de resultados, use a MAKEARRAY ou uma fórmula de matriz comum.
Perguntas frequentes
O que é a função LAMBDA no Excel?
Ela transforma uma fórmula em uma função com entradas nomeadas. =LAMBDA(price;price*1,2) recebe uma entrada chamada price e retorna price vezes 1,2. Chame a função colocando a entrada entre parênteses, =LAMBDA(price;price*1,2)(B2), ou salve com um nome no Gerenciador de Nomes.
Como criar uma função personalizada no Excel sem VBA?
Abra Fórmulas > Gerenciador de Nomes > Novo, digite um nome como ADDVAT e, em Refere-se a, digite =LAMBDA(price;price*1,2). Clique em OK, e =ADDVAT(B2) funciona em qualquer célula dessa pasta de trabalho.
Por que minha LAMBDA retorna #CALC!?
Uma LAMBDA digitada em uma célula sem entradas, como =LAMBDA(x;x*2), é uma função que nunca foi chamada, então o Excel mostra #CALC!. Coloque a entrada entre parênteses depois dela, =LAMBDA(x;x*2)(5), ou salve no Gerenciador de Nomes.
Quais versões do Excel têm a LAMBDA?
Microsoft 365, Excel 2024 e Excel para a Web, junto com MAP, BYROW, BYCOL, SCAN, REDUCE e MAKEARRAY. O Excel 2021 tem a LET, mas não a LAMBDA.
O que a BYROW faz no Excel?
Ela roda uma LAMBDA uma vez por linha de um intervalo e retorna um resultado por linha: =BYROW(B2:D5;LAMBDA(r;MÁXIMO(r))) retorna o maior valor de cada linha, despejado para baixo.