我熟悉基本的冻结窗格功能。如果我按 冻结第一列Freeze Pane > Freeze First Column
,它会影响水平滚动,但不会影响垂直滚动。
我希望无论我如何滚动,列都会被冻结。换句话说,无论我如何滚动窗口的其余部分,第一列中的内容都应始终可见。这可能吗?
举个例子,如果我冻结了A
列并且我可以看到 10 行A1:A10
,那么无论我垂直还是水平滚动其余行,我总是会看到A1:A10
。
笔记:需要明确的是,常规冻结窗格不起作用,因为我不想锁定任何行。因此,当我垂直滚动时,我希望第一个柱子不滚动,但所有行(第一列中任何单元格之外的行)都正常滚动。
答案1
您可以执行以下操作。
- 首先,通过左键单击 Excel 窗口右上角红色关闭图标下方的小型互锁窗口(方块)图标,取消最大化工作簿中的工作表。
- 通过右键单击工作表的顶部边框(行标识符 A、B 等上方),为工作簿创建第二个窗口。 -
- 选择“查看/排列全部”,选中“垂直”单选按钮并选中“活动工作簿的窗口”。
- 调整两个窗口的垂直边界,使得左边的窗口只显示您感兴趣的“摘要”列,而右边的窗口填充其余空间。
- 在右侧窗口中,在左侧窗口中显示的列的右侧插入一个新列,然后滚动右侧工作表,使该列成为右侧窗口中显示的最左侧列。(新列在左侧窗口中不可见。)
- 减少列宽以缩小边距,然后将其冻结在原位(我假设您也会冻结顶行)。
最后它看起来会像这样:
由于两个窗口的滚动不同步,您将在左侧窗口中看到您感兴趣的摘要数字,并且能够毫无问题地在右侧窗口中滚动浏览工作表的其余部分。
答案2
根据 chuff 的回答,我编写了以下宏。它执行 chuff 描述的操作 - 此外,还将两个窗口命名为“仪表板”和“数据”,并从仪表板隐藏所有元素(滚动条、工作表选项卡、行/列标题)。
要使其运行,请执行以下操作:
- 复制以下代码
- 在 Excel 中,转到 Visual Basic 编辑器 ( Alt- F11)
- 右键单击左侧树中的项目并选择,插入新模块插入->模块(如果您也想将此技术应用于其他工作簿,请将其放在您的个人宏工作簿中)
- 将代码粘贴到新模块中
- 如果需要,可以通过更改代码的第一行来更改列数或两个窗口的标题,代码以
Const
- 执行代码 - 单击第一个程序并按F5- 或返回 Excel ( Alt- F11) 并按Alt- F8。在此处选择宏并单击跑步。(请注意,您也可以在此对话框中为其分配快捷方式)。
这是宏:
Sub SplitWindows()
Const cIntPaneColumns As Integer = 2
Const cStrPaneName As String = "Dashboard"
Const cStrMainName As String = "Data"
Dim i As Integer
Dim wndMain As Window, wndPane As Window
Dim dblOldWidth As Double, dblPaneWidth As Double
Set wndMain = ActiveWindow
If ThisWorkbook.Windows.Count > 1 Then
If MsgBox("Multiple windows for current workbook are already displayed. Do you want to close/rearrange them?", vbYesNo) = vbYes Then
For i = 2 To ThisWorkbook.Windows.Count
ThisWorkbook.Windows(1).Close
Next
Else
Exit Sub
End If
End If
Set wndMain = ActiveWindow
wndMain.WindowState = xlNormal
Set wndPane = wndMain.NewWindow
ActiveWorkbook.Windows.Arrange ArrangeStyle:=xlVertical
dblOldWidth = wndPane.Width
dblPaneWidth = Range("A1").Resize(, cIntPaneColumns).Width
ConfigureWindow wnd:=wndPane, blnShowElements:=False, _
strCaption:=cStrPaneName, dblWidth:=dblPaneWidth, _
dblLeft:=1
ConfigureWindow wnd:=wndMain, blnShowElements:=True, _
strCaption:=cStrMainName, _
dblWidth:=wndMain.Width + (dblOldWidth - dblPaneWidth), _
dblLeft:=dblPaneWidth
With wndMain
.ScrollColumn = cIntPaneColumns + 1
.Activate
.ActiveSheet.Range("A1").Offset(, cIntPaneColumns + 1).Select
If .FreezePanes Then .FreezePanes = False
.FreezePanes = True
End With
End Sub
Private Sub ConfigureWindow(wnd As Window, _
blnShowElements As Boolean, _
strCaption As String, _
dblWidth As Double, _
dblLeft As Double)
With wnd
.Width = dblWidth
.Left = dblLeft
.DisplayHeadings = blnShowElements
.DisplayHorizontalScrollBar = blnShowElements
.DisplayVerticalScrollBar = blnShowElements
.DisplayWorkbookTabs = blnShowElements
.Caption = strCaption
End With
End Sub
答案3
只需选择单元格B2
然后单击冻结窗格:
这将保持单元格左侧和顶部的所有内容可见,即行1
和列A
如果只想要左列,则选择单元格B1
- 或单击冻结第一列。
答案4
(我知道这是一篇很老的帖子,但无论是什么机缘让我来到这里,都意味着它仍然值得一个答案)。
似乎最能达到目的的功能是使用“监视窗口”,而不是使用分割窗口。
在公式丝带,在配方审核组,点击监视窗口。
在出现的窗口中,您可以添加多个单元格来查看其值。如果您选择一个范围,它将分别包含该范围内的所有单元格。您可以包含来自不同工作表的单元格,以节省从一个工作表切换到另一个工作表的麻烦。
监视窗口是一个功能齐全的窗口 - 您可以调整其大小并将其拖出 Excel 窗口的范围,例如拖到第二个显示器,或者您可以将其“停靠”在 Excel 屏幕的一侧。如果主 Excel 窗口被隐藏或最小化,它会消失,这是有道理的。如果您关闭监视窗口,它会记住您正在监视的内容,因此当您下次打开窗口时,对于同一工作簿,相同的单元格会被再次“监视”。
*它似乎没有响应Windows的“捕捉”功能。