| 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... |
| | Macro para apagar linhas repetidas | |
| | Autor | Mensagem |
---|
pathfinder73
Mensagens : 35 Data de inscrição : 24/08/2012
| Assunto: Macro para apagar linhas repetidas Qui 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 | |
| | | alexandrevba
Mensagens : 1820 Data de inscrição : 13/07/2011 Localização : Serra - ES
| Assunto: Re: Macro para apagar linhas repetidas Qui 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 | |
| | | pathfinder73
Mensagens : 35 Data de inscrição : 24/08/2012
| Assunto: Macro para apagar linhas repetidas Qui 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 | |
| | | pathfinder73
Mensagens : 35 Data de inscrição : 24/08/2012
| Assunto: Macro para apagar linhas repetidas Qui 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 | |
| | | alexandrevba
Mensagens : 1820 Data de inscrição : 13/07/2011 Localização : Serra - ES
| Assunto: Re: Macro para apagar linhas repetidas Qui 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 | |
| | | pathfinder73
Mensagens : 35 Data de inscrição : 24/08/2012
| Assunto: Macro Sá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 | |
| | | alexandrevba
Mensagens : 1820 Data de inscrição : 13/07/2011 Localização : Serra - ES
| Assunto: Re: Macro para apagar linhas repetidas Dom Dez 07, 2014 4:18 am | |
| Boa noite!!
Eu fico feliz em ajudar, obrigado pelo retorno!!
Att | |
| | | Conteúdo patrocinado
| Assunto: Re: Macro para apagar linhas repetidas | |
| |
| | | | Macro para apagar linhas repetidas | |
|
Tópicos semelhantes | |
|
| Permissões neste sub-fórum | Não podes responder a tópicos
| |
| |
| |
|