Получить номер строки автозаполненных строк в Excel с VBA - PullRequest
0 голосов
/ 14 ноября 2018

Я хочу получить номер строки автофильтрованных строк.

Я использовал этот код

With xlsWkSheet      
    With .Range("A1").CurrentRegion
        .AutoFilter Field:=4, Criteria1:="88684240"
        .AutoFilter Field:=19, Criteria1:="88684239"            
        Set xlsRangeAutoFilter = .SpecialCells(xlCellTypeVisible)
    End With
End With

Но я понятия не имею, как использовать xlsRangeAutoFilter для получения номера строки автофильтрованного (Visible) линии

Большое спасибо за помощь

1 Ответ

0 голосов
/ 14 ноября 2018

Вы можете использовать метод WorksheetFunction.Subtotal для подсчета видимых строк и содержащих в них данные (обратите внимание, что видимые пробелы не будут учитываться):

NumberOfRows = Application.WorksheetFunction.Subtotal(3, xlsWkSheet.Range("A1:A" & xlsWkSheet.Range("A1").CurrentRegion.Rows.Count))

или альтернативноболее надежный метод:

xlsWkSheet.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Cells.Count - 1

Редактировать в соответствии с комментарием:

Чтобы вывести все отфильтрованные номера строк, вы должны пройти по областям.

    With .Range("A1").CurrentRegion
        Dim Area As Range
        For Each Area In .Columns(1).SpecialCells(xlCellTypeVisible).Cells.Rows.Areas
            Dim AreaRow As Range
            For Each AreaRow In Area.Rows

                Debug.Print AreaRow.Row 'output each row number in intermediate window

            Next AreaRow
        Next Area
    End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...