VBA&x2013;查找具有多个值的多个文本偏移量

VBA&x2013;查找具有多个值的多个文本偏移量,vba,excel,Vba,Excel,下面的代码适用于一个值,但是有没有一种方法可以用于多个值和查找 设置Rng=Range(“C1:B50”)。查找(What:=“House”,LookAt:=xlother,LookIn:=xlValues) Rng.Offset(,-1).Value=“John” 任何非常受欢迎的帮助都可以通过一个或两个数组进行循环,在循环过程中将标准和值传递到代码中 Dim rng As Range, rang As Range, v As Long, vFINDs As Variant, vVALUs A

下面的代码适用于一个值,但是有没有一种方法可以用于多个值和查找

设置Rng=Range(“C1:B50”)。查找(What:=“House”,LookAt:=xlother,LookIn:=xlValues)

Rng.Offset(,-1).Value=“John”


任何非常受欢迎的帮助

都可以通过一个或两个数组进行循环,在循环过程中将标准和值传递到代码中

Dim rng As Range, rang As Range, v As Long, vFINDs As Variant, vVALUs As Variant

vFINDs = Array("House", "Barn", "School")
vVALUs = Array("John", "Susan", "Bob")
Set rang = Range("C1:B50")

For v = LBound(vFINDs) To UBound(vFINDs)
    Set rng = rang.Find(what:=vFINDs(v), lookat:=xlWhole, LookIn:=xlValues)
    Do While Not rng Is Nothing
        rng.Value = Chr(215) & rng.Value & Chr(215)
        rng.Offset(0, -1).Value = vVALUs(v)
        Set rng = rang.FindNext(after:=rng)
    Loop
    rang.Replace what:=Chr(215), replacement:=vbNullString, lookat:=xlPart
Next v

Set rng = Nothing
Set rang = Nothing

附录:我加入了一个
.FindNext
来循环多个匹配项。
.FindNext
的问题在于知道何时退出循环,否则您将重复搜索John,因为您没有更改原始值。为了解决这个问题,我先更改了值,然后在事实发生后删除了更改。我要添加的字符是ASCII 215(例如×或时间符号)。我相信添加或删除该符号不会以任何方式影响您的数据。

谢谢Jeeped,这是否允许我将每个发现与一个值进行匹配,例如house=John、Barn=Susan、School=Bobetc@user3512530-如果阵列的大小保持不变,然后用作增量的
v
将在同一点从每个匹配对中拉出。e、 g.如果v=2,那么vFINDs(v)是School,vVALUs(v)是Bob(这些变量数组是基于零的)。代码工作得很好,但是数据可以更改,而不是固定的,是否有方法匹配文本,无论文本在何处?例如,如果我移动“复制房屋”并将其放平,则无论单元格位置如何,宏都将匹配这些值?@user3512530-恐怕我真的不明白你在问什么。如果你想改变问题的术语,如果B列包含John的重复项,我希望代码能够识别出这一点,并在a列的对面单元格中填入所述的值,例如House=John,代码会拾取第一个字符串House,但不会将其应用到其他希望理智,非常感谢你的帮助