来自不同工作表上下一个可见行的数据

时间:2019-01-27 01:20:28

标签: excel vba

这可能在这里的某个地方,但是我找不到它。 希望从另一张工作表上的过滤范围中获取一个值,而不必设置循环或转到另一张工作表。 对于未过滤的数据,此方法有效: 我正在使用名为“ Main”的工作表

for x = 1 to whatever
SelRow = Sheets("Data").Range("D:D").Find(Range("D" & x)).row
MsgBox Sheets("Data").Range("A" & SelRow + 1)
next x

如果未过滤数据表,上述内容将为我提供SelRow + 1上Col“ A”中任何值的值,但是如果我有一个过滤器,则我需要的是1号Col“ A”中的任何值数据表中SelRow之后的可见行。

谢谢

1 个答案:

答案 0 :(得分:1)

您需要找到找到的单元之后的第一个可见单元。使用Range.SpecialCells方法可以轻松实现这一点。

Option Explicit

Sub Macro1()

    Dim x As Long, whatever As Long, m As Variant, wsm As Worksheet

    Set wsm = Worksheets("main")

    With Worksheets("data")

        whatever = wsm.Cells(.Rows.Count, "D").End(xlUp).Row

        For x = 1 To whatever
            m = Application.Match(wsm.Cells(x, "D"), .Range("D:D"), 0)
            If Not IsError(m) Then
                Debug.Print .Range(.Cells(m + 1, "A"), .Cells(.Rows.Count, "A")).SpecialCells(xlCellTypeVisible).Cells(1).Value
            End If
        Next x

    End With

End Sub