Met autofilter waardes verwijderen uit meerdere tabbladen

Status
Niet open voor verdere reacties.

globe

Verenigingslid
Lid geworden
18 mrt 2001
Berichten
3.616
Ha Helpmij-ers

Ik heb een excel sheet met meerdere tabbladen waar data in staat.

Deze tabbladen hebben allemaal de naam van het desbetreffende merk

In mijn voorbeeld 'Merk 1'

In mijn excel is dat het derde tabblad en laat ik met onderstaande macro het tabblad opschonen, alles met Merk 2 wordt verwijderd.

Code:
 With ActiveWorkbook.Sheets(3) 
     For i = 5000 To 1 Step -1
         If .Cells(i, "E") <> "Merk 1" Then
             .Cells(i, "E").EntireRow.Delete
        End If
     Next i
 End With

Dit werkt prima, maar soms verspringen er tabbladen en deze functie is tijdrovend, hij loopt net zo lang tot de file schoon is.

Ik heb gestoeid met een autofilter script maar kom er niet uit.

Wie kan me op weg helpen?

Ik wil dus ipv van het nummer van het tabblad naar de naam van het tabblad verwijzen en via een autofilter de niet gewenste waarden verwijderen.

dank alvast,

Guido
 

Bijlagen

Code:
Sub hsv()
Dim sh As Worksheet
For Each sh In Sheets
 With sh.Cells(1).CurrentRegion
   .AutoFilter 5, "Merk 2"
   .Offset(1).EntireRow.Delete
   .AutoFilter
 End With
Next sh
End Sub
 
Volgens mij klopt het voorbeeldbestand niet geheel met de vraagstelling. Als je code gebruikt dan moet je het bestand opslaan als .xlsm of .xlsb anders ben je de code weer kwijt.

Als aanvulling op #2
Code:
Sub VenA()
  For Each sh In Sheets
    With sh.Cells(1).CurrentRegion
      .AutoFilter 5, "<>" & sh.Name
      .Offset(1).EntireRow.Delete
      .AutoFilter
    End With
  Next sh
End Sub
 
Hey beiden,

Voorbeeld bestand was inderdaad incompleet nu ik zo na lees. Ik heb inderdaad meerdere tabs, soms wel 10.
Alleen de merken die over moeten blijven zijn diegene die zoals de tab heten.

Ik hoef niks op te slaan, de opgeschoonde tabs worden dmv VBA als CSV weggeschreven namelijk.

De oplossing van VenA werkt vloeiend. Maar kan ik ook 2 tabbladen uitsluiten?
Daar wordt nu namelijk ook de data uit verwijderd.

Het gaat om de eerste 2 tabbladen of met de namen: 'Data_AV' en 'blad 1'

wederom bedankt!
 
Laatst bewerkt:
Om sheets uit te sluiten kan je zoiets gebruiken.
Code:
If InStr("blad 1Data_AV", sh.Name) = 0 Then
 
Code:
Sub VenA()

  For Each sh In Sheets
    With sh.Cells(1).CurrentRegion
    If InStr("Blad1Data_AV", sh.Name) = 0 Then
      .AutoFilter 5, "<>" & sh.Name
      .Offset(1).EntireRow.Delete
      .AutoFilter
      End If
    End With
  Next sh
End Sub

Topper ben je!

bovenstaande code doet exact wat ik wil.

bedankt.

Op naar het volgende vraagstuk... Maak ik een nieuw topic voor aan.
 
Laatst bewerkt:
Ik zou onderstaande regel een omhoog plaatsen,
Code:
If InStr("Blad1Data_AV", sh.Name) = 0 Then

En de
Code:
End If

een naar onderen.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan