选择所有具有数据的行和列,然后使用多个条件进行过滤

时间:2018-12-21 04:38:05

标签: excel vba

如何选择所有包含数据的行和列,然后使用多个条件进行过滤?

我录制了一个宏。

    Sheet2.Activate
    Sheet2.Range("$A$1:$L$85").AutoFilter Field:=12, Criteria1:=Array( _
    "Apples", "Pineapple", "Oranges", "Mango", "Grapes", _
    "Banana", "Papaya"), Operator:=xlFilterValues
    Columns("A:L").Select
    Selection.copy
    Sheets("Food").Select
    Range("A:L").Select
    Sheet7.Paste'

我要选择A1到L1中的所有数据。但是我的代码仅适用于特定数量的行和列。如果数据从$A$1:$L$85开始变化并且超过85行且超过L列,它将无法捕获所有需要过滤的数据。

1 个答案:

答案 0 :(得分:0)

您实际上可以使用注释中提供的链接,但是可以尝试一下。
看来UsedRange方法在最新的Excel版本(当前使用Office 365)中有所改进。

Dim lc As Long, lr As Long
Dim r As Range

With Sheet2
  .AutoFilterMode = False
  With .UsedRange
    lr = .Rows.Count
    'lc = .Columns.Count
    lc = 12 '/* your column is bounded to L */
  End With

  Set r = .Range(.Cells(1, 1), .Cells(lr, lc))
  r.AutoFilter Field:=12, Criteria1:=Array( _
               "Apples", "Pineapple", "Oranges", "Mango", "Grapes", _
               "Banana", "Papaya"), Operator:=xlFilterValues

  r.SpecialCells(xlCellTypeVisible).Copy Sheet7.Range("A1")
End With