2017-08-08 63 views
0

我的目標是比較Ws1範圍內的數據和ws2範圍內的數據,並複製那些重複的值WS3。VBA到Vlookup內循環比較兩張之間的數據並粘貼重複值在第三張表

理想情況下,我想將找到的值和其他信息複製到該單元格的右側(來自ws2),但現在我很高興只複製找到的值。

我決定使用循環,但我得到了無限循環,現在我重新總結;我越來越:

範圍對象_全球失敗 「錯誤,並指出:」 隨着 範圍(ws3.cells(I,1))

Sub quicktests() 

Dim ws1, ws2, ws3 As Worksheet 
Dim ColNum, ColNum2 As Long 
Dim rng, Range2 As Range 
Dim lRow1, lRow2, lCol2 As Integer 

ColNum = 9 
ColNum2 = 14 
lRow1 = 347 

Set ws2 = Sheets("Filled today") 
With ws2 
    lCol2 = .cells(1, .Columns.Count).End(xlToLeft).Column 
    'MsgBox lCol2 
    lRow2 = .cells(.Rows.Count, 1).End(xlUp).Row 
    'MsgBox lRow2 
    Set Range2 = .Range(.cells(1, ColNum2), .cells(lRow2, lCol2)) 
End With 

Set ws3 = Sheets("Duplicates filled and hiring") 
Set ws1 = Sheets("Reconciliated Recruiment Plan") 

For i = 1 To lRow1 
    With ws1 
     Set rng = .cells(i, ColNum) 
    End With 

    With Range(ws3.cells(i, 1)) 
     .Formula = "=VLookup(rng, Range2, ColNum, False)" 
     .Value = .Value 
    End With 

Next i 

End Sub 
+0

我認爲你需要對你的問題有一個更詳細的瞭解才能在stackoverflow上得到答案。如果你還沒有請讀[問] – Mick

+0

謝謝米克 - 我剛剛讀過它 - 當然會更好地利用網站改進 - 乾杯! – PVL

回答

0

看着剛部分與VLOOKUP:

你不能使用範圍與一個單元格()它需要一個開始和結束,刪除範圍包裝。

The Vlookup;您需要從字符串中刪除vba部分並將其連接起來。

With ws3.cells(i, 1) 
    .Formula = "=VLookup(" & rng.Address(0,0) & "," & Range2.Address(0,0) & "," & ColNum & ", False)" 
    .Value = .Value 
End With 
+0

非常感謝斯科特 - 我現在將重新開始工作,並會告訴您是否設法使其工作。謝謝! – PVL

+0

斯科特,幫忙!我已經檢查並重新檢查了範圍和邏輯。公式運行,但它給了我所有值的#N/A。我在它旁邊運行一個常規的Excel公式,並且我得到了多個重複的值。有關如何檢查錯誤的任何建議。我找到了鎖定單元格的方法,因此也嘗試了在固定範圍(1,1)中使用它,但沒有結果。非常感謝! – PVL

+0

嗨 - 好吧,所以我嘗試了很多其他的東西,目前爲止失敗了。我最後的嘗試是在2015年使用MikeD的一個類似問題的答案。所以我創建了一個函數,然後嘗試調用該函數,但是我只是收到了一個錯誤'object required'。這是我正在使用的代碼試圖只測試vlookup函數。我相信這個函數必須是正確的,因爲我從解決方案中得到它 - 但它可能是我應用它的方式:表格(「重複填充和僱傭」)Range(「a1」)。Formula = GenLookupFormula(Sheets( 「調整後的招聘計劃」)。[「k1」],表格(「今日填寫」)。[i2:i347],1,False) – PVL

相關問題