【发布时间】:2013-04-24 13:06:50
【问题描述】:
我有以下代码,但我遇到了问题:
Sub getAccNos()
Dim oNameRange As Range
Dim oFindRng As Range
Dim sName As String
Dim sAccNo As String
Set oNameRange = Workbooks("New Name Work.xls").Worksheets("Manual").Range("B4")
Do While Not oNameRange.Text = ""
sName = Trim(oNameRange.Text)
Workbooks("New Name Work.xls").Worksheets("sheet1").Select
Set oFindRng = Cells.Find(What:=sName, After:=activecell)
Do While Not oFindRng Is Nothing
oNameRange.Offset(0, -1).Value = oFindRng.Offset(0, 1).Text
oFindRng.Offset(1, 0).Activate
Set oFindRng = Cells.Find(What:=sName, After:=activecell)
Loop
Set oNameRange = oNameRange.Offset(1, 0)
Loop
End Sub
基本上,在工作表 sheet1 我有一个带有帐号的名称列表,并且可以有多个具有相同名称的帐号。在我的名为Manual的目标表上,我有名字....但是帐号不见了,我想得到它们。
我无法使用 VLOOKUP,因为有几个名称相同,我需要获取所有帐号的列表。我该怎么做?
我尝试在 VBA 中使用 FIND 编写上述代码,不幸的是,我错过了一些基本的东西,因为在内部 Do Loop 中它只是在应该退出时连续循环(至于第一个只有一次出现)
感谢您向我展示我做错了什么,或者也许一个公式会更好?
【问题讨论】:
-
之所以没有变成什么,是因为工作表中的所有单元格每次都包含在搜索区域中。所以它到达底部后只会跳回顶部。
标签: vba excel replace excel-formula