2014-09-25 124 views
0

我想在vba中創建一個宏來更新表單2中表單的信息。個人記錄通過鑰匙捆綁在一起。因此,一個鍵對應於表1中的記錄以及表2中的記錄。我通過定義充滿數據的行開始宏(在這個階段它只有一列)。然後它進入for循環並獲取整個行,並比較兩行並更新它們(如果它們不相同)。我不知道如何編寫if語句的行來比較具有相同鍵的兩行(因爲它們不會按順序排列)。任何幫助將不勝感激。我已經發布了我在下面寫的代碼。按鍵查找行excel vba

Sub crossUpdate() 
Dim rng1 As Range, rng2 As Range, N As Long 
Dim rng1Row As Range 
Dim rng2Row As Range 
Dim i As Integer, j As Integer 
Dim Cell As Variant 


N = Cells(Rows.Count, "A").End(xlUp).row 
Set rng1 = Sheet1.Cells.Range("A2:A" & N) 
Set rng2 = Sheet2.Cells.Range("A2:A" & N) 


For i = 2 To rng1.Rows.Count 
    Set rng1Row = rng1.Cells(i, 1).EntireRow 
    Set rng2Row = rng2.Cells(i, 1).EntireRow 
    Key = Sheet1.Range("A" & i) 
     For j = 1 To rng1.Columns.Count 
      If rng1Row.Cells(i, j).Value <> rng2Row.Cells(i, j).Value Then 

      Else 

      End If 
     Next j 
Next i 

End Sub 
+0

如何使用application.worksheetfunction.vlookup(),使用與工作表vlookup相同的參數,例如application.worksheetfunction.vlookup(密鑰,範圍,柱,0)。 – nutsch 2014-09-25 17:28:53

+0

在您的代碼中,rng1根據定義只有一列,但您正在循環使用該列。僅僅是因爲當前的測試狀態? – nutsch 2014-09-25 17:29:31

+0

我將如何實現vlookup函數?另外我不確定爲什麼rng1在循環中。 – 2014-09-25 17:35:47

回答

0

我回答了類似的問題here。這個問題問如何比較行。

我的答案試圖通過存儲行的散列快速做這些比較。對於你的問題,你可以嘗試將兩個行轉換爲一個字符串,只是比較它們。如果它們不相同,只需將其中一行復制到另一行中即可。