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

3

我希望能够找出如何在过滤数据后将其转换为变量对象。当我使用以下代码时:

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

我得到了所有的数据,但我只想要筛选后的。

工作簿截图: 输入图片描述

2个回答

4
您可以使用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

好的,现在我有一个包含每个单元格信息的对象,我该如何获取值?我需要这些数据来计算每个月的方差。 - Kamil Zawistowski
1
@KamilZawistowski 你可以将它读入一个数组中,但是为此你需要共享你的工作表数据,这样我们才能更好地理解。 - Shai Rado
请打开drive.google.com/open?id=0B5PmrbRk4Uarai1fQk9SLWNrb1U,这里有一个示例工作簿。假设我想在“Zakupy”工作表中过滤客户编号为1126和1100的数据,然后计算购物篮成本的方差。 - Kamil Zawistowski
@KamilZawistowski 这不是 SO 的工作方式,您可以在帖子中分享相关数据的屏幕截图。 - Shai Rado
@KamilZawistowski,你想从数据中计算哪一列的方差? - Shai Rado
仅针对客户号1100和1112的D列。 - Kamil Zawistowski

3
您可以使用 SpecialCells 来获取它:
Sheet1.AutoFilter.Range.SpecialCells(xlCellTypeVisible).Address

就在我之后的几秒钟……你就潜伏着等待这个了吧 ;) - Shai Rado

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接