VBA 在发现重复项时查找并替换表中的数据

问题描述 投票:0回答:1

我的代码存在以下问题。我试图编写一个执行以下步骤的宏:

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 有问题 - 它确实覆盖了现有重复项中的数字,但它还另外添加了具有相同名称和数字的新行,而且我似乎找不到位置问题是。

excel vba
1个回答
0
投票

姓名艾伦艾达查尔斯
数量
1
2
3
在“ wady”表中,您将名称为“ alan”和数字
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
y
,因此您在第5行(即第5行)上添加了一个新条目。
r=4
Nothing

=“查尔斯”,所以
LastRow+1

data.cells(4,"B")
y=Nothing

,因此您在第5行(即第5行)上添加了一个新条目。
(这覆盖已经为ADA创建的行)
然后循环结束。
,您想尝试执行此操作。没有一个循环:
y
	

© www.soinside.com 2019 - 2024. All rights reserved.