Excel 如何将第三个可见单元格定义为B列中的变量

Excel 如何将第三个可见单元格定义为B列中的变量,excel,vba,filter,Excel,Vba,Filter,我想在我的过滤列B中定义第三个可见单元格的变量。 我的第三个可见单元格的位置可以根据在我的过滤器中选择的值进行更改 在我的例子中,第三个单元格是B16,但它并不总是这个值。如果我能够在B列中定义第三个可见单元格的变量,我就能够通过该变量更改VBA代码中的B16 Sub jfdjdgfjg() Dim LastRow As Long LastRow = ActiveSheet.Range("B" & Rows.Count).End(xlUp).Row Active

我想在我的过滤列B中定义第三个可见单元格的变量。
我的第三个可见单元格的位置可以根据在我的过滤器中选择的值进行更改

在我的例子中,第三个单元格是B16,但它并不总是这个值。如果我能够在B列中定义第三个可见单元格的变量,我就能够通过该变量更改VBA代码中的B16

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
这是一种方法

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


您可以在可见单元格上循环并按如下方式计数:

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

非常感谢你们大家,它工作得很好,@Tim,我不得不对你们的代码做一些修改,使之适应我的宏,但它工作得很好……很高兴我能帮上忙!