我的代码存在以下问题。我试图编写一个执行以下步骤的宏:
1)b21中名称中的用户类型和e21中的数字wady
2)按下按钮后,它会将姓名和号码移动到 DATA WADY 工作表中的表格(在 B 列中我们有一个姓名,在 C 列中我们有号码)
3)当在B列中找到复制品时,它将覆盖C
列中的数字4)当找不到重复时,它会在末端添加新行
Sub ZGLOS()
Dim data As Worksheet
Set data = ThisWorkbook.Sheets("DATA WADY")
Dim LastRow As Long
Dim Srch As Range
LastRow = data.Range("B1048576").End(xlUp).Row
name = ThisWorkbook.Sheets("WADY").Range("B21").Value
number = ThisWorkbook.Sheets("WADY").Range("E21").Value
Set Srch = ThisWorkbook.Sheets("WADY").Range("B21")
For r = 2 To LastRow
Set y = Srch.Find(data.Cells(r, "B").Value, , xlValues, xlWhole, xlByRows, xlNext, False, False, False)
If Not y Is Nothing Then
data.Cells(r, "C") = number
Else
data.Cells(LastRow + 1, "B") = name
data.Cells(LastRow + 1, "C") = number
End If
Next r
End Sub
步骤 1、2、4 工作正常,但我对步骤 3 有问题 - 它确实覆盖了现有重复项中的数字,但它还另外添加了具有相同名称和数字的新行,而且我似乎找不到位置问题是。
数量 | |
---|---|
1 | |
2 | |
3 |
4
last行是4,所以我们从r = 2循环到r = 4,看起来像这样:r=2
data.cells(2,"B")
=“艾伦”,所以y=data.Cells(2,"B")
不是y
Nothing
,因此更改为data.Cells(2,"C")
r=3
4
=“艾达”,所以
data.cells(3,"B")
是y=Nothing
,因此您在第5行(即第5行)上添加了一个新条目。y
r=4Nothing
=“查尔斯”,所以
LastRow+1
data.cells(4,"B")
是y=Nothing
,因此您在第5行(即第5行)上添加了一个新条目。 (这覆盖已经为ADA创建的行)然后循环结束。
,您想尝试执行此操作。没有一个循环:y