基于两个不同列中的条件替换单元格内容的VBA代码
我写的代码有问题。我曾研究过多个网站,这些网站都有类似的编码方案,其中一些提供了一些关于如何编写代码的见解,但它只完成了一半的工作 因此,在B列中,我有一个路由指南列表:基于两个不同列中的条件替换单元格内容的VBA代码,vba,replace,cell,Vba,Replace,Cell,我写的代码有问题。我曾研究过多个网站,这些网站都有类似的编码方案,其中一些提供了一些关于如何编写代码的见解,但它只完成了一半的工作 因此,在B列中,我有一个路由指南列表:ABC、DEF、GHI 在C列中,我还有一组信息:VVV、WWW、XXX、YYY、ZZZ 如果在B列中显示ABC,而C列显示WWW,XXX或YYY,我需要将C列替换为UUU。下面是我的代码,我提前感谢您的帮助!谢谢大家! Sub Replace_cell () Dim sht As Worksheet Dim fndList
ABC、DEF、GHI
在C列中,我还有一组信息:VVV、WWW、XXX、YYY、ZZZ
如果在B列中显示ABC
,而C列显示WWW
,XXX
或YYY
,我需要将C列替换为UUU
。下面是我的代码,我提前感谢您的帮助!谢谢大家!
Sub Replace_cell ()
Dim sht As Worksheet
Dim fndList As Variant
Dim rplcList As Variant
Dim x As Long
'Filter ABC only on Routing Column B
Selection.AutoFilter
ActiveSheet.Range("A1").AutoFilter Field:=2, Criteria1:= _
"ABC"
'Find WWW, XXX, YYY in Col C and replace them with UUU
fndList = Array("WWW", "XXX", "YYY")
rplcList = ("UUU")
'Loop through each item in Array lists
For x = LBound(fndList) To UBound(fndList)
'Loop through each worksheet in ActiveWorkbook
For Each sht In ActiveWorkbook.Worksheets
sht.Cells.Replace What:=fndList(x), Replacement:=rplcList(x), _
LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
SearchFormat:=False, ReplaceFormat:=False
Next sht
Next x
End Sub
谢谢大家! 您必须依次对每个工作表进行筛选,然后查找/替换,因此循环的嵌套顺序(内部/外部)应该颠倒。同样,正如您所说的,您希望在
列C
中替换,而不是工作表的所有单元格
Sub Replace_colC()
Dim sht As Worksheet, x As Long, fndList, rplcList
fndList = Array("WWW", "XXX", "YYY")
rplcList = Array("UUU", "UUU", "UUU")
' though replacement values are the same, they could be different
For Each sht In ActiveWorkbook.Worksheets
'Filter ABC on Routing Column B
sht.Cells.AutoFilter Field:=2, Criteria1:="ABC"
'Loop through each item in Array lists and replace
For x = LBound(fndList) To UBound(fndList)
sht.UsedRange.Columns("C").Replace What:=fndList(x), Replacement:=rplcList(x), _
LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
SearchFormat:=False, ReplaceFormat:=False
Next x
sht.AutoFilterMode = False
Next sht
End Sub
感谢@Ambie编辑了这篇文章。不知道为什么我上传代码时看起来不确定。:)非常感谢您更新的代码!我试着运行它,但是loop和replace语句没有用UUU替换fndlist中的语句。当我通过F8运行代码时,它只过滤掉所有内容,只剩下标题,之后什么也不做。谢谢你的帮助@jackie,你说“它只过滤掉所有内容,只剩下标题”,这意味着在B列中没有任何
“ABC”
单元格?代码首先在B列中找到ABC
,如果单元格C
在fndlist
中,则在这些行中找到它。这就是你的OP所说的,它已经完全测试过了!我再次尝试了代码,今天它运行得非常好!非常感谢你的帮助!(我想我昨天出去跑步后已经筋疲力尽了:D)祝你今天愉快!很高兴你告诉我如何接受答案。我最近刚加入Stackoverflow,所以一直在寻找这个选择。我现在把它变成绿色。:)