VBA code voor omzetten naar getal en verticaal zoeken

Status
Niet open voor verdere reacties.

Ibeestje

Gebruiker
Lid geworden
30 jan 2019
Berichten
31
Hallo,

Ik heb een bestand 'HM detaillijst_medewerker' waarin een aanstellingsnummer staat in kolom D. Deze nummer komen overeen met de aanstellingsnummers in kolom A van het bestand 'HM Nationaliteit Medewerkers'
Er moeten twee dingen gedaan worden:
1. De personeelsnummers in het bestand 'HM Nationaliteit Medewerkers' (kolom A) moeten omgezet worden naar getal (zonder decimalen) voordat er van verticaal zoeken gebruik gemaakt kan worden.
2. In kolom F van de 'HM detaillijst_medewerker' moet de bijbehorende nationaliteit verschijnen door middel van Verticaal Zoeken.

Ik wil de waarden in kolom D als zoek argument bij verticaal zoeken gebruiken om in kolom B van het bestand 'HM Nationaliteit Medewerkers' de nationaliteit te kunnen opzoeken die bij het aanstellingsnummer hoort.
De namen van de bestanden kunnen wijzigen in de toekomst, vandaar dat ik dit als VBA code wil programmeren, in plaats van een macro op te nemen.

Weet iemand hoe ik dit makkelijk kan doen?

Alvast bedankt,
Ibeestje
 

Bijlagen

Hallo Ibeestje,

Het personeelsnmummer in het bestand "HM Nationaliteit Medewerkers" hoeft niet te worden omgezet voordat je gebruik kunt maken van verticaal zoeken.

Gebruik hiervoor:

Code:
=ALS.FOUT(VERT.ZOEKEN(TEKST(A2;"@");'[HM Nationaliteit Medewerkers.XLSX]Sheet1'!$A:$B;2;ONWAAR);"Niet bekend")

Je bent in mijn ogen kolom D van het bestand "HM Nationaliteit Medewerkers" niet nodig. Het aanstellingsnummer is een unieke nummer. (Bovendien waarmee wil je kolom D matchen/vergelijken?)
Persoonlijk zou ik geen gebruik maken van VBA voor deze relatief eenvoudige aanpassing van de formule. Ik weet dat dit geen antwoord is op je vraag, maar je past in mijn optiek eenvoudiger de formule aan dan dat je de VBA code aanpast. Het zijn maar twee handelingen die in mijn ogen nog geen minuut aan tijd kosten. Formule aanpassen, formule doortrekken.

Komen beide lijsten trouwens uit één applicatie? Anders zou je kunnen overwegen om in het rapport/export de nationaliteit (en eventueel andere kolommen) al toe te voegen.
 
Met beide bestanden in dezelfde map
Code:
Sub VenA()
  With GetObject(ThisWorkbook.Path & "\HM Nationaliteit Medewerkers.XLSX")
    ar = .Sheets(1).Cells(1).CurrentRegion
    .Close 0
  End With
  ar1 = Sheets("Detaillijst").Cells(1).CurrentRegion
  For j = 2 To UBound(ar1)
    For jj = 2 To UBound(ar)
      If CStr(ar1(j, 1)) = CStr(ar(jj, 1)) Then
        ar1(j, 6) = ar(jj, 2)
        Exit For
      End If
    Next jj
    If ar1(j, 6) = "" Then ar1(j, 6) = "Onbekend"
  Next j
  Sheets("Detaillijst").Cells(1).CurrentRegion = ar1
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan