5 de dezembro de 2020 Anunciando o LAMBDA: Transforme fórmulas do Excel em funções personalizadas

Anunciando o LAMBDA: Transforme fórmulas do Excel em funções personalizadas

LAMBDAfunction_Concept_USEME.png

Hoje estamos lançando para nossos clientes Beta um novo recurso que revolucionará a maneira como você cria fórmulas no Excel. As fórmulas do Excel são a linguagem de programação mais amplamente usada no mundo, mas um dos princípios mais básicos da programação está faltando, que é a capacidade de usar a linguagem da fórmula para definir suas próprias funções reutilizáveis.

= LAMBDA

S implica em colocar, LAMBDA permite que você defina suas próprias funções personalizadas usando a linguagem de fórmulas do Excel. O Excel já permite definir funções personalizadas, mas apenas escrevendo-as em uma linguagem totalmente diferente, como JavaScript . Em contraste, LAMBDA permite que você defina uma função personalizada na linguagem de fórmula do Excel. Além disso, uma função pode chamar outra, portanto, não há limite para o poder que você pode implantar com uma única chamada de função. Para pessoas com formação em ciência da computação, você provavelmente já está familiarizado com o conceito de lambdas , e a introdução de LAMBDA torna a linguagem de fórmulas do Excel Turing Completa

Funções personalizadas reutilizáveis ​​

Com o LAMBDA, você pode pegar qualquer fórmula criada no Excel e envolvê-la em uma função LAMBDA e dar a ela um nome (como “MINHA FUNÇÃO”). Em seguida, em qualquer lugar da planilha, você pode consultar MINHA FUNÇÃO, reutilizando essa função personalizada em toda a planilha. Vou mostrar alguns exemplos abaixo.

Recursão

Funções reutilizáveis ​​são razão suficiente para começar a tirar proveito do LAMBDA, mas há mais uma coisa … você pode fazer recursão. Se você criar um LAMBDA chamado MYFUNCTION, por exemplo, poderá chamar MYFUNCTION dentro da definição de MYFUNCTION. Isso é algo que antes só era possível no Excel por meio de script (como VBA / JavaScript ). Também mostrarei um exemplo abaixo de como você pode aproveitar isso para construir coisas que não eram possíveis antes sem escrever um script.

Funções personalizadas reutilizáveis ​​

Uma das partes mais desafiadoras do trabalho com fórmulas no Excel é que muitas vezes você obtém fórmulas bastante complexas que são reutilizadas várias vezes na planilha (geralmente apenas copiando / colando). Isso pode dificultar a leitura e a compreensão do que está acontecendo por outras pessoas, colocá-lo em maior risco de erros e dificultar a localização e correção dos erros. Com LAMBDA, você tem reutilização e composição. Crie bibliotecas para qualquer parte da lógica que você planeja usar várias vezes. Oferece comodidade e reduz o risco de erros.

IDs de estação

Por exemplo, imagine que tenho uma lista de IDs de estação, onde o estado é codificado no ID, e quero extrair esse valor:

   StationID_1.png  

Existem muitas maneiras de fazer isso com funções do Excel, aqui está como eu fiz ( Tenho certeza que muitos de vocês têm maneiras muito mais eficientes de fazer isso … me perdoe … Eu sei, por exemplo, a equipe iria lembrar para mim, devo aproveitar as vantagens da função LET )

 = ESQUERDA (DIREITA (B18, LEN (B18) -FIND ("-", B18)), ENCONTRAR ("-", DIREITA (B18, LEN (B18) -FIND ("-", B18))) -1) 

Se eu pegar essa fórmula e copiá-la para baixo na coluna, posso obter os resultados mostrados na tabela acima.

Existem dois desafios com esta abordagem:

  • Erros – Se eu encontrar um erro em minha lógica que precise corrigir, tenho que voltar e atualizá-lo em todos os lugares em que foi usado, e posso perder alguns. Além disso, existe um risco adicional sempre que você tem fórmulas complexas repetidas várias vezes ao invés de definidas apenas uma vez e depois referenciadas. Se, por exemplo, houver alguns IDs de estação parecidos com “105532-872332-WA-73”, minha fórmula não funcionaria com eles. Se eu encontrar esse erro e quiser corrigi-lo, preciso voltar a cada célula em que usei essa lógica e atualizá-la.
  • Composibilidade / legibilidade – Se eu não for o autor original, é difícil saber qual é a intenção dessa fórmula (retirar a localização). Também é difícil usar essa lógica em combinação com outra lógica, como se eu quiser pegar o ID da estação e fazer uma pesquisa com base na localização calculada.

Usando LAMBDA, posso criar uma função chamada GETLOCATION e colocar a fórmula lógica na definição dessa função.

= LOCALIZAÇÃO

 = LAMBDA (stationID, LEFT (RIGHT (stationID, LEN (stationID) -FIND ("-", stationID)), FIND ("-", RIGHT (stationID, LEN (stationID) -FIND ("-", stationID))) - 1)) 

Observe que eu especifico os argumentos que minha função aceitará (neste caso stationID ) e a lógica para minha função. Agora, na minha planilha, posso simplesmente escrever GETLOCATION como uma fórmula e fazer referência à célula que tem o stationID [19459015 ] , assim como qualquer outra função do Excel. Se eu perceber que há um erro, eu conserto em um lugar, e em todos os lugares que usam essa função é consertado.

  STATIONID_GIF.gif 

Outro benefício adicional é que agora posso compor essa função com lógica adicional. Por exemplo, se eu tivesse uma tabela de taxas de impostos para cada local, poderia escrever esta fórmula simples para retornar a taxa com base no stationID .

 = XLOOKUP (GETLOCATION (B18), tabela1 [locais], tabela1 [impostos]). 

OK, muito mais para se aprofundar aqui em torno de como você pode usar esse recurso para construir um rico conjunto de bibliotecas de funções, tornar suas planilhas mais fáceis de entender e menos sujeitas a erros, etc. Essas funções podem até levar dados tipos como argumentos. Vamos postar um exemplo mais tarde de uma função personalizada que pega duas cidades como entrada e calcula a distância entre elas usando as coordenadas geográficas e o raio da terra para realizar o cálculo.

Vamos passar para outro grande impacto que isso terá sobre o que você pode construir no Excel. Este é um pouco mais complexo, mas é bastante revolucionário para nós… recursão .

Recursão

Uma das grandes peças que faltam nas fórmulas do Excel é a capacidade de fazer um loop … repetir em um conjunto de lógica em um intervalo definido dinamicamente. Existem maneiras de configurar manualmente o intervalo no qual o Excel recalcula para simular isso até certo ponto, mas não é inerente à linguagem da fórmula. Isso muda com o LAMBDA.

Vejamos um exemplo, embora um pouco artificial, mas é uma maneira simples de passar o ponto.

Imagine que tenho um conjunto de strings e quero especificar quais caracteres devem ser removidos dessas strings dinamicamente:

  StringClean_1.png 

Como o conjunto de caracteres que você está especificando não é estático, realmente não há uma boa maneira de fazer isso. Se você soubesse que sempre foi um conjunto fixo de caracteres, você poderia fazer uma tonelada de lógica aninhada, mas isso seria muito complexo e sujeito a erros para o autor. Sem mencionar que, se o número de caracteres a serem removidos fosse maior do que o que você contabilizou, ele iria falhar.

Com LAMBDA, podemos criar uma função chamada REPLACECHARS que faz referência a si mesma, permitindo que você itere sobre a lista de caracteres a serem removidos:

= SUBSTITUIR

 = LAMBDA (textString, ilegalChars, 
IF (ilegalChars = "", texttring,
REPLACECHARS (
SUBSTITUTE (textString, LEFT (ilegalChars), 1), ,
RIGHT (ilegalChars, LEN (ilegalChars) -1)
)))

Observe que na definição de REPLACECHARS , há uma referência a REPLACECHARS . A instrução IF diz que se não houver mais caracteres ilegais, retorne a entrada textString e remova cada ocorrência do caractere mais à esquerda em ilegalChars [ 19459015]. A recursão é iniciada com a solicitação para chamar REPLACECHARS novamente com a string atualizada e o restante de ilegalChars . Isso significa que ele continuará chamando a si mesmo até que tenha analisado todos os caracteres a serem removidos, dando o resultado desejado.

  REPLACECHARS_GIF2.gif 

Não apenas números e strings

Se você tem seguido as melhorias do Excel nos últimos dois anos, provavelmente notou duas melhorias significativas no tipo de dados com os quais pode trabalhar no Excel:

  • Matrizes dinâmicas – Em vez de passar um único valor para uma função, você pode passar uma matriz de valores, e as funções também podem retornar matrizes de valores. Você pode aprender mais sobre matrizes aqui .
  • Tipos de dados – O valor armazenado em uma célula não é mais apenas uma string ou um número. Uma única célula pode conter um tipo de dados rico, com um grande conjunto de propriedades. Você pode aprender mais sobre os tipos de dados aqui .

As funções podem aceitar tipos de dados e matrizes como argumentos, e também podem retornar resultados como tipos de dados e matrizes. O mesmo é verdade com os lambdas que você constrói.

Vejamos um exemplo … Eu tenho uma lista de cidades e quero calcular a distância total que eu viajaria se fosse para cada cidade em ordem.

Publicaremos o código para este em uma postagem posterior, mas é bem básico:

  • Temos uma matriz de tipos de dados City. O tipo de dados da cidade possui as propriedades de latitude e longitude.
  • Com latitude e longitude, podemos fazer algumas contas básicas usando o raio da Terra para aproximar a distância entre dois pontos (esse é o primeiro Lambda que chamamos de DistanceBetweenCities ) [19459033 ]
  • Criamos um lambda recursivo, DistanceBetweenMultipleCities , para iterar sobre as cidades na matriz. Além de chamar a si mesmo, para iterar na lista de cidades, ele também chama a função DistanceBetweenCities para obter um total de distância percorrida.
  DISTANCEBETWEENTWOCITIES_GIF2.gif 

