我正在尝试创建一个宏,它将只显示数据表的顶部20行和底部20行,并隐藏第20行和第n-19行之间的所有行。
第一行不是静态行-它可以被标识为B列中值为"Company“的行之后的下一行。
最后一行也不是静态的,因为数据的总行数会随着时间的推移而变化。
不幸的是,我不熟悉vba,而且这个逻辑很难实现。有没有人能帮我弄一个宏来做这件事?
任何帮助都是非常感谢的!
发布于 2018-01-05 06:57:25
这应该是可行的:
Sub hide_in_between()
Dim ws As Worksheet
Dim startCell As Range, endCell As Range
Set ws = Worksheets("Sheet1") ' CHANGE as necessary
With ws
Set startCell = .Range("B:B").Find(what:="Company").Offset(1, 0)
Set endCell = .Range("B" & .Rows.Count).End(xlUp)
Dim topGroup As Range, bottomGroup As Range
Set topGroup = .Range(startCell, startCell.Offset(19, 0))
Set bottomGroup = .Range(endCell.Offset(-19, 0), endCell)
Dim hiddenGroup As Range
Set hiddenGroup = .Range(topGroup.Rows(topGroup.Rows.Count), bottomGroup.Rows(1).Offset(-1, 0))
hiddenGroup.EntireRow.Hidden = True
End With
End Sub
它相对简单,如果不是有点冗长的话(它可能会被缩短)。然而,对于学习来说,这应该会有很大帮助。请注意,您
发布于 2018-01-05 07:06:34
首先将它们全部隐藏起来,然后取消隐藏顶部和底部:
Sub HideAndSeek()
n1 = Columns("B").Find("Company").Row + 1
n2 = Cells(Rows.Count, "B").End(xlUp).Row
Rows(n1 & ":" & n2).EntireRow.Hidden = True
For i = 0 To 19
Cells(i + n1, "B").EntireRow.Hidden = False
Cells(n2 - i, "B").EntireRow.Hidden = False
Next i
End Sub
https://stackoverflow.com/questions/48104634
复制相似问题