Excel 2010 - ตรึงคอลัมน์เพื่อเลื่อนทั้งแนวนอนและแนวตั้ง


3

ฉันคุ้นเคยกับฟังก์ชั่นการแช่แข็งพื้นฐาน ถ้าฉันตรึงคอลัมน์แรกด้วย Freeze Pane > Freeze First Columnมันทำงานได้กับการเลื่อนแนวนอน แต่ไม่ใช่การเลื่อนแนวตั้ง

ฉันต้องการให้คอลัมน์ตรึงไม่ว่าฉันจะเลื่อน IE สิ่งที่อยู่ในคอลัมน์แรกควรปรากฏให้เห็นอยู่เสมอไม่ว่าฉันจะเลื่อนส่วนที่เหลือของหน้าต่างอย่างไร เป็นไปได้ไหม

แก้ไข

เพื่อให้ชัดเจน Freeze Panes จะไม่ทำงานเพราะฉันไม่ต้องการให้แถวถูกล็อค ดังนั้นเมื่อฉันเลื่อนแนวตั้งฉันต้องการครั้งแรก คอลัมน์ เพื่อไม่เลื่อน แต่ทุกแถว (นอกเซลล์ใด ๆ ในคอลัมน์แรก) เพื่อเลื่อนตามปกติ


คุณหมายความว่าถ้าคุณเลื่อนลงคุณจะเห็นว่า A1: A10 แต่ไม่ใช่ส่วนที่เหลือของแถวที่ 1-10?!
Peter Albert

ใช่นั่นคือสิ่งที่ฉันกำลังมองหา
Jeremy Wiggins

1
สิ่งเดียวที่ใกล้เคียงกับสิ่งที่คุณต้องการคือการใช้ แยก (เลือก B2 แล้วคลิก View-Window-Split) อย่างไรก็ตามนี่มีข้อเสียมากมายที่ฉันไม่สามารถจินตนาการได้ว่าคุณต้องการสิ่งนี้ ... :-(
Peter Albert

ฉันแน่ใจว่าคุณต้องการแก้ปัญหาของคุณด้วยวิธีนี้ แต่คุณช่วยอธิบายเพิ่มเติมอีกเล็กน้อยว่าคุณพยายามทำอะไรให้สำเร็จ ฉันรู้สึกว่าคุณต้องการให้คอลัมน์ด้านซ้ายเป็นเหมือน nav-bar หรือแสดงผลลัพธ์ที่ปรับเปลี่ยนตามการเปลี่ยนแปลงที่คุณทำอยู่ลึกลงไปในตาราง
Dane

@Dane - สิ่งที่สองที่คุณพูด โดยทั่วไปจะแสดงเซลล์บางส่วนที่มีการคำนวณตามผลรวม & amp; ค่าเฉลี่ยของคอลัมน์อื่น ๆ สรุปประเภท ฉันต้องการดูข้อมูลสรุปแม้ว่าฉันจะลง 200 แถวของส่วน 'data' ของแผ่นงาน
Jeremy Wiggins

คำตอบ:


3

นี่คือสิ่งที่คุณสามารถทำได้

  • ขั้นแรกให้ยกเลิกเวิร์กชีทในเวิร์กบุ๊กของคุณโดยคลิกซ้ายที่ไอคอนหน้าต่างสี่เหลี่ยมเล็ก ๆ (สี่เหลี่ยม) ที่เชื่อมต่อกันใต้ไอคอนปิดสีแดงที่มุมบนขวาของหน้าต่าง Excel
  • สร้างหน้าต่างที่สองสำหรับสมุดงานของคุณโดยคลิกขวาที่ขอบด้านบนของแผ่นงานของคุณ (เหนือตัวระบุแถว A, B ฯลฯ ) -
  • เลือกดู / จัดเรียงทั้งหมดด้วยปุ่มตัวเลือก "แนวตั้ง" และเลือก "Windows ของสมุดงานที่ใช้งานอยู่"
  • ปรับขอบเขตแนวตั้งของหน้าต่างทั้งสองเพื่อให้หน้าต่างด้านซ้ายแสดงคอลัมน์ "สรุป" ที่คุณสนใจและส่วนด้านขวาเติมพื้นที่ที่เหลือ
  • ในหน้าต่างด้านขวาแทรกคอลัมน์ใหม่ทางด้านขวาของคอลัมน์ที่แสดงในหน้าต่างด้านซ้ายแล้วเลื่อนแผ่นด้านขวาเพื่อให้คอลัมน์นี้เป็นคอลัมน์ซ้ายสุดที่แสดงในหน้าต่างด้านขวา (คอลัมน์ใหม่จะไม่ปรากฏในหน้าต่างด้านซ้าย)
  • ลดความกว้างของคอลัมน์เพื่อทำให้ระยะห่างที่แคบลงแล้วตรึงไว้ที่ (ฉันสมมติว่าคุณจะตรึงแถวบนสุดด้วย)

ในท้ายที่สุดมันจะมีลักษณะดังนี้:

enter image description here

เนื่องจากการเลื่อนของหน้าต่างทั้งสองไม่ได้ซิงโครไนซ์คุณจะเห็นตัวเลขสรุปที่คุณสนใจในหน้าต่างทางด้านซ้ายและคุณจะสามารถเลื่อนดูส่วนที่เหลือของแผ่นงานในหน้าต่างด้านขวาได้โดยไม่มีปัญหา


คุณคลิกตรงไหนในขั้นตอนแรก?
Peter Albert

ดูคำตอบที่แก้ไขเพิ่มเติมข้างต้น
chuff

ยอดเยี่ยม! +1 ฉันไม่รู้ว่าคุณสามารถสร้างหน้าต่างใหม่ของสมุดงานเปิดที่มีอยู่ได้ดีมาก! ฉันใช้เสรีภาพในการเพิ่มภาพหน้าจอในคำตอบของคุณเนื่องจากฉันทำตามคำแนะนำของคุณอยู่แล้ว
Peter Albert

ฉันใช้เสรีภาพอื่น - และใช้วิธีการของคุณสำหรับมาโครด้านล่าง หวังว่าคุณจะไม่รังเกียจ! ;-)
Peter Albert

