Como fazer uma comparação entre dois arquivos excel e remover linhas a partir de uma numeração que pode estar em ambas as planilhas?

Tenho duas planilhas que preciso realizar a comparação entre elas e remover os dados duplicados verificando uma numeração a partir de uma coluna. Essa numeração pode estar em ambas as planilhas. A diferença é que uma das planilhas contém um campo status informando que aquela numeração já foi utilizada anteriormente. A outra planilha é gerada sempre a cada nova execução do robô e por isso não contém nenhuma informação se essa numeração já foi utilizada.

Quero que ele realize essa comparação, remova os dados duplicados e mantenha somente a numeração que não foi utilizada.

Hello @vinicius.botelho!

It seems that you have trouble getting an answer to your question in the first 24 hours.
Let us give you a few hints and helpful links.

First, make sure you browsed through our Forum FAQ Beginner’s Guide. It will teach you what should be included in your topic.

You can check out some of our resources directly, see below:

  1. Always search first. It is the best way to quickly find your answer. Check out the image icon for that.
    Clicking the options button will let you set more specific topic search filters, i.e. only the ones with a solution.

  2. Topic that contains most common solutions with example project files can be found here.

  3. Read our official documentation where you can find a lot of information and instructions about each of our products:

  4. Watch the videos on our official YouTube channel for more visual tutorials.

  5. Meet us and our users on our Community Slack and ask your question there.

Hopefully this will let you easily find the solution/information you need. Once you have it, we would be happy if you could share your findings here and mark it as a solution. This will help other users find it in the future.

Thank you for helping us build our UiPath Community!

Cheers from your friendly
Forum_Staff

Olá!

Considerando que as planilhas foram lidas pela atividade Read Range e estão em variáveis do tipo DataTable, uma opção é usar uma atividade For Each Row para visitar cada linha da segunda planilha e fazer uma busca na primeira planilha usando a numeração.
Exemplo: CompararPlanilhas.xaml (11.7 KB)

Existem outras formas de fazer isso que podem ser mais rápidas dependendo do tamanho das planilhas, mas para casos simples essa opção geralmente é suficiente.

Olá,

Poderia realizar o exemplo com essas duas planilhas?

Alguns dados foram removidos, pois são informações de clientes. Por isso essas planilhas só contém duas colunas.

Mas basicamente quero verificar na Planilha FaleCom_Historico se não há nenhum número de protocolo igual na planilha FaleCom_Historico_Final que é a planilha que ao final de cada execução do robô é registrado na coluna status o resultado da utilização daquele número de protocolo. E após a comparação quero atualizar a planilha FaleCom_Historico somente com os dados únicos, essa planilha depois é utilizada pelo robô para verificar o número de protocolo e realizar as demais atividades.
Gostaria também que caso após a comparação a planilha contenha alguns dados em que o campo de status esteja com alguma informação preenchida, essa linha onde está a informação também seja removida uma vez que ela já foi utilizada anteriormente.

Tentei utilizar o merge data table para unir as informações da duas planilhas e depois tentei utilizar o remove duplicate row, porém não está removendo nenhum dado.

Sou iniciante no UiPath e por isso estou com dificuldades.

Obrigado.

FaleCom_Historico_.xlsx (11.1 KB)
FaleCom_Historico_Final.xlsx (11.5 KB)

Tentei utilizar o merge data table para unir as informações da duas planilhas e depois tentei utilizar o remove duplicate row, porém não está removendo nenhum dado.

Remove Duplicate Row só remove linhas se todas as colunas forem iguais, mas a coluna “Status” não é igual mesmo se a coluna “Protocolo” for.

Mas basicamente quero verificar na Planilha FaleCom_Historico se não há nenhum número de protocolo igual na planilha FaleCom_Historico_Final

Mesmo usando as planilhas que você anexou, o raciocínio é o mesmo: para cada linha da planilha FaleComHistorico, verifique se o protocolo existe na planilha FaleComHistoricoFinal.
Para isso, use a expressão FaleComHistoricoFinal.Select("Protocolo = "+LinhaFaleComHistorico("Protocolo").ToString), a qual tenta selecional, na planilha FaleComHistoricoFinal, linhas cuja coluna Protocolo tem o mesmo valor de protocoloca de cada linha da planilha FaleComHistorico.
Mais informações sobre o método Select(): https://docs.microsoft.com/pt-br/dotnet/api/system.data.datatable.select?view=netcore-3.1

E após a comparação quero atualizar a planilha FaleCom_Historico somente com os dados únicos

Uma opção é criar uma terceira tabela com a mesma estrutura da primeira (utilizando o método Clone()) para colocar as linhas não encontradas em FaleComHistoricoFinal.
Para atualizar a planilha FaleComHistorico apenas com dados únicos, primeiro é necessário limpar os dados existentes. Para isso, uma opção é utilizar a atividade Write Cell e sobrescrever todas as células existentes (exceto os nomes das colunas).
Depois, utilize a atividade Write Range para escrever os dados únicos.
Exemplo: CompararPlanilhas.zip (35.6 KB)

Uma sugestão: Para evitar apagar dados por engano, talvez seja mais seguro usar uma outra planilha apenas com os dados únicos ao invés de atualizar a mesma.

Acredito que a solução seja ler ambas as planilhas do excel armazenar ambas em data table, usurpar de dois for each row, encadeados. No primeiro for, você vai colocar a planilha de comparação, já no segundo as informações da planilha que deve ser filtrada, com base nisso vai conseguir comparar um ao outro e decidir qual direção tomar. Acredito que seja uma possível solução.

Funcionou @Mateus_Cruz e segui sua dica e estou utilizando outra planilha com os dados únicos.

Obrigado pela ajuda.

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.