我需要一个宏来过滤行,列A和B的值相等,或者相同,差异为0。
通常我会将autofilter应用于单个范围,如下所示:
vc.delegate = self
在这种情况下,我想匹配或比较2列,并在ActiveSheet.Range("A2:AX2").AutoFilter Field:=Range("X" & 1).Column, Criteria1:=">0"
当然我可以添加另一列作为这两者之间的区别,但如果我可以,我宁愿避免它。
PS:稍后,我需要另一个A-B=0
过滤器,万一你的解决方案也适合这个过滤器。
答案 0 :(得分:2)
只需在Range.AutoFilter Method中添加指定列和条件的第二行。
With Worksheets("Sheet1")
'if there is an active AutoFilter, turn it off
If .AutoFilterMode Then .AutoFilterMode = False
With .Cells(1, 1).CurrentRegion
.AutoFilter field:=1, Criteria1:=0
.AutoFilter field:=2, Criteria1:=0
'filtered on rows that have zero in column A and column B
.AutoFilter field:=1
.AutoFilter field:=2
'filter is active but no criteria has been applied
.AutoFilter field:=1, Criteria1:=0
.AutoFilter field:=2, Criteria1:=0
.AutoFilter field:=3, Criteria1:=0
'filtered on rows that have zero in column A, column B and column C
End With
'turn off AutoFilter completely
If .AutoFilterMode Then .AutoFilterMode = False
End With
答案 1 :(得分:0)
据我所知,使用条件无法使用AutoFilter
进行过滤,其中一个字段必须与另一个字段匹配,而不使用辅助字段(列)。当然可以使用多字段过滤器,但是对于每个字段,必须设置一个条件,并且条件不能是引用表格中同一行的公式。
我唯一能想到的是使用条件格式然后按颜色过滤。
示例:
Sub Makro1()
sConditionalFormula = "=AND($A1<>"""",$B1<>"""",$A1=$B1)"
'FormatConditions needs localized formulas, so we create such:
Cells(Rows.Count, Columns.Count).Formula = sConditionalFormula
sConditionalFormulaLocal = Cells(Rows.Count, Columns.Count).FormulaLocal
Cells(Rows.Count, Columns.Count).Clear
With ActiveSheet
With .Range("A1").CurrentRegion
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:=sConditionalFormulaLocal
With .FormatConditions(.FormatConditions.Count)
With .Interior
.Color = RGB(255, 255, 0)
End With
End With
.AutoFilter Field:=1, Criteria1:=RGB(255, 255, 0), Operator:=xlFilterCellColor
End With
End With
End Sub
结果: