
Tenho cinco folhas em um documento. A primeira planilha contém as linhas que contêm valores na primeira coluna. Preciso excluir todas as linhas do restante das planilhas que possuem o mesmo valor na primeira coluna, correspondendo ao valor da primeira coluna da primeira planilha. O problema é que há muitos registros com valores de coluna diferentes que deveriam ser excluídos. Como posso simplesmente pesquisar todas as linhas que contêm os valores da primeira planilha (ou em comum à primeira planilha) e excluí-las?
Responder1
Percorrer cada valor na coluna A da Planilha1 e usar esse valor para filtrar as 4 planilhas restantes deve fornecer os resultados que você está procurando.
Sub remove_from_2_to_5()
Dim var As Variant, w As Long, rw As Long
With Sheets(1)
For rw = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
If Not IsEmpty(.Cells(rw, 1)) Then
var = .Cells(rw, 1).Value
For w = 2 To 5
With Sheets(w).Cells(1, 1).CurrentRegion
.AutoFilter
.AutoFilter field:=1, Criteria1:=var
With .Offset(1, 0).Resize(.Rows.Count, .Columns.Count)
If CBool(Application.Subtotal(103, .Columns(1))) Then
.SpecialCells(xlCellTypeVisible).EntireRow.Delete
End If
End With
.AutoFilter
End With
Next w
End If
Next rw
End With
End Sub
À medida que o primeiro loop For/Next desce pela coluna A da Plan1, ele registra o valor que encontra. Isso é usado em cada uma das planilhas restantes como critério em uma .AutoFilter
operação. Se houver células aparecendo após a aplicação do filtro, as linhas serão excluídas.
Responder2
Insira uma coluna em cada planilha para verificar se o valor da primeira coluna ocorre na primeira planilha: =iferror(match(a2,sheet1!a:a,0)>0,false)
Você obterá true
as linhas com a primeira coluna ocorrendo na primeira planilha, filtrará e excluirá.
Se você tiver várias planilhas e precisar de uma solução ainda mais rápida, precisará de uma macro.