Fórum Excel Bácico, Avançado e Vba
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Fórum Excel Bácico, Avançado e Vba

Este fórum é destina a usuário de Excel, que queiram compartilhar informações a básicas, avançadas e programação em VBA...
 
InícioInício  Últimas imagensÚltimas imagens  ProcurarProcurar  RegistarRegistar  Entrar  

 

 Macro para apagar linhas repetidas

Ir para baixo 
2 participantes
AutorMensagem
pathfinder73




Mensagens : 35
Data de inscrição : 24/08/2012

Macro para apagar linhas repetidas Empty
MensagemAssunto: Macro para apagar linhas repetidas   Macro para apagar linhas repetidas EmptyQui Dez 04, 2014 1:29 am

Boa noite,

Estou tentando criar um macro em Excel.

Idéia:
1. Localizar a última linha da planilha
2. Posicionar na célula na primeira coluna da última linha
3. Validar o texto da célula. Se for um determinado texto, apagar a linha. Se não for, validar a célula da coluna ao lado. Se for um determinado valor, apagar a linha. Se não for, posicionar na célula na linha naterior, na primeira coluna.
4. Executar o loop até atingir a linha 16.


O que digitei e deu errado até gora foi isso (sem os underlines, claro):

For i = Cells(Rows.Count, "A").End(xlUp).Row To 16 Step -1
___Range(i, 1).Select
___If ActiveCell.Value = "POSIÇÃO GERAL DO CLIENTE" Then
______ActiveCell.EntireRow.Delete
___Else
______Range(i, 2).Select
______If ActiveCell.Value = "Data Base:" Then
_________ActiveCell.EntireRow.Delete
______End If
___End If
Next i
Ir para o topo Ir para baixo
alexandrevba

alexandrevba


Mensagens : 1820
Data de inscrição : 13/07/2011
Localização : Serra - ES

Macro para apagar linhas repetidas Empty
MensagemAssunto: Re: Macro para apagar linhas repetidas   Macro para apagar linhas repetidas EmptyQui Dez 04, 2014 3:28 pm

Bom dia!!

Uma forma não atraente seria:
Código:
Sub AleVBA_951()
    Dim c As Range
    Dim SrchRng As Range
    Dim SrchStr As String
   
   
    Set SrchRng = ActiveSheet.Range("A16", ActiveSheet.Range("A65536").End(xlUp))
    SrchStr = "POSIÇÃO GERAL DO CLIENTE"
    Do
        Set c = SrchRng.Find(SrchStr, LookIn:=xlValues)
        If Not c Is Nothing Then c.EntireRow.Delete
    Loop While Not c Is Nothing

    'Parte2
    Set SrchRng = ActiveSheet.Range("B16", ActiveSheet.Range("B65536").End(xlUp))
    SrchStr = "Data Base:"
    Do
        Set c = SrchRng.Find(SrchStr, LookIn:=xlValues)
        If Not c Is Nothing Then c.EntireRow.Delete
    Loop While Not c Is Nothing
   
   
End Sub
Citação :
Se não for, posicionar na célula na linha naterior, na primeira coluna.
eu não entendi.
Att
Ir para o topo Ir para baixo
pathfinder73




Mensagens : 35
Data de inscrição : 24/08/2012

Macro para apagar linhas repetidas Empty
MensagemAssunto: Macro para apagar linhas repetidas   Macro para apagar linhas repetidas EmptyQui Dez 04, 2014 4:04 pm

Ops... digitei mesmo errado... é assim:

Idéia:
1. Localizar a última linha da planilha
2. Posicionar na célula na primeira coluna da última linha
3. Validar o texto da célula. Se for um determinado texto, apagar a linha. Se não for, validar a célula da coluna ao lado. Se for um determinado valor, apagar a linha.
4. Posicionar na célula da linha anterior, na primeira coluna.
4. Executar o loop até atingir a linha 16.

É possível de outra forma referenciar um Range usando o valor de uma variável? Pensei em criar uma string para referenciar o Range, mas como adicionar aspas no conteúdo da string?


alexandrevba escreveu:
Bom dia!!

Uma forma não atraente seria:
Código:
Sub AleVBA_951()
    Dim c As Range
    Dim SrchRng As Range
    Dim SrchStr As String
    
    
    Set SrchRng = ActiveSheet.Range("A16", ActiveSheet.Range("A65536").End(xlUp))
    SrchStr = "POSIÇÃO GERAL DO CLIENTE"
    Do
        Set c = SrchRng.Find(SrchStr, LookIn:=xlValues)
        If Not c Is Nothing Then c.EntireRow.Delete
    Loop While Not c Is Nothing

     'Parte2
    Set SrchRng = ActiveSheet.Range("B16", ActiveSheet.Range("B65536").End(xlUp))
    SrchStr = "Data Base:"
    Do
        Set c = SrchRng.Find(SrchStr, LookIn:=xlValues)
        If Not c Is Nothing Then c.EntireRow.Delete
    Loop While Not c Is Nothing
    
    
End Sub
Citação :
Se não for, posicionar na célula na linha naterior, na primeira coluna.
eu não entendi.
Att
Ir para o topo Ir para baixo
pathfinder73




Mensagens : 35
Data de inscrição : 24/08/2012

Macro para apagar linhas repetidas Empty
MensagemAssunto: Macro para apagar linhas repetidas   Macro para apagar linhas repetidas EmptyQui Dez 04, 2014 4:38 pm

Alexandre, fiz assim e funcionou... Aleluia! Tem como ficar mais enxuto o código:

