Excel 如何将第三个可见单元格定义为B列中的变量
我想在我的过滤列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
我的第三个可见单元格的位置可以根据在我的过滤器中选择的值进行更改 在我的例子中,第三个单元格是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,我不得不对你们的代码做一些修改,使之适应我的宏,但它工作得很好……很高兴我能帮上忙!