我有兩個Excel工作表:Sheet1和Sheet2。 Sheet2是主列表,而Sheet1是從系統接收的更新工作表。我需要的是將Sheet1的A欄的每個值與Sheet2進行比較。如果匹配,則我想從Sheet1複製整個匹配行,並將該行中的值粘貼到Sheet2的相應ColA值(Item#)行。如下例:如何將複製的行從一張紙粘貼到另一張
Sheet1工作表的
ColA ColB
Item# Updated Cost
1234 $30
Sheet2工作表中
ColA ColB
Item# Current Cost
1234 $45
有我的文件比這裏顯示的列多,所以它需要把整個一排與複製Sheet2中的相應行。我開始所需的Excel VBA代碼,但是我被卡在零件上以在Sheet2中粘貼相應的值。我的代碼是非常基本的,它還沒有工作,所以任何與編碼有關的幫助表示讚賞。
Sub Macro1()
'
' Macro1 Macro
'
' Copies corresponding item# rows from sheet1 worksheet
' to sheet2 worksheet by comparing item# column
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim ColA As String
Dim rng1 As Range
Dim rng2 As Range
Dim RowCounter1 As Integer
Dim RowCounter2 As Integer
ColA = "A"
RowCounter1 = 2
RowCounter2 = 2
Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
Do While Not IsEmpty(ws1.Range(ColA & RowCounter1).Value)
Set rng1 = ws1.Range(ColA & RowCounter1)
RowCounter2 = 1
Do While Not IsEmpty(ws2.Range(ColA & RowCounter2).Value)
Set rng2 = ws2.Range(ColA & RowCounter2)
If rng1.Value = rng2.Value Then
Rows(RowCounter1).EntireRow.Copy
RowCounter2 = RowCounter2 - 1
End If
RowCounter2 = RowCounter2 + 1
Loop
RowCounter1 = RowCounter1 + 1
Loop
End Sub
此代碼完美工作,再次感謝Lance – Thomas 2011-03-23 20:13:33
如何更改它以剪切和粘貼整行而不是複製和粘貼?這裏是我試過的代碼,但沒有工作:如果RNG2(1).value的= RNG1(1).value的那麼 rng1.EntireRow.Cut rng2.EntireRow.Paste 結束如果 接下來RNG2 下一步RNG1 – Thomas 2011-03-24 13:07:49
@Thomas,我總是使用PasteSpecial作爲Range。 – 2011-03-24 14:53:29