简体   繁体   English

如果其中两个条件中的任何一个满足代码条件,该如何使两个条件自动过滤?

[英]How to make two criteria if any one of them fulfill code will autofilter it?

在此处输入图片说明

The code is working fine for a single criterion. 该代码对于单个条件运行良好。 I want to make it work based on two criteria with an OR condition. 我想使它基于具有OR条件的两个条件。 If any one condition is met, it would auto filter the data. 如果满足任何一个条件,它将自动过滤数据。

Sub FilterCopyToOtherSheet()
'
    Sheets("Sheet1").Range("A1:C7").AdvancedFilter _
        Action:=xlFilterCopy, _
        CriteriaRange:=Sheets("Sheet1").Range("E1:E2"), _
        CopyToRange:=Sheets("Sheet2").Range("A1"), _
        Unique:=False

End Sub

With the advanced filter criterions in the same row are AND connected however criterions in different rows are OR connected. 对于高级过滤器,同一行中的条件进行“ AND连接,但是不同行中的条件进行“ OR连接。

So in this example in Sheet1 所以在Sheet1的这个例子中

在此处输入图片说明

the criterion range reads like: 标准范围如下所示:

Filter if 过滤是否

Like = Yes AND Color <> Green AND Color <> Red
OR 
Like = No AND Color = Green
OR
Like = No AND Color = Brown

So with 所以用

Sub FilterCopyToOtherSheet()

 With ThisWorkbook

  Set oWS1 = .Worksheets("Sheet1")
  Set oWS2 = .Worksheets("Sheet2")

  oWS2.Cells.ClearContents

  lLastRowTable = oWS1.Cells(oWS1.Rows.Count, 1).End(xlUp).Row
  lLastRowCrit = oWS1.Cells(oWS1.Rows.Count, 5).End(xlUp).Row

    oWS1.Range("A1:C" & lLastRowTable).AdvancedFilter _
        Action:=xlFilterCopy, _
        CriteriaRange:=oWS1.Range("E1:G" & lLastRowCrit), _
        CopyToRange:=oWS2.Range("A1"), _
        Unique:=False

 End With

End Sub

it leads to 它导致

在此处输入图片说明

in Sheet2. 在Sheet2中。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM