【发布时间】:2021-03-24 00:48:12
【问题描述】:
我试图找出我们是否可以在数组中使用“If”来过滤单个代码中的多个列。例如,我有 2 列中的数据 & 要获得结果,我必须使用过滤器两次。
在第 7 列、today-3 和第 8 列之前使用 Apple 进行过滤的第一步
ActiveSheet.Range("A1:W100000").AutoFilter Field:=7, Operator:=xlFilterValues, Criteria1:="Apple"
ActiveSheet.Range("A1:W100000").AutoFilter Field:=8, Operator:=xlFilterValues, Criteria1:="=>"& Date-3)
第二步,在第 7 列和第 7 列以及第 8 列之前使用 Banana 进行过滤
ActiveSheet.Range("A1:W100000").AutoFilter Field:=7, Operator:=xlFilterValues, Criteria1:="Banana"
ActiveSheet.Range("A1:W100000").AutoFilter Field:=8, Operator:=xlFilterValues, Criteria1:="=>"& Date-7)
是否可以通过将“If”用作数组,例如“(If field 7 = Apple, fields 8 = "=>"& Date-3) 和 (If field 7 = Banana,字段 8 = "=>"& Date-7)"?
请帮忙
Sub Get_Value()
Sheets.ADD After:=Sheets(Sheets.count)
ActiveSheet.Name = "Sheet2"
Worksheets("Sheet1").Select
Worksheets("Sheet1").AutoFilterMode = False
Application.DisplayAlerts = False
ActiveSheet.Range("A1:AZ100000").AutoFilter Field:=7, Criteria1:="Apple"
ActiveSheet.Range("A1:AZ100000").AutoFilter Field:=8, Criteria1:="<=" & Date - 3
If (ActiveSheet.Range("G2", Range("G" & Rows.count).End(xlUp)).SpecialCells(xlCellTypeVisible).count - 1) = 0 Then
MsgBox "There are no values found"
Else
Worksheets("Sheet1").Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Application.CutCopyMode = False
Selection.Copy
Worksheets("Sheet2").Select
Range("A1").Select
ActiveSheet.Paste
End If
Worksheets("Sheet1").Select
Worksheets("Sheet1").AutoFilterMode = False
Application.DisplayAlerts = False
ActiveSheet.Range("A1:AZ100000").AutoFilter Field:=7, Criteria1:="Banana"
ActiveSheet.Range("A1:AZ100000").AutoFilter Field:=8, Criteria1:="<=" & Date - 7
If (ActiveSheet.Range("G2", Range("G" & Rows.count).End(xlUp)).SpecialCells(xlCellTypeVisible).count - 1) = 0 Then
MsgBox "There are no values found"
Else
ActiveSheet.Range("G2", Range("G" & Rows.count).End(xlUp)).SpecialCells(xlCellTypeVisible).Copy
Worksheets("Sheet2").Select
Range("A1").Select
ActiveSheet.Paste
End If
结束子
【问题讨论】:
-
如果您需要
(7=A AND 8=3)OR(7=B AND 8=7),那么根据您打算用它做什么,有几种可能性。你打算用它做什么?查看它,打印它,将它或其值复制到另一个工作表等。请澄清。另外,如果您没有 99,999 行数据,您可以考虑计算最后一行。 -
我想将过滤后的数据复制到另一个工作表。如果我使用上面的代码,那么我将不得不复制第一个结果,即 7=A 和 8=3(有时可能没有结果),然后再次应用过滤器,即 7=B 和 8=7 并将第二个结果复制到另一张纸的下一个可用行。为了避免这种重复或重复,我正在寻找具有上述标准的单个过滤器并复制到另一张纸上。工作表不会有 99,999 行数据。
-
值是否正常,还是您也需要格式和公式?你能发布你到目前为止的完整代码吗?
-
@VBasic2008 - 我添加了完整的代码。如果你也能在值、格式和公式方面提供帮助,那就太好了。提前致谢!