2017-10-02 3 views
0

J'essaie de créer une macro pour effectuer la vlookup dans Excel. J'ai réussi à créer et le code fonctionne bien! Le code ci-dessous:La plage de fonctions VLookup dans Excel à l'aide de la macro

ActiveCell.FormulaR1C1 = _ "=VLOOKUP(RC[-1],LW0640!R2C8:R12163C9,2,TRUE)" Selection.AutoFill Destination:=Range("D6:D6098")

Cependant, je trouve que la gamme est la gamme de correctifs. qui est de D6: D6098 sur le résultat et R2C8: R12163C9 de la source.

Et cela ne fonctionnera pas si la plage de données change. Je veux savoir comment faire la gamme pour la fonction vlookup depuis le début jusqu'à la dernière rangée de la gamme. S'il vous plaît aider!

Répondre

0

Vous pouvez utiliser le type de notation "A1". Dans votre cas, vous voulez la colonne 8 et 9, qui sont respectivement H et I, de sorte que vous pouvez écrire:

ActiveCell.FormulaR1C1 = _ 
"=VLOOKUP(RC[-1],LW0640!H:I" & MyCols & ",2,TRUE)" 
Selection.AutoFill Destination:=Range("D6:D6098") 
+0

voulez-vous dire qu'il va sélectionner toute la ligne dans les colonnes H et I? –

+0

oui, mais je ne suis pas sûr que cela fonctionne avec les anciennes versions d'Excel ... –

0

Vous pouvez utiliser ce code.

Sheets("LW0640").Select 
Range("D6:D6098").Select 
    ActiveWorkbook.Names.Add Name:="tablex", RefersToR1C1:= _ 
     "=LW0640!R6C4:R6098C4" 


'Range("F28").Select 
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],tablex,2,TRUE)" 
-1

Essayez

Sub Demo() 
    Dim ws As Worksheet 
    Dim LastRow As Long 

    Set ws = ThisWorkbook.Sheets("Sheet1") 'change Sheet1 to your data sheet 
    With ws 
     LastRow = .Range("H" & .Rows.Count).End(xlUp).Row 
     .Range("D6:D" & LastRow).Formula = "=VLOOKUP(C6,LW0640!$H$2:$I$" & LastRow & ",2,TRUE)" 
    End With 
End Sub 

Vous devriez éviter d'utiliser SELECT et ACTIVE. Voir this pour plus de détails.