Detalhes em VBA que poucas pessoas sabem Parte 7
em 19 de Agosto de 2021
Você sabia que muitas das vezes, o loop em VBA que você faz para percorrer uma gama enorme de dados para poder classificá-los de alguma forma nem sempre é viável no código em VBA? Se não, Leia este artigo para saber mais. Me chamo Gutemberg, tenho experiência com VBA Excel a mais de 10 anos, e te convido nessa incrível jornada desta fantástica tecnologia!!
Pois bem! Abra um módulo padrão em seu VBE, Visual Basic Editor de dentro do seu Excel:
1º Passo – Com o seu excel aberto dê um Alt + F11, para abrir o VBE;
2º Passo – Em seguida insira um módulo através do menu/opção Inserir/Módulo;
3º Passo – Digite, ou copie, o seguinte exemplo básico abaixo dentro do módulo, este exemplo é apenas didático e servirá para comprovar o que estou falando, que serve para atribuição de fórmula em uma coluna inteira de forma dinâmica:
Sub loopFormulaBloco()
Range("B1:B200000").FormulaR1C1 = "=COUNTIF(RC[-1],""*1*"")"
End Sub
4º Passo – Dê ‘F5’ para executar, ou clique no botão de executar que possui um desenho de uma seta verde apontando para a direita na parte superior do Editor. Note que, ele aplicará a fórmula “=CONT.SE(A1;”*1*”)” das células ‘B1’ até ‘B200000’. Neste caso, a fórmula está verificando se o número 1 aparece na célula, independente de posição na string, caso exista, ele retornará 1... Simples assim!!
Observe que estamos aplicando uma função nativa do excel em bloco ou coluna de uma vez só. Muitos ficariam tentados em fazer um laço, While, por exemplo, para atender a demanda, porém, nestes casos em que temos grandes volumes de dados os laços se mostram ineficientes no quesito tempo, pois, eles ficarão rodando célula por célula, o que demandará um certo tempo, coisa, que se você aplicar o truque aqui abordado, não vai ter problemas.
Já tive situações em que o Analista Sênior demorava quase 30 minutos para rodar um relatório em Excel por se utilizar de tal abordagem, a utilização de loops em VBA. Quando demonstrei e apliquei este truque, o relatório passou a ser feito em menos de 20 segundos.
Experimentem vocês mesmos em alguma planilha e vejam a agilidade que acontece, ou seja, a diferença das 2 técnicas. A utilização de loops é mais bonita de ser ver, porém, bem menos performática. Para se utilizar de um loop aqui, dica, pode utilizar o While com a função Instr para a verificação da existência de pelo menos 1 número “1” na célula, por exemplo.
Espero que tenham gostado e, se puder, deixarem aquele comentário ‘maroto’, ficarei grato.
Até a Próxima!!