Função SCAN: Cálculos Acumulados no Excel

Tempo de leitura:

3–4 minutes

Neste artigo vou mostrar-te a função SCAN no Excel que permite realizar um cálculo sobre um intervalo e acumular os valores ao longo do intervalo iterado.

É uma função muito útil quando pretendes realizar uma iteração sobre um intervalo, acumulando o resultado da última operação para obter o valor final.

Este tipo de cenário é comum em várias linguagens nomeadamente em programação quando executas ciclos [loops] sobre valores, mas também podes encontrar soluções semelhantes em Power Query quando utilizas a função List.Acumulate.

A função permite realizar um cálculo simples sobre um intervalo, como por exemplo uma SOMA ou MÉDIA, mas também permite definir um cálculo personalizado quando usas uma LAMBDA.

No artigo vamos ver as várias soluções que podes implementar!

Exemplo para uma criação de valores acumulados

Se pretenderes criar um intervalo para calcular acumulados, na verdade não precisas de usar a função SCAN, pois existem métodos mais tradicionais para realizar o cálculo.

Uma das possibilidades é realizar um cálculo matemático simples com a soma entre 2 células: A Célula atual + Célula anterior (acumulada).

Exemplo de cálculo acumulado em Excel com os valores e fórmulas para somar o valor atual e o acumulado.

Outra possibilidade é usar a Função SOMA, com a lógica de bloquear uma das células (a célula inicial do intervalo) e deixar a segunda coordenada solta -> Relativa.

Tabela no Excel mostrando meses e valores, com fórmulas para calcular acumulados.

Cada um dos cenários é viável, mas a função SCAN trabalha sobre um Array e a vantagem da função é que o cálculo pode ser personalizado. Significa que a função SCAN está destinada a ser usada com uma LAMBDA.

Mas para já vamos simular a função SCAN com um cálculo clássico, por exemplo uma SOMA. Ao aplicarmos a função SOMA, ou outra agregação em vez da LAMBDA estamos a utilizar um conceito denominado “Eta lambda” ou “Eta reduced lambda”.

Conhecer a função SCAN

=SCAN ([valor_inicial], matriz, LAMBDA(acumulador, valor, calculo))

Valor Inicial: Define o valor inicial do acumulador.

Matriz: O intervalo a ser analizado (iterado).

LAMBDA: Uma função LAMBDA chamada para trabalhar a matriz. A LAMBDA utiliza três parâmetros:

  • Acumulador: O valor acumulado resultante da iteração anterior.
  • Valor: O valor atual da matriz a ser iterado.
  • Cálculo: O cálculo aplicado a cada elemento na matriz.

No primeiro cenário vamos então ver a função SCAN com uma função tradicional que substitui a LAMBDA.

Planilha do Excel mostrando a função SCAN em uso, com intervalos e cálculos acumulados para os meses de janeiro a dezembro.

Exemplo 2 – Aplicar a função SCAN com LAMBDA

Agora vamos aplicar num intervalo simples a função SCAN para compreendermos a lógica da LAMBDA aplicada.

=SCAN(C2;B5:B14;LAMBDA(acumulado;atual;atual * acumulado))

Imagem de uma planilha do Excel mostrando a função SCAN com uma tabela que inclui valores iniciais e uma lista de números para cálculo acumulado.

O resultado da Iteração pode ser analisado na imagem em baixo.

Planilha do Excel mostrando a aplicação da função SCAN, incluindo valores iniciais, uma lista de números e os resultados acumulados em uma coluna. Setas indicam o fluxo de valores.

Quando definimos a função LAMBDA, devemos colocar os 2 parâmetros (Acumulado e Atual) mas no cálculo podemos usar apenas um dos parâmetros.

Eis um exemplo onde aplicamos o cálculo apenas ao valor atual…

=SCAN(C2;B5:B14;LAMBDA(acumulado;atual;atual * 2))

Tabela do Excel mostrando a função SCAN aplicada com uma LAMBDA, exibindo valores acumulados e atuais.

E agora um exemplo onde usamos apenas o valor acumulado.

=SCAN(C2;B5:B14;LAMBDA(acumulado;atual;acumulado * 2))

Tabela no Excel demonstrando a função SCAN com parâmetros de acumulador, valor atual e cálculo duplicado, incluindo uma lista numerada e resultados acumulados.

=SCAN(“”;F5:F14;LAMBDA(acumulado;atual;acumulado&”-“&atual))

Agora um exemplo onde podemos ver o comportamento do valor acumulado e o valor atual, mas onde podemos “visualizar” os valores. Vamos usar texto para poder ver os valores. Para texto devemos usar o valor inicial com uma string de texto em branco -> “”. Se usares outro valor, esse valor será o acumulado inicial.

Exemplo da função SCAN no Excel que mostra a interação entre valores acumulados e atuais em uma lista de letras.

No próximo exemplo vamos aplicar uma lógica mais complexa, mas perfeitamente possível com uma LAMBDA, ou seja, vamos usar um conjunto de funções para criar a “nossa” função personalizada:

=SCAN(“*”;F5:F14;LAMBDA(acumulado;atual;UNIRTEXTO(“-“;VERDADEIRO;MAIÚSCULAS(acumulado);atual)))

Exemplo da função SCAN no Excel, mostrando uma fórmula com valor inicial, a função UNIRTEXTO e a função MAIÚSCULAS aplicada em uma lista de letras.

Exemplo 3 – Aplicar a função SCAN com um cálculo Financeiro

No último exemplo, temos a particularidade do intervalo a ser analisado pela função SCAN ser ele próprio definido por um cálculo, uma subtração entre Crédito e Débito.

=SCAN(F2;F5:F19-E5:E19;LAMBDA(acumulado;atual;acumulado + atual))

Tela do Excel mostrando a fórmula SCAN aplicada a um intervalo de valores, destacando as colunas de Débito, Crédito e Balanço, com valores financeiros.

Como podemos verificar a função SCAN pode realizar cálculos simples, mas também bastante mais complexos, com a particularidade de acumular sempre o valor da última iteração.

Uma função a ter em conta para trabalhar sobre intervalos!

Próximo artigo:

Artigo Anterior:


Comments

Leave a Reply

Discover more from Exceldriven

Subscribe now to keep reading and get access to the full archive.

Continue reading