2017-04-12 8 views
-1

は、シートをエクセルが、それはそれを取得していないように私のコードが正しいかどうか私は疑問に思って:VLOOKUPマクロ

Sheets("Details").Cells(rrow, 9).Value = Application.WorkSheetsFunc.VLookup(Cells(rrow, 4).Value, Sheets("Address").Range("G5693:G5843"), 3, False) 

誰もが知っています構文が正しいか、私のコードに何か問題がありますか?

+1

'WorkSheetsFunc' ?? 'WorksheetFunction'、ちょうどTypo、' Cells(rrow、4).Value'を 'Worksheet'で修飾することを忘れないでください –

+1

検索範囲は単一の列ですが、3列目の結果を探していますルックアップ範囲の –

+0

@MarkFitzgerald Range( "A5693:L5843")に変更しましたが、subscriptが範囲外ですと言うエラーが表示されます – decemberrobot

答えて

2

いくつかの提案:

シートを参照してルックアップ値セル(rrow、4).Valueのを修飾します。このセルが属するシートはどれですか?それ以外の場合は、アクティベートシートのみを参照します。 また、コード内でrrowがnullでないことを確認してください。

VLookUpを使用して値を取得する場合は、まずルックアップ値がルックアップ列にあるかどうかを確認し、必要な場合はVlookupを実行して目的の値を取得します。 lookup_tableがRange( "A5693:L5843")であることを考慮すると、ルックアップ値は最初の列、この場合はRange( "A5693:A5843")に存在する必要があります。

If Application.CountIf(Sheets("Address").Range("A5693:A5843"), Cells(rrow, 4).Value) > 0 Then 
    Sheets("Details").Cells(rrow, 9).Value = Application.WorkSheetsFunc.VLookup(Cells(rrow, 4).Value, Sheets("Address").Range("G5693:G5843"), 3, False) 
End If