使用For循环复制匹配数据

时间:2016-08-12 03:56:01

标签: vba excel-vba excel

有2个单独的表 - PT_Data和Suspects。每个表都有Emp_Name作为第一列,第二列是可变的。我想将PT_Data中的Emp_Name与Suspects中的Emp_Name匹配,并将相应的值从Suspects表更新为PT_Data表中的B列。

这是我写的代码。

          lastrowall = Sheets("Monthly Deals").Range("A1", Sheets("Monthly Deals").Range("A" & Rows.Count).End(xlUp)).Rows.Count
          lastrowsuspects = Sheets("Suspects").Range("A1", Sheets("Suspects").Range("A" & Rows.Count).End(xlUp)).Rows.Count


          For i = 1 To lastrowall
            For j = 1 To lastrowsuspects
                'MsgBox Sheets("PT_Data").Range("A" & i).Value
                    If Sheets("PT_Data").Range("A" & i).Value = Sheets("Suspects").Range("A" & j).Value Then
                    Sheets("Suspects").Range("B" & j).Copy Destination:=Sheets("PT_Data").Range("B" & i).PasteSpecial
               End If
             Next j
           Next i

然而,当找到匹配时,VB给出"应用程序定义或对象定义错误"。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

更改

Sheets("Suspects").Range("B" & j).Copy Destination:=Sheets("PT_Data").Range("B" & i).PasteSpecial

 '~~> To paste values 
 Sheets("Suspects").Range("B" & j).Copy 
 Sheets("PT_Data").Range("B" & i).PasteSpecial xlPasteValues

或粘贴全部使用

Sheets("Suspects").Range("B" & j).Copy _
Destination:=Sheets("PT_Data").Range("B" & i)

顺便说一句,你可以使用公式。 VBA不需要。使用Vlookup,如下所示。将此公式放在PT_Data的单元格B1中并将其拖下来。

=VLOOKUP(A1,Suspects!A:B,2,0)