3

Я знаком с основными функциональными возможностями панели замораживания. Если я замораживаю первый столбец с помощью Freeze Pane > Freeze First Column , он работает против горизонтальной прокрутки, но не против вертикальной прокрутки.

Я бы хотел, чтобы колонка была заморожена независимо от того, как я прокручиваю. То есть то, что находится в первом столбце, всегда должно оставаться видимым, независимо от того, как я прокручиваю остальную часть окна. Это возможно?

редактировать

Чтобы было ясно, обычные панели замораживания не будут работать, потому что я не хочу, чтобы какие-либо строки были заблокированы. Поэтому, когда я выполняю вертикальную прокрутку, я хочу, чтобы первый столбец не прокручивался, а все строки (за исключением ячеек в первом столбце) прокручивались как обычно.

3 ответа3

3

Вот что вы можете сделать.

  • Сначала разверните листы в своей рабочей книге, щелкнув левой кнопкой мыши на маленьком значке взаимосвязанных окон (квадратов) под красным значком закрытия в верхнем правом углу окна Excel.
  • Создайте второе окно для своей рабочей книги, щелкнув правой кнопкой мыши верхнюю границу рабочей таблицы (над идентификаторами строк A, B и т.д.). -
  • Выберите View / Arrange All с установленным переключателем "Вертикально" и отмеченным "Windows активной книги".
  • Отрегулируйте вертикальные границы двух окон так, чтобы в левом окне отображались столбцы "сводки", которые вам интересно видеть, а в правом - оставшееся пространство.
  • В правом окне вставьте новый столбец справа от столбцов, которые отображаются в левом окне, а затем прокрутите правый лист так, чтобы этот столбец был самым левым, отображаемым в правом окне. (Новый столбец не будет виден в левом окне.)
  • Уменьшите ширину столбца, чтобы сделать узкое поле, а затем заморозьте его на месте (я предполагаю, что вы также заморозите верхний ряд).

В итоге это будет выглядеть примерно так:

Поскольку прокрутка двух окон не синхронизирована, вы увидите сводные номера, которые вас интересуют, в окне слева, и вы сможете без проблем прокрутить оставшуюся часть листа в правом окне.

2

Основываясь на ответе Чаффа, я написал следующий макрос. Он выполняет то, что описывает 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
1

Это возможно:

Просто выберите ячейку B2 и нажмите « Стоп-кадр»:

Это сохранит все слева и сверху ячейки видимыми, то есть строку 1 и столбец A !

Если вам нужен только левый столбец, просто выберите вместо него ячейку A2 или нажмите « Заморозить первый столбец».

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .