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

VBA:如何从过滤数据中获取当前区域?,vba,excel,range,filtering,variant,Vba,Excel,Range,Filtering,Variant,我想弄清楚如何在过滤到变量对象后获取数据。当我使用此选项时: table = ActiveSheet.Range("A1").CurrentRegion 我正在获取所有数据,但只需要筛选 工作簿屏幕截图: 您可以使用特殊单元格(xlCellTypeVisible)获取筛选的行: Dim Tbl As Range Set Tbl = ActiveSheet.Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible) ' for DEBUG

我想弄清楚如何在过滤到变量对象后获取数据。当我使用此选项时:

table = ActiveSheet.Range("A1").CurrentRegion
我正在获取所有数据,但只需要筛选

工作簿屏幕截图:

您可以使用
特殊单元格(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
选项显式
子变量范围()
Dim BasketCostFiltRng As范围
最后一排一样长
暗变双
使用工作表(“Sheet1”)<--将“Sheet1”修改为工作表的名称
LastRow=.Cells(.Rows.Count,“D”).End(xlUp).Row
'仅获取D列中的筛选器行
Set-BasketCostFiltRng=.Range(“D2:D”和LastRow).SpecialCells(xlCellTypeVisible)
'获取列“D”中仅可见单元格的方差(过滤后在列“A”中仅显示1100和1112)
VarRes=WorksheetFunction.Var(basketcostfilterng)
MsgBox VarRes
以
端接头

您可以使用
特殊单元格来获得:

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

就在我之后几秒钟。。。你一直在为这件事埋伏;)好的,现在我有了一个对象,它包含了这个单元格的所有信息,我怎样才能得到值?我需要这些数据来计算每个月的方差。@KamilZawistowski您可以将其读入数组,但为此,您需要共享您的工作表数据,以便我们更好地理解drive.google.com/open?id=0B5PmrbRk4Uarai1fQk9SLWNrb1U您有示例工作簿。假设我想在、、Zakupy“”工作表中输入文件管理器客户编号1126和1100,然后我想计算篮子成本的差异。@KamilZawistowski这不是它的工作方式,因此,您可以将相关数据的屏幕截图共享给您的帖子。@KamilZawistowski那么您想从数据中计算差异的列是哪一列?