2017-10-02 23 views
0

Excelでvlookupを実行するマクロを作成しようとしています。私は作成に成功し、コードは正常に動作しています! 以下のようにコード:マクロでExcelのVLookup関数の範囲

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

しかし、私は範囲が修正範囲であることを見出しました。結果はD6:D6098、ソースはR2C8:R12163C9です。

データ範囲が変更されても機能しません。 vlookup関数の範囲を最初から範囲の最後の行までにする方法を知りたい。 助けてください!

答えて

0

表記の「A1」タイプを使用できます。あなたのケースでは、それぞれHおよびIある列8と9を、したいので、あなたは、次のように記述することができます

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

これは、列HとIのすべての行を選択することを意味しますか? –

+0

はい、しかし、古いバージョンのExcelで動作するかどうかはわかりません... –

0

あなたはこのコードを使用することができます。

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

はあなたがSELECTACTIVEを使用しないでください

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 

を試してみてください。詳細については、thisを参照してください。

関連する問題