VBA - 查找具有多个值的多个文本偏移

时间:2014-10-29 16:38:08

标签: excel vba excel-vba

下面的代码非常适用于一个值,但有没有办法可以为多个值执行此操作并查找?

  

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

     

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

任何帮助非常感谢

1 个答案:

答案 0 :(得分:0)

您可以遍历一个或两个数组,随着循环的进行将条件和值传递到您的代码中。

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(例如×或符号)。我相信添加或删除该符号不会以任何方式影响您的数据。