Olá,
@KaiqueMello .
Seguem as dicas sobre instalação e operação da macro. Desconsidere caso você já domine.
Instale uma cópia do código abaixo em um módulo comum, assim:
1. copie o código daqui
2. a partir da planilha em que estão os dados tecle 'Alt+F11' para acessar o editor de VBA
3. no menu do editor / Inserir / Módulo
4. cole o código na janela em branco que vai se abrir
5. feito! 'Alt+Q' para retornar para a planilha e testar
para rodar o código:
6. tecle 'Alt+F8' / selecione a macro correspondente / Executar, ou insira um botão na planilha e vincule-o à macro ou vincule-a a um atalho de teclado (Alt+F8 / Opções).
Essas três opções para rodar o código podem ser implantadas isoladamente ou em conjunto.
Código: Selecionar todosSub ExcluiLinhas()
Dim z As Long, v As Long
Application.ScreenUpdating = False
[E:E] = ""
z = Cells(Rows.Count, 1).End(3).Row + 1
Range("E2:E" & z).Formula = "=SUMPRODUCT((A$2:A2=A2)*(C$2:C2))"
Range("E2:E" & z).Value = Range("E2:E" & z).Value
Do
z = [E:E].Find(What:=0, lookat:=xlWhole, after:=Cells(z, 5), SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Row
Do Until Application.Sum(Range(Cells(z, 3), Cells(z - v, 3))) = 0
v = v + 1
Loop
Rows(z - v & ":" & z).Delete
v = 0
If Application.CountIf([E:E], 0) = 0 Then: [E:E] = "": Exit Sub
Loop
End Sub
#
funcionamento - o código irá limpar a coluna E, irá inserir a sua fórmula naquela coluna e em seguida irá excluir as linhas conforme o critério estabelecido antes. Não coloque fórmulas na coluna E.
Testei o código no arquivo do seu primeiro post. Antes de rodar o código havia 39.499 linhas com dados na planilha e depois de rodar o código restaram 23.477 linhas com dados. Aqui roda em aprox 50 seg.
#
KaiqueMello escreveu: ↑16 Ago 2021 às 14:22
A única coisa que gostaria de saber por macro, é se antes de ele realizar a exclusão, eu posso ver se a conta vai bater (dar "0"), antes das linhas serem excluídas.
Não, mas você pode verificar de outra forma: antes de rodar o código coloque uma cópia desta fórmula em qualquer célula vazia da linha 1 (esta linha não será deletada)~~~>
=SOMA(C:C) ~~~> irá retornar 37.786.827,43. Em seguida transforme a fórmula em valor (copiar/colar valor), assim a a planilha não irá recalcular a cada vez que uma linha for deletada pelo código, o que iria aumentar o tempo de execução.
Em seguida rode o código. Ao terminar a execução coloque uma cópia da mesma fórmula em outra célula vazia. Se o valor retornado for igual à soma antes de rodar o código isso mostra que a soma de tudo o que foi deletado é zero.

Osvaldo
Quatro coisas que odeio: preguiçosos, políticos, Google planilhas e Outlook

Anexe arquivos diretamente no fórum:
+ Resposta / Adicionar um anexo / Selecione o arquivo
CÉLULAS MESCLADAS PODEM AFETAR FÓRMULAS E MACROS.