Excel Macro可以比较2张工作表中的数据并在匹配时粘贴值

我有两张表,我想比较一下名单和姓氏(列A和B)的表1中的数据是否在表2(同时列A和B)中find,其中第一个名字在列A中,在列B中的名称。如果在sheet2中findsheet1中的名和姓,并且如果该行中的表2(E列)中的ID号等于2,则我想复制客户详细信息行D栏)从Sheet2到Sheet1的P栏。

我觉得下面的代码应该可以工作,但是并不是将客户数据粘贴到Sheet1的P列中。 任何想法为什么?

Sub matchandpaste() Dim cell, cell2, revenue As Range Dim wbk As Workbook Dim sheet1, sheet2 As Worksheet Dim temp, firstName, lastName As String Set wbk = ThisWorkbook Set Sheet1 = wbk.Sheets("Sheet1") Set sheet2 = wbk.Sheets("Sheet2") For Each cell In Sheet1.Range("B2:B" & Range("B2").End(xlDown).Row) lastName = cell.Value firstName = cell.Offset(0, -1).Value Set revenue = cell.Offset(0, 14) For Each cell2 In sheet2.Range("B2:B" & Range("B2").End(xlDown).Row) If lastName = cell2.Value And firstName = cell2.Offset(0, -1).Value And cell2.Offset(0, 3).Value = 2 Then revenue = cell2.Offset(0, 2).Value End If Next cell2 Next cell 

您只需在revenue范围variables的末尾添加.value 。 喜欢这个:

 Sub matchandpaste() Dim cell, cell2, revenue As Range Dim wbk As Workbook Dim sheet1, sheet2 As Worksheet Dim temp, firstName, lastName As String Set wbk = ThisWorkbook Set Sheet1 = wbk.Sheets("Sheet1") Set sheet2 = wbk.Sheets("Sheet2") For Each cell In Sheet1.Range("B2:B" & Range("B2").End(xlDown).Row) lastName = cell.Value firstName = cell.Offset(0, -1).Value Set revenue = cell.Offset(0, 14) For Each cell2 In sheet2.Range("B2:B" & Range("B2").End(xlDown).Row) If lastName = cell2.Value And firstName = cell2.Offset(0, -1).Value And cell2.Offset(0, 3).Value = 2 Then revenue.value = cell2.Offset(0, 2).Value End If Next cell2 Next cell End Sub