下面的代码非常适用于一个值,但有没有办法可以为多个值执行此操作并查找?
设置Rng =范围(“C1:B50”)。查找(What:=“House”,LookAt:= xlWhole,LookIn:= xlValues)
Rng.Offset(, - 1).Value =“John”
任何帮助非常感谢
答案 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(例如×或次符号)。我相信添加或删除该符号不会以任何方式影响您的数据。