比较2列值(在同一行)

我需要一个macros来过滤列A和B的值是相等的,或者是相同的,哪个差值是0。

通常情况下,我应用自动filter的单一范围,如下所示:

ActiveSheet.Range("A2:AX2").AutoFilter Field:=Range("X" & 1).Column, Criteria1:=">0"

在这种情况下,我想匹配或比较2列,并应用AB=0时的filter

当然,我可以添加另一列是这两个之间的差异,但如果我可以,我宁愿避免它。

PS:稍后,我需要另外一个ABC=0滤波器,以防你的解决scheme适合这个。

据我所知,它是不可能通过使用一个标准,其中一个字段必须匹配另一个字段,而不使用助手字段(列)与AutoFilter过滤。 当然,可以使用多字段filter,但是对于每个字段,必须设置标准,并且标准不能是引用表中同一行的公式。

我唯一能想到的是使用条件格式,然后通过颜色进行过滤。

例:

在这里输入图像说明

 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 

结果:

在这里输入图像说明

只需在Range.AutoFilter方法中添加指定列和条件的第二行。

 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