19. februar 2013 - 20:29Der er
14 kommentarer og 1 løsning
Excel VBA - loop gennem range og kør vlookup
Jeg har 3 kolonner med data. Med vba vil jeg loope gennem den første kolonnne. Hvis kolonne 1 er True på givets kritie, vil jeg udfylde kolonne 3 samme række med resultatet af en vlookup på kolonne 2. Jeg kan ikke få Vlookup til at fungere. Koden er: For i = maxRow To 1 Step -1 If (InStr(UCase(.Cells(i, 1)), "US") > 0) Then Worksheets("Output").Cells(i, 3).Value = Application._ WorksheetFunction.VLookup(Worksheets("Output").Cells(i, 2), USStates, 2, False) End If Next i End With
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
jeg er ikke sikker, men er USStates, ikke et navngivet område, så skal det vist nok i "".
Worksheets("Output").Activate For i = maxRow To 1 Step -1 If (InStr(UCase(.Cells(i, 1)), "US") > 0) Then Cells(i, 3).Value = Application. _ WorksheetFunction.VLookup(Cells(i, 2), "USStates", 2, False) End If Next i End With
Jeg får desværre fortsat 'run time error' på koden som nu ser således ud: For i = maxRow To 1 Step -1 If (InStr(UCase(.Cells(i, 1)), "US") > 0) Then Cells(i, 3).Value = Application.WorksheetFunction.VLookup(Cells(i, 2), Range("USStates"), 2, False) End If Next i End With Jeg har checket named range og den virker med almindelig formel i celle.
Skriv en opslagsværdi i en celle og klik så ind i cellen til højre for den. kør så makroen, så skal den finde opslagsværdien og skrive den i den celle du står i.
Public Sub test() ActiveCell = Application.WorksheetFunction.VLookup(ActiveCell.Offset(0, -1), Range("USStates"), 2, False) End Sub
Yes - det virker også. Når jeg F8 igennem, fejler koden, når den skal laver lookup på en værdi, der ikke er i named range. Ved du om jeg kan komme omkring det?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.