Inicio » artigo » curso de excel » curso office script » excel » excel online » macro » officescript » typescript » Office Script - Estrutura de Repetição FOR
Office Script - Estrutura de Repetição FOR
Em mais um artigo sobre o Office Script escrevo sobre o uso da estrutura de repetição FOR ...
Antes de mais nada, qual a principal funcionalidade de uma estrutura de repetição? Como o próprio nome já diz, a estrutura de repetição basicamente é um laço em que uma condição é validada. Enquanto essa condição for satisfatória os ciclos de repetições continuam a ser executados. Quando o limite do ciclo é atingido, as repetição acabam.
Simples na teoria mas controverso na prática. Há ainda muitas dúvidas em como aplicar corretamente as estruturas de repetição e esse artigo, junto com os demais que já escrevi visão dismistificar essa dificuldade.
Antes de explicar COMO FAZER uma estrutura de repetição, é bom entender PORQUE FAZER uma estrutura de repetição em sua planilha.
Imagine que você tem uma série de registros em sua tabela e gostaria de percorrer cada um deles para fazer uma análise. Vamos usar o exemplo prático de Meta x Resultado. Há duas colunas em sua planilha e você quer ver se o resultado superou a meta.
Uma dica antes de continuarmos: Mentalize a ação que sua rotina deverá fazer. Isso ajuda na criação do código
Rotina que eu imagino para solucionar o problema: Vou colocar o cursor na célula E2. Vou inserir a fórmula D2-C2 e na sequência verificar se o resultado é positivo ou negativo. Se for positivo vou escrever na célula "Acima da Meta" e se for negativo, vou escrever na célula "Abaixo da Meta". Na sequência vou deslocar meu cursor para a célula E3 e repetir o processo.
Porque destaquei a frase "repetir o processo" acima? Fiz isso pois esse é o meu gatilho que indica que uma estrutura de repetição é necessária para fazer o que preciso. Pois tenho um número definido de repetições para fazer. Se você conhece já um pouco das estruturas de repetição, vai me dizer: Você não poderia utilizar também o WHILE? A resposta é sim, poderia mas, vamos considerar que eu utilizo o FOR quando preciso de um número fixo de repetições enquanto o While me auxiliaria em um número variável de combinações (quando o número de registros varia bastante na planilha).
for (variável_controle; condição; incremento_variável_controle){
variável_controle: É a variável utilizada no controle de repetições. Registra a quantidade de vezes que a sequência será executada.
condição: É nosso teste lógico. Enquanto for verdadeiro (true) as repetições vão continuar ocorrendo.
incremento_variável_controle: Para cada ciclo, haverá um incremento na variável de controle. Ela pode ser expressa em unidades numéricas de acordo com a necessidade.
Exemplo 1: Exibir na região de console o resultado das interações. A variável a é criada na primeira parte da instrução (variável de controle) e é iniciada com o valor 1. Enquanto a for menor ou igual a 5 as repetições serão realizadas (a <= 5). A cada ciclo a variável de controle é incrementada em 1 (a += 1)
for (let a:number = 1; a <= 5; a +=1) {
console.log('Valor do ciclo (Ex1): ' + a.toString());
Parece difícil, mas é muito simples... Vamos voltar ao nosso exemplo acima.
O código para resolver o problema está abaixo:
let qtd_registros: number = 16
let ln:number = 1;
let col:number = 4;
let resultado:number = 0;
for (let a:number = 1; a <= qtd_registros; a += 1){
resultado = w.getCell(ln, col - 1).getValue() - w.getCell(ln, col - 2).getValue();
if (resultado > 0){
w.getCell(ln,col).setValue("Acima da Meta");
w.getCell(ln,col).getFormat().getFill().setColor("FF0000")
w.getCell(ln, col).setValue("Abaixo da meta");
w.getCell(ln, col).getFormat().getFill().setColor("0000FF")
w.getCell(ln, col).getFormat().getFont().setColor("FFFFFF")
Após percorrer cada registro e fazer a análise, o resultado pode ser visto acima (com um bônus)... Fiz o preenchimento das células acima da meta de azul e as abaixo da meta de vermelho, além de alterar a cor da fonte para a cor branca.
Agora é sua vez... Pratique um pouco o uso do FOR e tenha em mãos uma ótima opção de estrutura de repetição.