Look up functie in VBA?

Status
Niet open voor verdere reacties.

Muller09

Nieuwe gebruiker
Lid geworden
29 jun 2017
Berichten
4
Wie kan mij helpen met de VBA formule voor het volgende:

Ik heb een databestand (excel) waar in kolom F diverse gebruikerscodes staan. Die data wordt elke week ververst. Daarom wil ik een kolom toevoegen, waarin de gebruikerscode wordt omgezet naar een naam. Dan hoef ik de codes / namen maar één keer goed te programmeren.

Kolom F ziet er bv als volgt uit:
A321 (=Henk)
A349 (=Jan)
B542 (=Piet)
A321 (=Henk)

Ik wil dan middels VBA, dat hij automatisch in dezelfde rij, de code omzet in een naam in kolom AJ.
 
Code:
Sub VenA()
  Dim f As Range, cl As Range
  For Each cl In Columns(6).SpecialCells(2)
    Set f = Blad2.Columns(1).Find(cl.Value)
      If Not f Is Nothing Then cl.Value = f.Offset(, 1).Value
  Next cl
End Sub
 
Dank voor je antwoord! Ik ben vandaag/morgen een weekend weg, maar ga het zondag gelijk testen! Dan hoor je jhet van me. Iig vast dank voor je reactie
 
of sneller

Code:
Sub M_snb()
  sn=Columns(6).SpecialCells(2).resize(,2)
  sp=columns(36).specialcells(2),resize(,2)

  For j=1 to ubound(sn)
    for jj=1 to ubound(sp)
      if sn(j,1)=sp(jj,1) then exit for
    next
    if jj<=ubound(sp) then sn(j,2)=sp(jj,2)
  Next
End Sub
 
Laatst bewerkt:
Zouden jullie je formule willen uitbreiden met de verwijzingen naar de codes?
Dus dat als kolom F de waarde 'A321' bevat, in kolom AJ 'Henk' komt te staan. En bv. Jan bij code A349.

Ik krijg het zo nog niet voor elkaar... En in de snellere variant zit nog een compileerfout in de volgende zin:
if sn(j,1)=sp(jj,) then exit for
 
Zie bijgevoegd. Ik krijg databestanden aangeleverd waarin de gebruikerscode van collega's staan. Maar voor leesbare management informatie, wil ik dat omzetten in namen. Dan kost me dat één keer wat tijd, om die namen te programmeren in VBA. En kan ik in de toekomst de data er gewoon overheen kopieren.

Het kan overigens ook zo zijn, dat er een leeg veld tussenstaan. Dan moet het veld met de naam ook gewoon leegblijven.

Zie bijgevoegd. De gebruikerscode (kolom F) krijg ik aangeleverd. In kolom K wil ik de naam.
En voor het voorbeeld:
A321 = Jan
A349 = Henk
B542 = Piet

Bekijk bijlage vb bestand.xlsxBekijk bijlage vb bestand.xlsx
 
Waarom met VBA? Je kan toch net zo goed een lijstje met codes en namen maken en dan verikaal zoeken gebruiken. Waarom staat er in F9 een spatie?

Het kan wel met code. Maar of het nu handig is als je het zelf niet begrijpt laat ik maar in midden.
bv.
Met 2 lusjes
Code:
Sub VenA()
  ar = Split("A321 A349 B542 Jan Henk Piet")
  ar1 = Range("F2:F" & Cells(Rows.Count, 6).End(xlUp).Row)
  For j = 1 To UBound(ar1)
    For jj = 0 To (UBound(ar) + 1) / 2
      If ar(jj) = ar1(j, 1) Then
        ar1(j, 1) = ar(jj + 3)
        Exit For
      End If
    Next jj
  Next j
  Range("K2").Resize(UBound(ar1)) = ar1
End Sub

of met Match
Code:
Sub VenA()
  ar = Split("A321 A349 B542 Jan Henk Piet")
  ar1 = Range("F2:F" & Cells(Rows.Count, 6).End(xlUp).Row)
  For j = 1 To UBound(ar1)
    If Application.IsNumber(Application.Match(ar1(j, 1), ar, 0)) Then ar1(j, 1) = ar(Application.Match(ar1(j, 1), ar, 0) + 2)
  Next j
  Range("K2").Resize(UBound(ar1)) = ar1
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan