2014-07-27 1 views
1

완전히 막혔습니다! 이전에 내 결과를 얻기 위해 아래의 vlookup VBA를 사용했습니다. 예를 들어
:응용 프로그램 Worksheet 함수 VLookup 두 번째 변수

Worksheets("Part Numbers").Cells(i + 1, 2) = _ 
       "=VLOOKUP(RC[-1],'Supplier'!C[-2]:C[1],3,0) 

는 지금 결과 (숫자)이 아닌 기능을 포함하는 셀의 순서를 응용 프로그램 워크 시트 함수를 사용해야합니다. 나는이 프로그램을 실행할 때

If IsError(Worksheets("Part Numbers").Cells(i + 1, 3)) Then 

    Worksheets("Part Numbers").Cells(i + 1, 3) = "NA" 

End If 

내가 얻을 :

For i = 3 To LR ' last row 
    LUvalue = Worksheets("Part Numbers").Cells(i + 1, 2) 
    Worksheets("Part Numbers").Cells(i + 1, 3) = _ 
     Application.WorksheetFunction.VLookup(LUvalue, [Supplier_Range], 3, False) 
Next I 

에서 또한 내가 지정되지 않은 경우이 언젠가 문제가 발생할 수 있다는 것을 읽고으로 아래의 오류 문을 포함했다 : 여기에 지금까지 무엇을 가지고 오류 '워크 시트 기능 클래스의 vlookup 속성을 가져올 수 없습니다.' 디버깅 할 때 내 LUValue 단순히 옳지 않은 것을 볼 수 있습니다. 본질적으로 이것은 VLOOKUP을 넣고있는 셀의 왼쪽에있는 셀이어야합니다. 나는 또한 내 LUValue 오프셋을 사용하여 시도하고 여전히 그 중 하나를 작동시킬 수 없습니다. 나는 조회 값이 내가 잘못 가고있는 곳이라고 생각하지만 정직하게는 내 눈을 똑바로 본다.

누군가가 조언이나 조언을 제공 할 수 있다면 크게 감사하겠습니다.

+0

당신이 골 B에 공식을 옮기고 : 다음 블록에서 당신이 골 B에서'LUvalue'을 읽고 골 C.에 조회 결과를두고있어 열 레이아웃이 변경 되었습니까? –

+0

예 죄송합니다. 몇 가지 시도를하고 테스트 할 열을 두 개 추가했습니다. 나는 그것을 올바르게 청소하지 않았다. – Kel

답변

1

테스트되지 않은 :

첫 번째 코드 블록에서
Dim sht As WorkSheet, res 

Set sht = Worksheets("Part Numbers") 

For i = 3 To LR ' last row 
    LUvalue = sht.Cells(i + 1, 2).Value 

    'adjust Supplier range to suit... 
    res = Application.Vlookup(LUvalue, _ 
           Worksheets("Supplier").Range("A:D"), _ 
           3, False) 

    sht.Cells(i + 1, 3).Value = Iif(iserror(res),"NA", res) 

Next i