• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

rij verwijderen als waarden kolom x niet gevonden worden in kolom y of z

Status
Niet open voor verdere reacties.

scaff

Nieuwe gebruiker
Lid geworden
17 nov 2017
Berichten
3
Beste iedereen,

Ik heb een excel bestand met meerdere sheets. In sheet 1 waarden staan in kolom y en z, als die waarden niet in sheet 2 kolom x staan wil ik de betreffende rij in sheet 2 verwijderen. Na een beetje speurwerk heb ik deze macro gevonden:

Code:
Sub Demo()
Dim Rng As Range, List As Object, Rw As Long
Set List = CreateObject("Scripting.Dictionary")
With Sheets("Sheet2")
  For Each Rng In .Range("A1", .Range("A" & Rows.Count).End(xlUp))
    If Not List.Exists(Rng.Value) Then
      List.Add Rng.Value, Nothing
    End If
  Next
End With
With Sheets("Sheet1")
  For Rw = .Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1
    If Not List.Exists(.Cells(Rw, "A").Value) Then
      .Rows(Rw).Delete
    End If
  Next
End With
Set List = Nothing
End Sub

Nu is mijn vraag, hoe kan ik deze code aanpassen zodat de waarden van kolom x tegenover kolom y en z vergeleken worden? Is het in dit geval makkelijker de macro aan te passen of de waarden van kolom y en z samen te voegen in een nieuwe kolom?

Ik hoop dat deze vraag op de juiste plek gesteld is, zo niet dan bij dezen mijn excuses!

Groetjes
 
Welkom op het forum.
Je vraag is op de juiste plek gesteld. Als je nog een representatief voorbeeld-excelbestand uploadt word je zeker geholpen.
 
Top! Ik heb hier een heel erg basic voorbeeldbestand geupload:

https://www.scribd.com/document/364697743/voorbeeldexcel

Als de waarde in sheet 2 column a niet voorkomt in sheet 1 column a of b, moet de betreffende rij in sheet 2 verwijderd worden.

Als alternatief, mocht het makkelijker zijn, zijn alle waarden van sheet 1 column a en b on elkaar gezet in column d. Als de waarde in sheet 2 column a niet voorkomt in sheet 1 column d, moet de betreffende rij in sheet 2 verwijderd worden.
 
Je kunt bestanden op dit forum uploaden. Kies voor Ga geavanceerd in plaats van Snel reageren.
Ik adviseer daarnaast om toch iets meer werk te maken van je voorbeeld. Dit is een beetje te basic.
Als ik het goed begrijp wil je op blad2 alleen rijen overhouden met een sleutelwaarde die voorkomt op blad1.
 
Laatst bewerkt:
Klopt helemaal!

Heb een iets uitgebreidere versie bijgevoegd. Alle rijen van blad 2 waar de waarde van kolom A niet gevonden wordt in blad 1 kolom B of C (of I waar de waarden van B en C onder elkaar staan) wil ik verwijderd hebben, om zodoende een bestand over te houden waar wel mee te werken valt en niet 1048576 rijen bevat.
 

Bijlagen

  • voorbeeldexcelhelpmij.xlsx
    14,7 KB · Weergaven: 17
Test onderstaande macro eens. Hulpkolom I is niet nodig.
Code:
Sub tsh()
    Dim vR2, vR3
    Dim i As Long
    
    With Sheets("Sheet1").Cells(1).CurrentRegion
        vR2 = .Offset(, 1).Resize(, 1)
        vR3 = .Offset(, 2).Resize(, 1)
    End With
    With Sheets("Sheet2")
        For i = .Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
            If IsError(Application.Match(.Cells(i, 1), vR2, 0)) And IsError(Application.Match(.Cells(i, 1), vR3, 0)) Then .Rows(i).Delete
        Next
    End With
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan