2013-09-29 2 views
0

다음 두 테이블이 있습니다 (확률은 & Bets입니다).두 번째 열의 값을 찾으려면 vlookup

Table1

표 2 :

Table 2

나는 가격 열에서 같은 테이블 1에서 TRANSID과 표 2에서 TRANSID을 비교하고 일부 값을 검색하고 붙여 넣을 이 작업을 수행하기 위해 VBA 코드에 VLOOKUP 함수가 있습니다. 그러나 그것은 첫 번째 열 (oddsId)을 반복하고 따라서 잘못된 가격을 가져옵니다 (Vlookup이 항상 가장 왼쪽 열을 찾는 것처럼 기대됩니다. 잘못된 것이 아니라면).

하지만 TransId를 비교하여 가격 정보를 얻고 싶습니다.

=getprice(BetsTable[[#This Row],[TransId]],BetsTable[[#This Row],[Option]]) 

GetPrice의 코드 샘플 다음과 같은 : :

내 VBA 코드에서이 상황을 처리 할
Function GetPrice(transId, opt) 
Dim bettype As String 

opt = UCase(opt) 

bettype = Application.WorksheetFunction.VLookup(transId, Range("OddsTable5"), 3, False) 

If (bettype = "FT.HDP" Or bettype = "HT.HDP") Then 
    If (opt = "H") Then 
     GetPrice = Application.WorksheetFunction.VLookup(transId, Range("OddsTable5"), 14, False) 
    ElseIf (opt = "A") Then 
     GetPrice = Application.WorksheetFunction.VLookup(transId, Range("OddsTable5"), 15, False) 
    Else 
     GetPrice = "Error" 
    End If 

(getPrice 기능)

가격 열에는 공식을 사용합니다. 이 문제를 해결할 방법이 있습니까?

답변

0

첫 번째 열을 제거하여 사용할 VLookup의 범위를 계산합니다.

dim odds_range as range 
with Range("OddsTable5") 
    set odds_range = Range(.Cells(1,2), .Cells(.Rows.Count, .Columns.Count)) 
end with 

... 

GetPrice = Application.WorksheetFunction.VLookup(transId, odds_range, 14, False) 
+0

이 코드를 사용해도 동일한 오류가 발생합니다. 참조 용 시트 이미지를 포함하도록 내 게시물을 편집했습니다. .Cell (1,2)가 2 열을 가리 킵니까? – Shan

+0

예. 상단의 노란색 막대가 범위에 포함 된 병합 된 셀이면 작동하지 않습니다. 'OddsTable5'는 헤더가 있거나없는 테이블 만 포함해야합니다. – GSerg

관련 문제