2

ตามคำตอบของ chuff ฉันเขียนแมโครต่อไปนี้ มันเป็นสิ่งที่ chuff อธิบาย - และนอกจากนี้ชื่อ "Dashboard" และ "Data" ของ windows สองและซ่อนองค์ประกอบทั้งหมด (แถบเลื่อน, แท็บแผ่นงาน, ส่วนหัวแถว / คอลัมน์) จากแดชบอร์ด

หากต้องการให้มันทำงานให้ทำดังต่อไปนี้:

  • คัดลอกรหัสด้านล่าง
  • ใน Excel ไปที่ Visual Basic Editor ( Alt - F11 )
  • แทรกโมดูลใหม่โดยคลิกขวาที่โครงการในต้นไม้ด้านซ้ายและเลือก แทรก - & gt; โมดูล (ในกรณีที่คุณต้องการใช้เทคนิคนี้กับเวิร์กบุคอื่น ๆ ให้วางไว้ในเวิร์กบุคแมโครส่วนตัวของคุณแทน)
  • วางรหัสในโมดูลใหม่
  • หากคุณต้องการให้เปลี่ยนจำนวนคอลัมน์หรือชื่อเรื่องของหน้าต่างทั้งสองโดยเปลี่ยนบรรทัดแรกของรหัสที่ขึ้นต้นด้วย 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

ว้าวมนุษย์นั่นยอดเยี่ยมมาก ขอบคุณ.
Jeremy Wiggins

ฉันยอมรับคำตอบของ @ chuff เนื่องจากเขาให้วิธีการใช้จริง แต่ขอบคุณมากสำหรับแมโครนี้!
Jeremy Wiggins

@JeremyWiggins: ไม่เป็นไร!
Peter Albert

ดีสำหรับคุณ @ Peter!
chuff

1

เป็นไปได้:

เพียงแค่เลือกเซลล์ B2 และคลิก บานหน้าต่างตรึง :

enter image description here

วิธีนี้จะทำให้ทุกอย่างปรากฏอยู่ด้านซ้ายและด้านบนของเซลล์เช่นแถว 1 และคอลัมน์ A!

หากคุณต้องการคอลัมน์ซ้ายเพียงเลือกเซลล์ A2 แทน - หรือคลิก ตรึงคอลัมน์แรก .


ฉันไม่ต้องการให้แถวใด ๆ ถูกตรึงแม้ว่า ฉันจะแก้ไข OP ให้ชัดเจนยิ่งขึ้น
Jeremy Wiggins

ฉันให้คำตอบทั่วไปเช่นเดียวกับวิธีการนี้คุณสามารถบรรลุสิ่งที่คุณต้องการตรึง ฉันอัปเดตคำตอบเพื่อแสดงวิธีการตรึงเพียงหนึ่งคอลัมน์ HTH!
Peter Albert

ตรึงคอลัมน์แรกค้างสำหรับการเลื่อนในแนวนอนเท่านั้น ฉันระบุใน OP ที่ฉันต้องการให้ถูกตรึงสำหรับการเลื่อนแนวตั้งเช่นกัน
Jeremy Wiggins
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.