我有两个Excel工作表:Sheet1和Sheet2 . Sheet2是主列表,而Sheet1是我从系统收到的更新工作表 . 我需要的是比较Sheet1的Col A和Sheet2的每个值 . 如果匹配,那么我想从Sheet1复制整个匹配行,并将该行的值粘贴到Sheet2的相应ColA值(Item#)行 . 示例如下:
Sheet1 Worksheet
ColA ColB
Item# Updated Cost
1234 $30
Sheet2 Worksheet
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
3 回答
以下是如何使用PasteSpecial方法和一些代码简化的方法:
这个片段可以帮助你(警告:未经任何测试编写)
注意:RowCollection.Add将在重复的键值上失败 - 所以如果有可能你需要添加一些额外的检查
Use this :