Waarden vergelijken in een range

Status
Niet open voor verdere reacties.

Viking30

Gebruiker
Lid geworden
16 okt 2015
Berichten
10
Hallo,
Ik ben op zoek naar een VBA code die het volgende doet:

In het werkblad "Data" staan in kolom A de lidnummers van deelnemende leden.
Deze moeten vergeleken worden met de lidnummers die in het werkblad Ledenlijst" staan.

Als het lidnummer niet voorkomt in de ledenlijst, moet de gehele rij van het desbetreffende lidnummer uit het werkblad "Data" verwijderd worden.

Ter verduidelijking heb ik een aangepast excel-bestand toegevoegd.


Alvast bedankt.
 

Bijlagen

  • Ranking test.xls
    291,5 KB · Weergaven: 38
Ik denk dat ik morgen naar de opticien moet. :rolleyes:
 
@HSV,
Ledenlijst lukt toch nog wel?:shocked::d
 
Wat is er met de ledenlijst? :shocked::d
 
Voor zover ik kan zien is deze leeg.

Nb. Heb je een linkje waarin je dit soort vragen met een Union oplost?
 
Bekijk het geplaatste bestand maar eens.

@VenA,

Helaas heb ik nergens een linkje van.
Oplossingen bedenken is veel leuker dan overkalken.
 
Laatst bewerkt:
Hier is het excel bestand opnieuw
 

Bijlagen

  • Ranking test.xls
    287 KB · Weergaven: 27
In een standaard module plaatsen.
Code:
Sub hsv()
Dim cl As Range, c As Range, y As Long
With Sheets("Data").Range("A3:A1000")
    .AutoFilter 1, _
     Filter(Application.Transpose([if(ledenlijst!c5:c1000="","~",ledenlijst!c5:c1000)]), "~", False), xlFilterValues
 For Each cl In .Columns(1).SpecialCells(2)
   If cl.EntireRow.Hidden Then
       y = y + 1
     If y = 1 Then
         Set c = cl
      Else
         Set c = Union(c, cl)
      End If
    End If
 Next cl
If y > 0 Then c.EntireRow.Delete
.AutoFilter
End With
End Sub

Of:
Code:
Sub hsv_2()
Dim cl As Range, c As Range, y As Long
For Each cl In Sheets("data").Columns(1).SpecialCells(2).Offset(1)
 If IsError(Application.Match(cl, Sheets("ledenlijst").Columns(3), 0)) Then
   y = y + 1
     If y = 1 Then
         Set c = cl
      Else
         Set c = Union(c, cl)
      End If
    End If
 Next cl
If y > 0 Then c.EntireRow.Delete
End Sub
 
Laatst bewerkt:
Of ?

Code:
Sub M_snb()
  For Each cl In Sheets("data").Columns(1).SpecialCells(2).Offset(1)
     If IsError(Application.Match(cl, Sheets("ledenlijst").Columns(3), 0)) Then cl=""
  Next

  Sheets("data").Columns(1).SpecialCells(4).EntireRow.Delete
End Sub


@HSV

ipv
Code:
Filter(Application.Transpose([if(ledenlijst!c5:c1000="","~",ledenlijst!c5:c1000)]), "~", False)

Code:
Filter([transpose(if(ledenlijst!c5:c1000="","~",ledenlijst!c5:c1000))]), "~", False)
 
Laatst bewerkt:
Die is weer mooi @snb.
Niet aan gedacht om de cel leeg te maken.
Ik denk door de inbreng van @VenA die mij op een ander spoor zette.
 
@V&A

Code:
Sub M_snb()
   On Error Resume Next
   [A1:A20] = Application.Transpose(Array("aa1", "aa2", "", "", "", "aa6", "aa7", "aa8", "", "aa10", "", "", "aa13", "aa14", "aa15", "aa16", "", "", "", "aa20"))
   
   For Each cl In [A1:A20].SpecialCells(4)
       Set un = Union(un, cl)
       If Err.Number <> 0 Then Set un = cl
       Err.Clear
   Next
   
   un.Interior.ColorIndex = 4
End Sub
 
Ik denk door de inbreng van @VenA die mij op een ander spoor zette.
Heb ik toch een linkje van je gekregen:p

Door jouw code en de code van @snb begrijp ik wat ik verkeerd deed. Dus beiden hartelijk dank.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan