我正在尝试编写代码来将“A”列中的数据过滤为仅“ZSFG”和“ZCNC”值。满足此条件后,我需要更新“C”列,以确保所有单元格都有“X”并突出显示已更新的值
数据:
Sub Macro1()
Selection.AutoFilter
ActiveSheet.Range("$A$2:$C$999999").AutoFilter Field:=1, Criteria1:=Array( _
"ZCNC", "ZSFG"), Operator:=xlFilterValues
ActiveSheet.Range("$A$2:$C$999999").AutoFilter Field:=3, Criteria1:="="
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Selection.SpecialCells(xlCellTypeVisible).Offset(, 5).Value = "X"
ActiveSheet.ShowAllData
End Sub
我已经尝试过这段代码,但我没有得到我想要的东西。
注意:这是一个很大的数据集,行数永远不会相同。
有人可以帮助我吗?
谢谢!
我尝试运行上面的代码以及其他一些代码。我已经能够突出显示空的单元格,但是当我再次运行代码时,突出显示的单元格会发生变化。另外,使用此代码,单元格不会被 X 填充
试试这个代码:
Sub Macro1()
Dim rg As Range
Set rg = ActiveSheet.Range("A1").CurrentRegion
With rg
.AutoFilter Field:=1, Criteria1:=Array( _
"ZCNC", "ZSFG"), Operator:=xlFilterValues
.AutoFilter Field:=3, Criteria1:="="
With .Columns(3).Offset(1).Resize(.Rows.Count - 1)
With .SpecialCells(xlCellTypeVisible)
.Value = "x"
With .Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End With
End With
.Parent.ShowAllData
End With
End Sub
首先我不会依赖
selection
。如果您的桌子是干净的,您可以使用 CurrentRegion
设置要处理的范围。
您可以使用
SpecialCells
,但您必须事先“准备”基本范围。
顺便说一句:您也可以通过公式和条件格式来实现所有这些。