我有两个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