【发布时间】:2018-06-18 22:22:47
【问题描述】:
我正在尝试使以下工作: 单独的工作表中有两个表。我希望它检查工作表 2 列 B 中的每个单元格,并从工作表 1 列 A 中找到匹配项。如果找到匹配项,则将工作表 2 列 B 中的数据替换为工作表 1 列 B 的匹配行中的数据。 如果从 worksheet1 列 A 中找不到匹配项,则删除 worksheet2 列 B 中的整行。
Sub match_repl_del()
Dim r1 As Long, rfound, vfound
Dim w1, w2, v As Long
Set w1 = Sheets(3) ' data sheet
Set w2 = Sheets(2) ' target sheet
r1 = 2 'data starting from row 2
Do While Not IsEmpty(w1.Cells(r1, 1))
v = w1.Cells(r1, 1)
rfound = Application.Match(v, w2.Columns(2), 0) ' look for value
If Not IsError(rfound) Then ' found it?
vfound = w2.Cells(rfound, 2)
If w1.Cells(r1, 2) <> vfound Then ' if value does not match sheet1 column b
w2.Cells(rfound, 2) = w1.Cells(r1, 2) ' update based on origin sheet
lastC = w2.Cells(rfound, 1).End(xlToRight).Column
w2.Range(w2.Cells(rfound, 1), w2.Cells(rfound, lastC)).Interior.ColorIndex = 5
Else ' delete entire row on sheet2 if match is not found
w2.Rows(r1).EntireRow.Delete
End If
End If
r1 = r1 + 1
Loop
End Sub
【问题讨论】:
-
好吗?你有什么问题?你的代码不起作用吗?它会给出错误吗?您能否澄清您的问题/问题是什么?
-
我得到了它的第一部分工作。它根据需要替换了单元格的内容,但我未能让 .EntireRow.Delete 正常工作。可能这不是让它工作的正确方法......