VBA; 1列有多个标准,第二列有单个标准

时间:2017-05-22 18:59:45

标签: vba

这是我之前提出的问题的更新。 这一次,我在特定列中添加了一个条件。 因此,此代码根据2个单独列上的多个条件替换单元格。 我的代码正在做的是它将在Col B上查找ABC或DEF,如果它在Col F上显示XXX,它将用YYY替换它。我编写了下面的代码,但它对第二个标准(DEF)没有任何作用

提前感谢您的建议!

Dim destlist As Worksheet, y As Long

fndList = Array("XXX")
rplcList = Array("YYY")

For Each sht In ActiveWorkbook.Worksheets
sht.Cells.AutoFilter Field:=2, Criteria1:="ABC"
sht.Cells.AutoFilter Field:=2, Criteria2:="DEF"     

'Loop through each item in Array lists and replace
For y = LBound(fndList) To UBound(fndList)
  sht.UsedRange.Columns("F").Replace What:=fndList(y), Replacement:=rplcList(y), _
        LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
        SearchFormat:=False, ReplaceFormat:=False
Next y
sht.AutoFilterMode = False

下一步

1 个答案:

答案 0 :(得分:1)

您未正确输入"或者"标准,正如@ScottCraner所说,你并没有将替代限制在可见细胞中。

以这种方式尝试:

sht.UsedRange.AutoFilter Field:=2, Criteria1:="ABC", Operator:=xlOr, Criteria2:="DEF"
sht.UsedRange.Columns("F").SpecialCells(xlCellTypeVisible).Replace ...

P.S。好的,我注意Replace自动对可见单元格起作用,但最好是在代码中显式