3

所以我需要从只有特定值的工作表中提取信息。从大约 550 行到 50 行,分布在整个工作表中。

所以我为此使用了自动过滤器。现在我只看到符合我的条件的行,但我怎样才能得到特定范围的值?

我来了这么远:

我知道我必须使用

RangeINamed.SpecialCells(xlCellTypeVisible)

仅使用可见信息。它适用于获取起始行和最后一行

startRow = bulkbatchRange.SpecialCells(xlCellTypeVisible).row
endRow = startRow + bulkbatchRange.SpecialCells(xlCellTypeVisible).rows.Count

但现在我需要获取特定列的值,我想使用 For 循环,这样我就可以遍历所有可见行。

所以我试着做

RangeINamed.SpecialCells(xlCellTypeVisible).range("U" & rowNumber).value 

那没有用,它什么也没给我。现在我很无能,所以有人可能知道我如何在 RangeINamed 的 U 列中获取该行的值吗?

谢谢

4

2 回答 2

2

您始终可以使用以下命令检索特定单元格中的值,例如U10

Range("U10").Value

该行是否隐藏。

编辑#1

这是一个小例子,它通过自动过滤表的 A 列向下循环。它查找第三个可见行(不包括标题行):

Sub GoDownFilter()
    Dim rLook As Range, r As Range
    Set rLook = Intersect(ActiveSheet.UsedRange, Range("A:A").Cells.SpecialCells(xlCellTypeVisible))
    rLook.Select
    K = 0
    For Each r In rLook
        If K = 3 Then
            r.Select
            MsgBox "The third visible row has been selected"
            Exit Sub
        End If
        K = K + 1
    Next r
End Sub
于 2013-10-11T13:04:22.610 回答
2

我认为您需要选择是否要获得特定的单元格,例如:

Range("U10").Value

或使用类似的相对单元格

RangeINamed.SpecialCells(xlCellTypeVisible)(2,3).Value

或者

RangeINamed.SpecialCells(xlCellTypeVisible)(2,3).Address 'To see if you are getting it right

编辑:

过滤和迭代的完整代码。

Sub Filter()
Dim tableRange As Range, var, actualRow As Integer, lastRow As Integer

Set tableRange = Range("PUT_THE_TABLE_RANGE_HERE")

' Filter 
With tableRange
    Call .AutoFilter(5, "SPECIFIC_FILTER")
End With

Set f = tableRange.SpecialCells(xlCellTypeVisible)

With tableRange
    Call .AutoFilter(5)
End With

For Each var In f.Cells.Rows
    actualRow = var.Row
    If actualRow <> 1 Then
        ' Do something
    End If
Next
End Sub
于 2013-10-11T13:14:38.367 回答