VBA: 如何从过滤后的数据中获取当前区域?

VBA: How to get current region from filtered data?

我想弄清楚如何在过滤到变体对象后获取数据。当我使用这个时:

table = ActiveSheet.Range("A1").CurrentRegion

我正在获取所有数据,但我只想过滤。

工作簿屏幕截图:

您可以使用 SpecialCells(xlCellTypeVisible) 获取过滤后的行:

Dim Tbl As Range

Set Tbl = ActiveSheet.Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible)
' for DEBUG onlu
Debug.Print Tbl.Address

编辑 1:完整代码

Option Explicit

Sub VarfiltRange()

Dim BasketCostFiltRng As Range
Dim LastRow As Long
Dim VarRes As Double

With Worksheets("Sheet1") '< -- modift "Sheet1" to your sheet's name
    LastRow = .Cells(.Rows.Count, "D").End(xlUp).Row

    ' get only the filteres rows in column D
    Set BasketCostFiltRng = .Range("D2:D" & LastRow).SpecialCells(xlCellTypeVisible)

    ' get the variance of only visible cells in Column "D" (after you filter to show only 1100 and 1112 in column "A")
    VarRes = WorksheetFunction.Var(BasketCostFiltRng)
    MsgBox VarRes
End With

End Sub

您可以使用 SpecialCells 获取:

Sheet1.AutoFilter.Range.SpecialCells(xlCellTypeVisible).Address