2013-09-29 152 views
0

我有以下2個表格(賠率&投注)。vlookup在第二列中查找值

表1

Table1

表2:

Table 2

我想從表2 TRANSID從表1比較TRANSID和檢索一些值,並粘貼在價格列相同在表2中。 我在我的VBA代碼中有一個VLOOKUP函數來完成這項工作。然而,它迭代通過第一列(oddsId),因此提取錯誤的價格(希望這是預期的,因爲Vlookup總是尋找最左邊的列,如果我沒有錯的話)。

但我想比較兩個TransId來獲取價格信息。

價格列使用公式:

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

下面是用getPrice代碼示例:

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 

我要處理我的VBA代碼此情況下(用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