Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
Por fernandogaseo
#67501
Oi Prezados, tudo bom

Estou com o seguinte problema. Possuo uma base de dados que é alimentada semanalmente. Então, toda segunda-feira, o usuário acessa o sistema, baixa um excel, copia os dados e cola na sequência da base existente. A questão é que, ao pegar os dados do sistema e inserir na sequência, alguns registros (linhas) ficam repetidos, inviabilizando a leitura feita pelas tabelas dinâmicas que bebem dessa fonte. O que eu preciso então, é de uma macro que faça uma leitura na base de dados, identifique os registros duplicados e DELETE os mais antigos, mantendo sempre o mais recente.

Cada relatório baixado do sistema possui em média 70 linhas/registros. Não seria tão complicado realizar a remoção manualmente. Mas se existe a possibilidade de automatizar esse processo, seria excelente, uma vez que futuramente esse número de linhas que citei irá aumentar.

Para tentar resolver, adicionei uma coluna que identifica os registros do relatório (semana 1, semana 2, semana 3 e semana 4), então conforme um relatório é adicionado, insiro manualmente nessa coluna a semana correspondente. Sendo assim, o código da macro teria que identificar todos os campos que se repetem e o que tiver a numeração mais alta se mantém, enquanto que os demais são excluídos.

Quem puder me ajudar, serei muito grato
Por osvaldomp
#67508
Olá, @fernandogaseo .

Segue uma solução braçal e você poderá gravar uma macro enquanto executa a operação. Depois coloque aqui uma cópia do código gravado se precisar de algum ajuste.

1. selecione as colunas A:F | menu Dados | Classificar
2. Classificar por ~~~> selecione Nome | A a Z
3. Adicionar Nível | E depois por ~~~> selecione SEMANA | Z a A | OK (mantenha a seleção)
4. menu Dados | Remover Duplicadas | deixe marcado somente Nome | OK

No final dessa operação a ordem dos dados na tabela terá sido alterada, no entanto, se você precisa manter a ordem original, então antes de iniciar a operação coloque o número 1 em G2 e coloque o número 2 em G3, selecione G1:G2 e dê duplo clique no canto inferior direito de G2 para estender a numeração pela coluna. Então, ao final da operação de exclusão dos registros duplicados, reordene a tabela com base na coluna G, que poderá ser limpada.
fernandogaseo, Bikke agradeceu por isso
#67682
Tb poderia utilizar o Power Query, q é uma ferramenta do Excel p/ tratamento de dados, p/ importar os dados do novo arquivo, eliminar os dados antigos e filtrar os dados repetidos. Tb é um procedimento bem simples e q p/ ser executado, após montados os procedimentos, bastaria clicar na tabela com o botão direito e selecionar Atualizar.

No caso da sua tabela os nomes repetidos eram apenas 3, mas eram muito mais se fosse filtrado por matrícula (procedimento mais aconselhável).

Penso tb q com o uso do Power Query vc não precisaria ficar adicionando semanas na coluna adicionada, antes de executar a leitura de novos dados o PQ apagaria o anterior e ao importar verificaria qq duplicação. Coisa de 3 comandos sem uso de código.

Na planilha q eu anexei vc poderá fazer um teste de Atualização com as duas tabelas alterando o seu exemplo p/ ver a filtragem.

Essa solução pode ser dependente da versão do seu Excel.
Você não está autorizado a ver ou baixar esse anexo.
Por osvaldomp
#67683
fernandogaseo escreveu: 22 Out 2021 às 22:53 @osvaldomp

Muito obrigado, sua sugestão funcionou perfeitamente... showw :D
Que bom. Grato pelo retorno. :)
Mesclar no VBA

@osvaldomp Sim eu lembro, instalei os dois e […]

Pessoal, boa tarde! Antes de postar aqui tentei d[…]

Boa Tarde! Se Possível, Em funç&atil[…]

Show de bola, você foi em cima do problema, […]

Dida, Bom Dia. Detalhe no anexo Confere se &eacu[…]

Tente colocar TRUE() na SWITC ...SWITCH ( TRUE(),[…]

Olá, @felipefaccini . Grato pelo retor[…]

[RESOLVIDO]VBA Crashando

Olá, @PedroRamirez . Ao abrir o seu […]