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
我想弄清楚如何在过滤到变体对象后获取数据。当我使用这个时:
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