Notifications
Clear all

remover de valores duplicados em diversas abas ao mesmo temp

11 Posts
3 Usuários
0 Reactions
1,969 Visualizações
(@gpclouro)
Posts: 0
New Member
Topic starter
 

Pessoal,

estou com a seguinte dúvida: tenho uma planilha dividida em 6 abas, com 800 mil linhas em cada aba. Eu preciso saber se existe valor repetido em toda a planilha (considerando todas as abas ao mesmo tempo), caso existam preciso que os valores duplicados sejam removidos.

Tentei selecionando cada coluna de cada aba apertando o CRTL e cliquei em remover duplicada. Apareceu a seguinte mensagem "O comando escolhido não pode ser executado com várias seleções. Selecione apenas um intervalo e clique no comando novamente"

Existe alguma forma de conseguir realizar essa remoção de valores duplicados?

Desde já agradeço !

 
Postado : 17/02/2016 2:36 pm
(@mprudencio)
Posts: 0
New Member
 

Mesmo assim 6 abas para fazer uma de cada vez...

E tao ruim???

Escrever uma macro pra isso vai demorar mais que o tempo de processamento do proprio excel

 
Postado : 17/02/2016 5:38 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia gpclouro,

Esses valores repetidos estarão em uma coluna específica ou em qualquer lugar da planilha?
A remoção é da linha inteira ou somente da célula?
Caso seja da célula, ela deve ser deslocado para cima ou para a esquerda?
Caso tenha valor duplicado, qual vai ser o critério de prioridade? Qual deve permanecer e qual deve ser removido?

Qualquer coisa da o grito,
Abraço

 
Postado : 18/02/2016 6:15 am
(@gpclouro)
Posts: 0
New Member
Topic starter
 

Fala Bernardo, bom dia!
Seguinte, tenho uma planilha com 3 colunas:
código do produto, descrição do produto e código fiscal do produto. A origem foi um arquivo txt com 4 milhoes de linhas. Eu tenho uma macro que ao transportar para o excel, ele divide o arquivo em abas, pelo fato de ser tão extenso.
Ocorre que, preciso queria ter apenas uma linha para cada combinação de produto, ou seja: código do produto, descrição do produto e código fiscal do produto.
Existem vários casos em que essas informações se repetem em diversas linhas.
Estas informações estão nas três primeiras colunas, dividido em 6 abas da planilha.
A remoção será da linha inteira, deslocando para cima.
O critério de prioridade pode ser a remoção do primeiro valor repetido encontrado, assim sucessivamente!

Desde já agradeço pela atenção!
E, precisando de mais informações é só falar!!

Abração,

 
Postado : 18/02/2016 6:34 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

gpclouro, resumindo essa "combinação", apenas com a identificação do código do produto, caso seja localizado novamente já pode fazer a remoção ou existe a possibilidade de nesse arquivo ter o código repetido e as outras colunas terem informações diferentes?

Somente existem essas planilhas na pasta de trabalho ou existe alguma outra?
O nome dessas planilhas são fixos? Serão sempre 4?

 
Postado : 18/02/2016 6:41 am
(@gpclouro)
Posts: 0
New Member
Topic starter
 

Existe a possibilidade de ter o código de produto com informações diferentes nas outras colunas, por isso a necessidade de analisar as três informações.
Existe apenas estas planilhas na pasta de trabalho, e são 6 abas...

 
Postado : 18/02/2016 7:01 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

blz...

Cara... agarrei no serviço aqui de manhã...
Quando voltar do almoço eu começo a elaborar o código e se surgir alguma dúvida eu apareço aqui.

Qualquer coisa da o grito.
Abraço

 
Postado : 18/02/2016 8:39 am
(@gpclouro)
Posts: 0
New Member
Topic starter
 

Tá de boa Bernardo!!!! Sem pressa irmão!!! Brigadão mesmo pela ajuda!!

 
Postado : 18/02/2016 9:00 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Cara, quase não arrumo tempo para mexer nisso hoje também... Vê se ajuda:

Option Explicit

Public Sub RemoverDuplicados()
Dim wb          As Workbook
Dim wsIndex     As Worksheet
Dim wsFound     As Worksheet
Dim StartTime   As Double
Dim EndTime     As Double
Dim Key1        As String
Dim Key2        As String
Dim Col1        As Integer
Dim Col2        As Integer
Dim Col3        As Integer
Dim LinTop      As Long
Dim UltLindex   As Long
Dim UltLfound   As Long
Dim Counter     As Long
Dim i           As Long
Dim j           As Long
Dim k           As Long
Dim l           As Long

    StartTime = Timer
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    
    Col1 = 1 'Número da primeira coluna comparadora
    Col2 = 2 'Número da segunda coluna comparadora
    Col3 = 3 'Número da terceira coluna comparadora
    LinTop = 2 'Número da primeira linha sem contar o cabeçalho
    Counter = 0 'Início da contagem
    
    Set wb = ThisWorkbook
    
    For i = 1 To wb.Worksheets.Count
        Set wsIndex = wb.Worksheets(i)
        UltLindex = wsIndex.Cells(Rows.Count, 1).End(xlUp).Row
        
        For j = LinTop To UltLindex
        Key1 = wsIndex.Cells(j, Col1).Value & wsIndex.Cells(j, Col2).Value & wsIndex.Cells(j, Col3).Value
            wsIndex.Cells(j, Col1).Value = "#@#Index#@#" & wsIndex.Cells(j, Col1).Value
            wsIndex.Cells(j, Col1).Calculate
            
            For k = i To wb.Worksheets.Count
                Set wsFound = wb.Worksheets(k)
                UltLfound = wsFound.Cells(Rows.Count, 1).End(xlUp).Row
                
                For l = UltLfound To LinTop Step -1
                Key2 = wsFound.Cells(l, Col1).Value & wsFound.Cells(l, Col2).Value & wsFound.Cells(l, Col3).Value
                
                    If Key1 = Key2 Then
                        wsFound.Cells(l, 1).EntireRow.Delete
                        Counter = Counter + 1
                    End If
                Next l
                
            Next k
        
        wsIndex.Cells(j, Col1).Value = Replace(wsIndex.Cells(j, Col1).Value, "#@#Index#@#", "")
        wsIndex.Cells(j, Col1).Calculate
        Next j
        
    Next i
    
    Set wsIndex = Nothing
    Set wsFound = Nothing
    Set wb = Nothing

    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    
    EndTime = Timer
    MsgBox "Processo concluído com sucesso!" & vbNewLine & _
           "Foram localizados " & Counter & " registros em multiplicidade." & vbNewLine & _
           "Tempo do processamento: " & EndTime - StartTime & " segundos."
    
End Sub

Qualquer coisa da o grito.
Abraço

 
Postado : 22/02/2016 10:11 am
(@gpclouro)
Posts: 0
New Member
Topic starter
 

Caraca mano!!!!! Tu é sinistro.... rs.... é exatamente isso!!!

Se eu precisar utilizar para um arquivo com mais colunas eu preciso mexer na macro ne?

Abração irmão!! Brigadão

 
Postado : 23/02/2016 12:18 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

8-)

Mais "colunas comparadoras" ?
Sim, terá que mexer no código.

Qualquer coisa da o grito.
Abraço

 
Postado : 23/02/2016 12:24 pm