所以我需要从只有某些值的工作表中提取信息。从大约 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 列中获取该行的值吗?
谢谢
您始终可以使用以下命令检索特定单元格(如 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
我认为您需要选择是否要获取特定的单元格,例如:
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