как определить мою 3-ю видимую ячейку как переменную в столбце B - PullRequest
1 голос
/ 23 мая 2019

Я хотел бы определить переменную 3-й видимой ячейки в моем отфильтрованном столбце B.
Положение моей 3-й видимой ячейки может изменяться в соответствии со значением, выбранным в моем фильтре.

enter image description here

В моем примере третья ячейка - B16, но это не всегда это значение.Если мне удастся определить переменную моей 3-й видимой ячейки в столбце B, я смогу изменить B16 в своем коде VBA на эту переменную.

Sub jfdjdgfjg()
    Dim LastRow As Long
    LastRow = ActiveSheet.Range("B" & Rows.Count).End(xlUp).Row
    ActiveCell.Formula = "= SUM(B16:B" & LastRow & ")" 'Sum until lastrow
End Sub

Ответы [ 2 ]

1 голос
/ 23 мая 2019

Вы можете перебрать видимые ячейки и считать их так:

Option Explicit

Private Sub Example()
    MsgBox GetFilteredRowNumber(ActiveSheet.Range("B:B"), 3)
End Sub

Private Function GetFilteredRowNumber(ByRef r As Range, ByRef num As Long) As Long
    Dim aCell As Range, i As Long
    GetFilteredRowNumber = 0
    For Each aCell In Intersect(r.Parent.UsedRange, r.SpecialCells(xlCellTypeVisible)).Cells
        i = i + 1
        If i = num Then
            GetFilteredRowNumber = aCell.Row
            Exit For
        End If
    Next aCell
End Function
1 голос
/ 23 мая 2019

Это один метод

Option Explicit

Sub thirdviscell()
Dim LRow As Long, i As Long, counter As Long
Dim thirdcell As Range

With ThisWorkbook.Sheets(1)
    LRow = .Cells(.Rows.Count, "A").End(xlUp).Row

    For i = 2 To LRow 'assuming a header row not to be counted
        If .Rows(i).EntireRow.Hidden = False Then counter = counter + 1
        If counter = 3 Then 
            Set thirdcell = .Cells(i, "B")
            Exit For
        End If
    Next i
End With

MsgBox "The third visible cell's address is " & thirdcell.Address(0,0), vbInformation

End Sub

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