2014-11-21 53 views
1

以下代碼用於與表格A中的值匹配,其方式與Excel的VLOOKUP函數類似。查找操作無結果

該代碼運行時沒有錯誤,但在單元格中沒有任何結果。我怎樣才能解決這個問題?

Sub LoopTem() 

Dim ws As Worksheet 
Dim ws1 As Worksheet 
Dim i As Integer 
Dim r As Integer 
Dim lastRow1 As Integer 
Dim lastRow2 As Integer 

Set ws = Worksheets("Proactive Template") 
Set ws2 = Worksheets("To") 

lastRow1 = ws.Range("Q" & Rows.Count).End(xlUp).Row 
lastRow2 = ws2.Range("Q" & Rows.Count).End(xlUp).Row 

For i = 2 To lastRow1 
    For r = 2 To lastRow2 
     If ws.Cells(i, 18) = ws2.Cells(r, 17) Then 
      ws.Cells(i, 20) = ws2.Cells(r, 19) 
     Else 
      ws.Cells(i, 20) = "" 
     End If 
    Next r 

Next i 


End Sub 
+0

每個問題有一個問題。我編輯了第二個。隨意發佈它作爲一個單獨的問題。 – 2014-11-21 11:26:13

+0

感謝Jean-FrançoisCorbett – AileenQ 2014-11-23 06:50:11

回答

1

當您找到匹配項時,您必須轉移到第20列中的下一個單元格。現在您沒有這樣做;因此無論是否找到匹配項,搜索都會繼續,單元格最終會被ws.Cells(i, 20) = ""覆蓋。

要在找到匹配項時停止搜索,請使用Exit For

If ws.Cells(i, 18) = ws2.Cells(r, 17) Then 
     ws.Cells(i, 20) = ws2.Cells(r, 19) 
     Exit For ' <~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Stop search, iterate to next cell 
    Else 
     ws.Cells(i, 20) = "" ' <~~~~~~~~ Otherwise this will overwrite it eventually 
    End If 
+0

非常感謝!這非常有幫助。 – AileenQ 2014-11-23 06:49:41