2016-05-23 6 views
0

worksheetfunction.Vlookupを使用しようとするとエラーが発生します。エラーは次のように与えられる:WorksheetFunction.Vlookupおよびランタイムエラー1004

ランタイムエラー1004(アプリケーション定義またはオブジェクト定義エラー)

エラーが「G」のコードで起こります。私のコードは次のとおりです。

Sub Rankings() 

Dim f As Variant 
Dim n As Variant 
Dim h As Variant 
Dim e As Integer 
Dim d As Integer 
Dim c As Integer 
Dim g As Variant 

d = 2 
e = 2 

While d < 7 

    c = 2 
    Worksheets("Sheet1").Activate 

    While Cells(c, 1) <> vbNullString 
     n = Right(Cells(c, 1), Len(Cells(c, 1)) - 1) 
     h = Worksheets("Sheet2").Cells(Worksheets("Sheet2").Rows.Count, e).End(xlUp).Row 
     g = WorksheetFunction.VLookup(n, Worksheets("Sheet2").Range(Cells(3, e - 1), Cells(h, e)), 2, False) 
     f = WorksheetFunction.Rank_Eq(g, Worksheets("Sheet2").Range(Cells(3, e), Cells(h, e)), 1) 
     If Not IsError(f) Then 
      Cells(c, d) = f 
     Else 
      Cells(c, d) = WorksheetFunction.Max(Worksheets("Sheet2").Range(Cells(3, e), Cells(h, e)) + 1) 
     End If 

    Wend 
Wend 

End Sub 

は基本的に、私は何をしようとしていることは、関連するゴルファーに対応し、シート2、列2の値をランク付けし、シート1に列2のセルにそれらを置くことです。

エラーを解決する方法の提案はありますか?

Sheet2 information Sheet1 information

+0

'C'がインクリメントされませんか? – findwindow

+0

c、d、およびeは、異なる量だけインクリメントされます。しかし、現状ではエラーが発生しており、インクリメント要素を処理する前に、最初のインスタンスでコードをテストしようとしていました。 – Clauric

+1

@ScottCraner Vlookupでは、大文字と小文字は区別されません。 – teylyn

答えて

4

一般的なエラー。 Sheet1をアクティブにすると、Sheet2にある範囲でvlookupを実行しようとします。もつとも

g = WorksheetFunction.VLookup(n, Worksheets("Sheet2").Range(Cells(3, e - 1), Cells(h, e)), 2, False)

、VLOOKUPへのパラメータは、セルを使用しているとして、あなたが構築し、あなたの範囲は、アクティブシート(シート1)を呼び出します。

そうのように、多くの場合、シート間の切り替え時にワークシートへのハンドルを取得することをお勧めします:

Dim ws1 As Worksheet 
Dim ws2 As Worksheet 
set ws1 = Worksheets("Sheet1") 
set ws2 = Worksheets("Sheet2") 

あなたが好きです必要があります。

g = WorksheetFunction.VLookup(n, ws2.Range(ws2.Cells(3, e - 1), ws2.Cells(h, e)), 2, False) 
関連する問題