Experimente você mesmo

Se você estiver em nosso programa Beta, poderá experimentá-lo agora. Adoraríamos receber seus comentários à medida que continuamos a aprimorar esse novo recurso.

Observação: A função lambda está disponível para membros do Insiders: programa beta executando versões do Windows e Mac do Excel. Saiba mais sobre como se tornar um Insider aqui

Visão geral do LAMBDA

Existem três peças-chave de = LAMBDA para entender:

  1. Componentes da função LAMBDA
  2. Nomeando um lambda
  3. Chamando uma função lambda

Componentes da função LAMBDA

Vejamos um exemplo que cria uma função lambda básica.

Suponha que temos a seguinte fórmula:

 = LAMBDA (x, x + 122) 

Neste, x é o argumento que você pode transmitir ao chamar o LAMBDA, e x + 122 é a lógica.

Por exemplo, suponha que você chamou lambda e inseriu o valor 1 para x , Excel faria o seguinte cálculo:

 1 + 122 

Que, como todos sabemos:

  1 + 122 = 123  

Mas como você usa isso? Se você tem colado nossos exemplos no Excel, deve ter notado alguns #CALC! erros. Para resolver isso, você precisará aprender a próxima etapa.

Nomeando um lambda

Para dar um nome ao LAMBDA para que ele possa ser reutilizado, use o Gerenciador de Nomes.

O Name Manager pode ser encontrado na faixa de opções em:

Fórmulas > Gerente de Nome

  chgross_38-1606849602985.png 

Depois de abrir o Gerenciador de nomes, você verá a seguinte janela

  chgross_39-1606849602988.png 

A partir deste ponto, você deseja criar uma nova entrada (Novo …) e preencher os campos associados

  chgross_40-1606849602990.png 

Nome : o nome da sua função

Comentário : Uma descrição e dica de ferramenta associada que será mostrada ao chamar sua função

Refere-se a : Sua definição de função lambda

Quando terminar, você pode clicar em “OK” para armazenar seu lambda e deverá ver a definição retornada na janela resultante.

  chgross_41-1606849602993.png 

E é isso! Agora você pode usar sua função personalizada recém-criada na pasta de trabalho, chamando-a pelo nome.

Ligando para LAMBDA

Para simplificar, você chama uma função lambda da mesma forma que chama funções nativas no Excel.

Para ilustrar isso, vamos revisitar o exemplo anterior e mostrar como chamar MYLAMBDA com um valor.

 = MYLAMBDA (122) 

O que, obviamente, retorna o valor:

 123 

Uma última coisa a ser observada é que você pode chamar um lambda sem nomeá-lo. Se não tivéssemos nomeado a fórmula anterior e apenas a tivéssemos criado na grade, poderíamos chamá-la assim:

 = LAMBDA (x, x + 122) (1) 

Isso passa em 1 para x , que retorna

 123 

Apenas o começo … junte-se a nós na jornada

Como você provavelmente notou, estamos melhorando o produto regularmente. A versão desktop do Excel para Windows e Mac é atualizada mensalmente, e o aplicativo da web com muito mais frequência do que isso. Já temos muitas melhorias planejadas para LAMBDA, mas estamos esperando por seus comentários ao longo do caminho. Uma que eu posso dizer que você sempre percebo é a experiência de edição no gerenciador de nomes … definitivamente há muito espaço para melhorias aí. Também adicionaremos mais algumas funções de manipulação de array nos próximos meses, que o ajudarão a construir lambdas ainda mais poderosos, aproveitando mais os arrays dinâmicos.

Office Insiders

Junte-se ao Programa Office Insider e escolha o Canal Beta para obter acesso antecipado ao LAMBDA no Excel.

Para fornecer feedback e sugestões, clique em Ajuda> Feedback e adicione #LAMBDA em seu feedback para que possamos encontrar facilmente informações sobre o recurso. Você também pode postar na Comunidade de tecnologia do Excel .

Conecte-se a nós

Fique conectado conosco. Junte-se à nossa Comunidade de tecnologia do Excel e verifique esta amostra LAMBDA . Deixe-nos saber o que você pensa e adoraríamos ver o que você constrói com o LAMBDA!

Saiba mais

Para saber mais sobre LAMBDA, consulte nosso artigo de ajuda e, enquanto isso, estamos ansiosos para ouvir mais sobre as fórmulas LAMBDA que você criou!

Ajuda do LAMBDA

Artigo originalmente postado em Excel Blog

Um comentário em “Anunciando o LAMBDA: Transforme fórmulas do Excel em funções personalizadas

  1. Em vez de uma resposta estou fazendo uma pergunta 😊.
    Estou inscrito no Office Insider e tenho instalada a versão Excel 2101 (build 13604.20000 Clique para Executar) — Canal Beta, mas não tenho disponível a função LAMBDA em meu notebook.
    Essa função está sendo distribuída gradualmente, ou há algum erro na minha instalação???

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *