2015-09-20 35 views
0

我需要從數據表中查找數據表中的值(列1的最後8個字符爲&)。如果找到匹配項,則數組的相應值列2需要填充到工作表中的第9列。當我運行我的代碼時,沒有錯誤,但沒有任何內容返回到第9列。匹配圖紙到數組的值,並在找到匹配的情況下返回對應的值

請幫我解決我的代碼問題。非常感謝您的參與。

Sub LookupValues() 

Dim LastRow, i As Long 
Dim GeneCheck As String 
Dim vArr As Variant 
Dim x 

LastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Row 

vArr = Array(Array("HD300_QCL861Q", "5"), _ 
Array("HD300_QCE746_E749del", "5"), _ 
Array("HD300_QCL858R", "5"), _ 
Array("HD300_QCT790M", "5"), _ 
Array("HD300_QCG719S", "5"), _ 
Array("HD200_QCV600E", "10.5"), _ 
Array("HD200_QCD816V", "10"), _ 
Array("HD200_QCE746_E749del", "2"), _ 
Array("HD200_QCL858R", "3"), _ 
Array("HD200_QCT790M", "1"), _ 
Array("HD200_QCG719S", "24.5"), _ 
Array("HD200_QCG13D", "15"), _ 
Array("HD200_QCG12D", "6"), _ 
Array("HD200_QCQ61K", "12.5"), _ 
Array("HD200_QCH1047R", "17.5"), _ 
Array("HD200_QCE545K", "9")) 



For i = 2 To LastRow 

GeneCheck = Right(Cells(i, 1).Value, 8) & Cells(i, 6).Value 

'//Tell VBA to ignore an error and continue (ie if it can't find the value) 
     On Error Resume Next 

'//Assign the result of your calculation to a variable that VBA can query 

x = WorksheetFunction.VLookup(GeneCheck, vArr, 2, False) 

    '//if Vlookup finds the value, then paste it into the required column 
     If Err = 0 Then 
Cells(i, 9).Value = Application.WorksheetFunction(GeneCheck, vArr, 2, False) 
     End If 

     '//resets to normal error handling 
     On Error GoTo 0 
Next 


End Sub 
+0

請參閱我最近給@ A.S.H的消息。並希望您的反饋 – skkakkar

回答

1

您的代碼似乎確定(我趕緊試了一下),除了一個錯誤:

Cells(i, 9).Value = Application.WorksheetFunction(GeneCheck, vArr, 2, False) 

你忘了插入VLOOKUP。但是,無論如何,你不需要再次重做這個查找,你已經做到了,並且在x中有價值。所以:

Cells(i, 9).Value = x 
+0

請重新檢查數組聲明和程序運行通過階段如您所說的代碼似乎確定。我試圖運行該程序,但似乎沒有將值打印到第9列。可能是OP已經做了一些更改,如果是的話讓程序更新。 – skkakkar

+0

@skkakkar我沒有檢查代碼,正如我對數組中的某些值所說的那樣,它在進行建議的修改之後運行,在列I中打印數組的第二個值。我無法弄清楚爲什麼它不適用於您。你是否。也許你忘了把鑰匙分成兩部分,把部分放在_QC列A,其餘的列F中。 –

+0

謝謝我會重試它。 – skkakkar