Данные из следующей видимой строки на другом листе - PullRequest
0 голосов
/ 27 января 2019

Возможно, это где-то здесь, но у меня проблемы с поиском.Нужно получить значение из отфильтрованного диапазона на другом листе без необходимости настраивать цикл или переходить на этот другой лист.Для нефильтрованных данных это работает: я работаю с листа с именем "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

Выше приведено значение того, что находится в столбце "A" в SelRow + 1, если таблица данныхнефильтрованный, но если у меня есть фильтр, все, что мне нужно, это то, что указано в столбце «А» в первой видимой строке после SelRow в листе данных.

Спасибо

1 Ответ

0 голосов
/ 27 января 2019

Вам нужно найти первую видимую ячейку после найденной ячейки. Это можно легко сделать с помощью метода 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...