我有一张包含以下格式数据的Excel表格:
Title
Summary A
A info 1
A info 2
A info 3
Summary B
B info 1
B info 2
Summary C
所以现在我只有“标题”作为excel中的冻结窗格。它工作正常,除了有大量数据之外,所以当你在工作表的中间时很难知道你是在summary A
还是summary B
工作。
有谁知道如何动态冻结窗格?即,最初title
和Summary A
将被冻结。然后,当用户向下滚动到下一部分时,Title
和Summary B
将被冻结,依此类推。
答案 0 :(得分:3)
您可以尝试这一点(在工作表代码模块中)。每次选择更改时,它会在第一列中向上检查“摘要*”等内容:如果工作表尚未冻结到该行,则会进行调整。
一个难点是,要向上滚动,您必须单击顶部窗格中的一行......
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static lastFreeze As Long
Dim c As Range, r As Long, sel As Range
Set sel = Selection
'get the first cell on the selected row, then
' go up until find a content like "Summary*"
Set c = Target.Parent.Cells(Target.Cells(1).Row, 1)
Do While (Not c.Value Like "Summary*") And c.Row > 1
Set c = c.Offset(-1, 0)
Loop
'need to switch freeze location?
If c.Row > 1 And c.Row <> lastFreeze Then
ActiveWindow.FreezePanes = False
'prevent re-triggering event
Application.EnableEvents = False
Application.GoTo c.Offset(-1, 0), True
c.Offset(1, 0).Select
ActiveWindow.FreezePanes = True
sel.Select
Application.EnableEvents = True
lastFreeze = c.Row
End If
End Sub
答案 1 :(得分:1)
这可能有点晚了,但我正在寻找这样的解决方案,我想出了一个更好的方法,因为解冻和重新冻结可能会非常激动。而是尝试分组:http://office.microsoft.com/en-us/excel-help/outline-group-data-in-a-worksheet-HA010095247.aspx