....For i = Cells(Rows.Count, "A").End(xlUp).Row To 16 Step -1
........If Cells(i, 1).Value = "POSIÇÃO GERAL DO CLIENTE" Or Cells(i, 1).Value = "BB" Or Cells(i, 1).Value = "CP" Then
............Cells(i, 1).EntireRow.Delete
........Else
............If Cells(i, 2).Value = "Data Base:" Or Cells(i, 2).Value = "Banco:" Or Cells(i, 2).Value = "Limite Crédito:" Or Cells(i, 2).Value = "Tipo Cliente:" Or Cells(i, 2).Value = "Tipo de Garantia:" Or Cells(i, 2).Value = "Índice:" Or Cells(i, 2).Value = "Resumo de Bloqueio de Cobrança:" Then
................Cells(i, 2).EntireRow.Delete
............End If
........End If
....Next i


pathfinder73 escreveu:
Ops... digitei mesmo errado... é assim:

Idéia:
1. Localizar a última linha da planilha
2. Posicionar na célula na primeira coluna da última linha
3. Validar o texto da célula. Se for um determinado texto, apagar a linha. Se não for, validar a célula da coluna ao lado. Se for um determinado valor, apagar a linha.
4. Posicionar na célula da linha anterior, na primeira coluna.
4. Executar o loop até atingir a linha 16.

É possível de outra forma referenciar um Range usando o valor de uma variável? Pensei em criar uma string para referenciar o Range, mas como adicionar aspas no conteúdo da string?


alexandrevba escreveu:
Bom dia!!

Uma forma não atraente seria:
Código:
Sub AleVBA_951()
    Dim c As Range
    Dim SrchRng As Range
    Dim SrchStr As String
    
    
    Set SrchRng = ActiveSheet.Range("A16", ActiveSheet.Range("A65536").End(xlUp))
    SrchStr = "POSIÇÃO GERAL DO CLIENTE"
    Do
        Set c = SrchRng.Find(SrchStr, LookIn:=xlValues)
        If Not c Is Nothing Then c.EntireRow.Delete
    Loop While Not c Is Nothing

     'Parte2
    Set SrchRng = ActiveSheet.Range("B16", ActiveSheet.Range("B65536").End(xlUp))
    SrchStr = "Data Base:"
    Do
        Set c = SrchRng.Find(SrchStr, LookIn:=xlValues)
        If Not c Is Nothing Then c.EntireRow.Delete
    Loop While Not c Is Nothing
    
    
End Sub
Citação :
Se não for, posicionar na célula na linha naterior, na primeira coluna.
eu não entendi.
Att
Ir para o topo Ir para baixo
alexandrevba

alexandrevba


Mensagens : 1820
Data de inscrição : 13/07/2011
Localização : Serra - ES

Macro para apagar linhas repetidas Empty
MensagemAssunto: Re: Macro para apagar linhas repetidas   Macro para apagar linhas repetidas EmptyQui Dez 04, 2014 9:33 pm

Boa tarde!!

Use um Array, para inserir quantos criterios desejar.
Código:
SubAleVBA_951V2()
    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
    End With
   
    For Each cell In Range("A16:A2000")
        Select Case cell.Value
        Case "POSIÇÃO GERAL DO CLIENTE", "BB", "CP"
            cell.EntireRow.Delete
        End Select
    Next cell
   
    For Each cell In Range("B16:B2000")
        Select Case cell.Value
        Case "Data Base:", "Data Base:", "Banco:"
            cell.EntireRow.Delete
        End Select
    Next cell
   
    With Application
        .ScreenUpdating = True
        .DisplayAlerts = True
    End With
End Sub

Att
Ir para o topo Ir para baixo
pathfinder73




Mensagens : 35
Data de inscrição : 24/08/2012

Macro para apagar linhas repetidas Empty
MensagemAssunto: Macro   Macro para apagar linhas repetidas EmptySáb Dez 06, 2014 2:09 pm

É isso mesmo. Matou a pau.

alexandrevba escreveu:
Boa tarde!!

Use um Array, para inserir quantos criterios desejar.
Código:
SubAleVBA_951V2()
    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
    End With
    
    For Each cell In Range("A16:A2000")
        Select Case cell.Value
        Case "POSIÇÃO GERAL DO CLIENTE", "BB", "CP"
            cell.EntireRow.Delete
        End Select
    Next cell
    
    For Each cell In Range("B16:B2000")
        Select Case cell.Value
        Case "Data Base:", "Data Base:", "Banco:"
            cell.EntireRow.Delete
        End Select
    Next cell
    
    With Application
        .ScreenUpdating = True
        .DisplayAlerts = True
    End With
End Sub

Att
Ir para o topo Ir para baixo
alexandrevba

alexandrevba


Mensagens : 1820
Data de inscrição : 13/07/2011
Localização : Serra - ES

Macro para apagar linhas repetidas Empty
MensagemAssunto: Re: Macro para apagar linhas repetidas   Macro para apagar linhas repetidas EmptyDom Dez 07, 2014 4:18 am

Boa noite!!

Eu fico feliz em ajudar, obrigado pelo retorno!!

Att
Ir para o topo Ir para baixo
Conteúdo patrocinado





Macro para apagar linhas repetidas Empty
MensagemAssunto: Re: Macro para apagar linhas repetidas   Macro para apagar linhas repetidas Empty

Ir para o topo Ir para baixo
 
Macro para apagar linhas repetidas
Ir para o topo 
Página 1 de 1
 Tópicos semelhantes
-
» Macro para copiar para values
» Macro para
» Macro - Construir uma macro para inserir valores em um RANGE
» Macro para passar valores de um livro para outro
» Macro para editar link

Permissões neste sub-fórumNão podes responder a tópicos
Fórum Excel Bácico, Avançado e Vba :: Avançado/VBA :: Excel Avançado/VBA-
Ir para: