你也許可以用公式來做到這一點,而不是使用VBA。
如果你沒有頭粘貼此公式到工作表Sheet1的單元格E1:
=IF(AND(A1=INDEX(Sheet2!A:A,MATCH(A1,Sheet2!A:A,FALSE)),B1=INDEX(Sheet2!B:B,MATCH(B1,Sheet2!B:B,FALSE)), C1=INDEX(Sheet2!C:C,MATCH(C1,Sheet2!C:C,FALSE)),D1=INDEX(Sheet2!D:D,MATCH(D1,Sheet2!D:D,FALSE))),INDEX(Sheet2!E:E,MATCH(A1,Sheet2!A:A,FALSE)),"NO")
或者這一個爲E2,如果你有一個標題行:
=IF(AND(A2=INDEX(Sheet2!A:A,MATCH(A2,Sheet2!A:A,FALSE)),B2=INDEX(Sheet2!B:B,MATCH(B2,Sheet2!B:B,FALSE)), C2=INDEX(Sheet2!C:C,MATCH(C2,Sheet2!C:C,FALSE)),D2=INDEX(Sheet2!D:D,MATCH(D2,Sheet2!D:D,FALSE))),INDEX(Sheet2!E:E,MATCH(A2,Sheet2!A:A,FALSE)),"NO")
然後拖動整個使用在單元格右下方的切換點就像您希望列從工作表2進入一樣。
然後突出顯示剛剛創建的整行,然後將右下方的小切換拖到工作表的最下方,因爲您有數據(或者嘗試雙擊切換到自動填充)。
我在一小組數據上嘗試了這一點,它似乎可以工作,因此它應該適用於較大的數據集,只要sheet1上的4列的所有可能的變體都可以在sheet2上使用,並在以下列中包含相關數據。
如果在任何單元格中得到「否」的結果,則Excel無法在sheet2中找到與sheet1上匹配的確切組合的行。
編輯 - 更新下面的答案。
試試這個,這對你來說更有可能。
Sub CopyItOver()
Dim sh1 As Worksheet, sh2 As Worksheet
Set sh1 = Sheets("Sheet1")
Set sh2 = Sheets("Sheet2")
For Each c1 In sh1.Range("A1", sh1.Range("A1").End(xlDown))
For Each c2 In sh2.Range("A1", sh2.Range("A1").End(xlDown))
If c2.Value = c1.Value Then
If c2.Offset(0, 1).Value = c1.Offset(0, 1).Value Then
If c2.Offset(0, 2).Value = c1.Offset(0, 2).Value Then
If c2.Offset(0, 3).Value = c1.Offset(0, 3).Value Then
c1.EntireRow.Value = c2.EntireRow.Value
End If
End If
End If
End If
Next c2
Next c1
End Sub
如果你不知道我的VBA認爲這將是更好地去自由職業者的網站,並張貼此作爲一個工作,你會得到它與花費的金額不大很快完成。否則,請提供你已經嘗試過的東西以及你卡在哪裏。 – user1429899