如何使用 C# 從模板建立 PowerPoint
由團隊撰寫 Iron Software
在大型試算表中向下滾動並看到您的列標題消失,是那些讓實際工作變慢的小煩惱之一。 Excel中的凍結窗格功能可以通過將特定行或列鎖定在適當位置來解決這一問題,這樣無論您滾動多遠,它們都會保持可見。 無論您是需要凍結資料集的頂行、鎖定寬表格的第一列,還是一次固定多行和多列,Excel都能精確控制螢幕上保持固定的內容。
在Excel中凍結行有助於在滾動時保持重要資訊可見,這對於大型資料集特別有用,因為這些資料集通常有許多行需要審閱或過濾。 標題行始終保持可見,這樣您總是知道您正在閱讀哪一列。 凍結窗格功能也是可逆的:移除凍結和應用凍結一樣簡單,並且當您的資料結構發生變化時,您可以隨時更新凍結區域。
本文將解釋如何在Excel中使用凍結窗格的每一種方法:如何凍結頂行,如何凍結第一列,如何一次凍結多行或多列,如何鎖定試算表中間的特定行,如何使用鍵盤快捷鍵,如何取消凍結行和列,以及如何使用拆分窗格作為替代方法。需要以程式方式對生成的Excel文件應用凍結窗格的.NET應用程式開發人員,將在最後找到如何在不需要Microsoft Office的情況下在C#中由IronXL處理此事的部分。
方法一:凍結頂行(最快的方法)
最佳用途:任何具有單一標題行的試算表需要在向下滾動時保持可見。
要在Excel中凍結頂行,請轉到視圖選項卡並選擇凍結頂行,這會使第一行在滾動時保持可見。 這是凍結窗格的最常見使用,不需要在此之前選擇單元格。
- 打開您的Excel試算表。
- 點擊功能區上的視圖選項卡。
- 在視窗組中點擊凍結窗格以打開下拉選單。
- 從列表中選擇凍結頂行。
當頂行被凍結時,其下方會出現一條較深的邊框,表明該行在滾動時被鎖定。 您還可以使用螢幕右側的滾動箭頭向下滾動,以驗證該行是否按預期保持固定。
凍結頂行對於在大型資料集中保持標題可見特別有用,使資料分析更容易,因為您可以在滾動試算表時瀏覽。 例如,如果您的員工資料集中有ID、姓名、部門、薪資和狀態的列,鎖定第一行意味著無論您查看哪一行,這些列的標籤都會保持可見。
鍵盤快捷鍵:要快速凍結頂行,請使用鍵盤快捷鍵Alt + W + F + R。 按順序按下每個鍵(而不是同時按下)以從鍵盤觸發凍結頂行,而不使用功能區。
Excel沒有單一的鍵盤快捷鍵來凍結窗格,但您可以使用Alt + W, F快速存取凍結窗格選單,然後按R來選擇凍結頂行,按C來選擇凍結第一列,或再次按F來選擇一般的凍結窗格選項。

方法二:凍結第一列
最佳用途:需要向右滾動並保持產品程式碼、員工ID或標籤列可見的寬試算表。
凍結第一列選項的工作方式與凍結頂行相同,但鎖定的是第A列。
- 點擊視圖選項卡。
- 點擊凍結窗格以打開下拉選單。
- 從選項中選擇凍結第一列。
Excel立即凍結第A列。 當您向右滾動工作表時,Excel中的第一列仍固定在螢幕的左側,而所有其他列正常滾動。 在凍結列的右側會出現一條較深的垂直邊框,標記固定區域與可滾動區域之間的界限。
這對於庫存清單、價格清單或任何需要在檢視向右的許多列資料時保持A列產品程式碼或項目名稱可見的試算表特別有用。

方法三:凍結多行
最佳用途:具有多行標題的試算表,例如標題行後接列標題行,或在任何需要鎖定不止第一行的情況下。
要在Excel中凍結多行,選擇位於您要凍結的最後一行正下方的單元格,然後轉到視圖選項卡並選擇凍結窗格。 關鍵是單元格選擇:Excel凍結選定單元格行以上的所有內容。
範例:凍結前兩行
- 點擊單元格A3(位於您要凍結的行正下方的第一個單元格)。
- 點擊視圖選項卡。
- 在下拉選單中點擊凍結窗格。
- 選擇凍結窗格(不是凍結頂行或凍結第一列)。
行1和行2現在被凍結。 當您向下滾動時,這兩行始終保持在螢幕頂部。 當凍結多行和多列時,最後凍結行下方和最後凍結列右側的邊框會顯得更粗,指示凍結區域。
如果您的表格標題佔用多行,例如標題行後有單獨的列標籤行,選擇最後一個標題行下方的行以凍結其上的所有標題行。 在銷售報告演示文件中,這意味著點擊A3將標題行和列標題行一起凍結。
如果凍結窗格選項為灰色,請確保您在普通視圖中且未在編輯單元格。 檢查視圖選項卡並確認已選擇普通視圖,而不是頁面佈局或分頁預覽,然後再嘗試一次。

方法4:凍結多列
最佳用途:需要鎖定前兩列或多列的試算表,例如在向右滾動時保持產品程式碼和產品名稱同時可見。
要凍結多列,過程與凍結多行相同:選擇位於您要凍結的最後一列右側的單元格。
範例:凍結前兩列
- 點擊單元格C1(位於您要凍結的列正右側的C列第一個單元格)。
- 點擊視圖選項卡。
- 在下拉選單中點擊凍結窗格。
- 選擇凍結窗格。
列A和列B現在被凍結。 向右滾動,這兩列始終保持固定在左側。 同樣較深的邊框出現在最後凍結列的右側。

方法五:同時凍結多行和多列
最佳用途:需要同時鎖定標題行和標識符列的大型資料集。
這時單元格選擇規則變得最為重要。 要一次凍結一塊行和列,您需要根據想要的凍結邊界位置選擇特定的單元格。
要在Excel中凍結多行和多列,選擇位於您希望固定的最後一行下方和最後一列右側的單元格,然後轉到視圖選項卡並選擇凍結窗格。
範例:凍結前兩行和第一列
- 點擊單元格B3。 這是第2行(要凍結的最後一行)下方的一行,和第A列(要凍結的最後一列)右側的一列。
- 點擊視圖選項卡。
- 點擊凍結窗格,然後選擇凍結窗格。
行1和行2以及列A全被凍結。 向右滾動,第一列始終可見。 向下滾動,兩個標題行保持在視圖中。
要凍結從頂行和第一列開始的單元格塊,例如前四行和最左邊的三列,選擇

方法六:使用單元格選擇凍結特定行
最佳用途:鎖定不是最前面的行,例如當您希望保持摘要行或子標題可見時。
要在Excel中凍結特定行,選擇位於您想凍結的行正下方的行,然後轉到視圖選項卡並點擊凍結窗格。
此方法適用於試算表中的任何行,而不僅僅是頂行。 例如,要鎖定特定的行1到5,同時讓第5行以下的行自由滾動:
- 點擊第6行中的任何單元格(位於您想凍結的最後一行的正下方)。
- 點擊視圖選項卡。
- 點擊凍結窗格 > 凍結窗格。
行1到5現在鎖定在螢幕的頂部。 請注意,Excel總是從第一行凍結到所選單元格上方的行,因此您無法在中間凍結一行而讓其上的行可以滾動。 凍結窗格總是從工作表的左上角開始錨定。
您可以將凍結窗格選項新增到快速存取工具欄以便於快速存取。 右鍵點擊功能區的任何位置,選擇自訂快速存取工具欄,搜尋凍結窗格,並新增它。 這樣可以在不每次都打開視圖選項卡的前提下只需要點擊一次即可使用該選項。

方法七:解除凍結行和列
最佳用途:移除凍結以重設工作表或更改凍結區域。
要在Excel中解除凍結行或列,請轉到視圖選項卡並選擇解除凍結窗格。 此選項僅在已經應用凍結時才會出現在凍結窗格下拉選單中。
- 點擊視圖選項卡。
- 點擊凍結窗格以打開下拉選單。
- 選擇解除凍結窗格。
Excel中的解除凍結窗格選項允許使用者通過移除任何凍結的行或列,返回工作表的原始佈局。 當您選擇解除凍結窗格時,它將移除所有凍結的列和行,允許您再次自由滾動工作表。
重要的一點:如果試算表已經有凍結的部分,您必須選擇解除凍結窗格才能設置新的凍結區域。 您不能在不先移除現有凍結的情況下直接更改凍結區域。

方法八:使用拆分窗格作為替代方案
最佳用途:在不凍結的情況下,同時查看同一工作表的兩個不同區域。
拆分窗格將工作表窗口分為兩個或四個獨立的窗格,每個窗格都可以獨立滾動。 與凍結窗格不同,拆分窗格不會將內容鎖定。 相反,它們建立了同一工作表的第二個視窗。
- 點擊您想要建立拆分的單元格。
- 點擊視圖選項卡。
- 在視窗組中點擊分割。
工作表在選定的單元格處被劃分。 每個窗格可以獨立滾動,因此您可以在單獨的窗格中同時查看第1行和第500行。 要移除分割,再次點擊視圖 > 分割以將其關閉。
當您需要比較大型資料集的兩個部分時,拆分窗格很有用,例如並排查看長列表的開頭和結尾。當您僅僅需要在滾動行和列時保持標題可見時,凍結窗格是更好的選擇。
在同一工作表中無法同時使用凍結窗格和拆分窗格。應用一個將移除另一個。 當您希望固定標題時選擇凍結窗格,當您想要進入相同資料的兩個可滾動視圖時選擇拆分窗格。

Excel表格中的凍結窗格
手動應用凍結窗格的一個替代方法是將您的資料範圍轉換為Excel表格。 將您的資料轉換為Excel表格可自動保持標題可見,而無需手動凍結行。
- 點擊您的資料範圍內的任何位置,如果您需要一個標題行,在轉換為表格之前先在資料上方插入一個空行。
- 按Ctrl + T打開建立表格對話框。
- 確認範圍及確認您的資料是否有標題,然後點擊確定。
Excel將範圍格式化為表格,並在您向下滾動表格行時,自動保持欄標籤在螢幕頂部的欄字母區域可見,即使沒有應用凍結窗格。 當表格是滾動期間的活動選擇時,此功能起作用。

常見問題和排除故障
在視圖選項卡中凍結窗格為灰色
當試算表處於頁面佈局或分頁預覽模式時,該選項不可用。 單擊視圖 > 普通視圖切換回標準視圖,凍結窗格選項將再次變為可用狀態。 當您正在編輯單元格時,它也會變為灰色。 請先按下Escape。
應用凍結後,凍結錯誤的行
這種情況發生在應用凍結前選擇的單元格位置錯誤時。 請記住:Excel凍結所選單元格上方和左側的所有內容。 如果凍結了第3行而不是第1行,您選擇的是第4行中的一個單元格,而不是第2行。請先解除凍結窗格,選擇正確的單元格,然後重新應用。
當檔案共享時,凍結窗格不會保存
凍結窗格作為Excel文件中工作表設置的一部分進行保存。 如果凍結未持續存在,請檢查檔案是否以.xlsx格式保存,而不是.csv或其他不支援這些設置的格式。 CSV檔案不會保留凍結窗格、格式或任何視圖設置。
爲應用凍結時,滾動位置突然跳轉
如果您應用凍結時視圖意外滾動,那是因為Excel會重新定位視窗以從可見窗口的頂部顯示凍結區域。 滾動回工作表頂部,從那裡重新應用凍結以避免此行為。
不先解除凍結無法更改凍結區域
如果試算表已有凍結區域,您必須選擇解除凍結窗格才能設置新的凍結區域。 您無法直接修改凍結邊界。 前往視圖 > 凍結窗格 > 解除凍結窗格,然後選擇您的新單元格位置並重新應用。
共享或匯出檔案後,凍結窗格消失
某些文件轉換會剝離視圖設置。 如果匯出為PDF,凍結窗格的概念不適用,因為PDF頁面不會滾動。 如果儲存為.csv,所有格式和視圖設置,包括凍結窗格,將會丟失。請將文件儲存為.xlsx以保留凍結窗格設置。 如果您還需要在應用凍結窗格後保護工作表不被編輯,請轉到審閱選項卡並在共享文件之前選擇保護工作表。
快速參考:Excel中的凍結窗格
| 目標 | 步驟 | 快速鍵 |
|---|---|---|
| 凍結頂行 | 視圖選項卡 > 凍結窗格 > 凍結頂行 | Alt + W + F + R |
| 凍結第一列 | 視圖選項卡 > 凍結窗格 > 凍結第一列 | Alt + W + F + C |
| 凍結多行 | 選擇最後凍結行之下的行中的單元格 > 視圖 > 凍結窗格 | Alt + W + F + F |
| 凍結多列 | 選擇最後凍結列右側的單元格 > 視圖 > 凍結窗格 | Alt + W + F + F |
| 同時凍結行和列 | 選擇凍結區域右下角的單元格 > 視圖 > 凍結窗格 | Alt + W + F + F |
| 解除所有窗格 | 視圖選項卡 > 凍結窗格 > 解除凍結窗格 | Alt + W + F + F |
| 新增到快速存取工具列 | 右鍵點擊功能區 > 自訂快速存取工具列 > 搜尋凍結窗格 > 新增 | 不適用 |
開發者專屬:使用IronXL以程式方式新增凍結窗格
如果您的應用程式生成用於使用者的大型資料集Excel文件,以程式方式新增凍結窗格可確保每個生成的工作簿在傳送時標題行已被鎖定。 IronXL是讓Excel文件中的凍結窗格可以在不需要在伺服器或開發機上安裝Microsoft Office的情況下適用於C#的一個.NET程式庫。
IronXL的CreateFreezePane()方法接受兩個參數:列分割位置和行分割位置,它們都使用零為基礎的索引。 列0等於列A,列1等於列B,依此類推。 調用CreateFreezePane(0, 1)會凍結頂行(位於行索引1上方的所有內容)。 調用CreateFreezePane(1, 1)同時凍結頂行和第一列。
這是一個實際範例:載入現有的員工資料集,凍結頂行以保持標題可見,並保存更新的文件:
using IronXL;
// Load the existing Excel workbook
WorkBook workBook = WorkBook.Load("employee-dataset.xlsx");
// Access the first sheet - freeze panes apply per worksheet
WorkSheet workSheet = workBook.DefaultWorkSheet;
// Freeze the top row: colSplit=0 (no columns frozen), rowSplit=1 (freeze row 1)
// Zero-based: rowSplit=1 means freeze everything above row index 1 (i.e. freeze row 1)
workSheet.CreateFreezePane(0, 1);
workBook.SaveAs("employee-dataset-frozen.xlsx");
using IronXL;
// Load the existing Excel workbook
WorkBook workBook = WorkBook.Load("employee-dataset.xlsx");
// Access the first sheet - freeze panes apply per worksheet
WorkSheet workSheet = workBook.DefaultWorkSheet;
// Freeze the top row: colSplit=0 (no columns frozen), rowSplit=1 (freeze row 1)
// Zero-based: rowSplit=1 means freeze everything above row index 1 (i.e. freeze row 1)
workSheet.CreateFreezePane(0, 1);
workBook.SaveAs("employee-dataset-frozen.xlsx");
Imports IronXL
' Load the existing Excel workbook
Dim workBook As WorkBook = WorkBook.Load("employee-dataset.xlsx")
' Access the first sheet - freeze panes apply per worksheet
Dim workSheet As WorkSheet = workBook.DefaultWorkSheet
' Freeze the top row: colSplit=0 (no columns frozen), rowSplit=1 (freeze row 1)
' Zero-based: rowSplit=1 means freeze everything above row index 1 (i.e. freeze row 1)
workSheet.CreateFreezePane(0, 1)
workBook.SaveAs("employee-dataset-frozen.xlsx")
要凍結多行,例如標題行和標頭行(前兩行),請傳遞rowSplit=2:
using IronXL;
WorkBook workBook = WorkBook.Load("sales-report.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;
// Freeze the first two rows (title row + column header row)
// colSplit=0 (no columns), rowSplit=2 (freeze rows 1 and 2)
workSheet.CreateFreezePane(0, 2);
workBook.SaveAs("sales-report-frozen.xlsx");
using IronXL;
WorkBook workBook = WorkBook.Load("sales-report.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;
// Freeze the first two rows (title row + column header row)
// colSplit=0 (no columns), rowSplit=2 (freeze rows 1 and 2)
workSheet.CreateFreezePane(0, 2);
workBook.SaveAs("sales-report-frozen.xlsx");
Imports IronXL
Dim workBook As WorkBook = WorkBook.Load("sales-report.xlsx")
Dim workSheet As WorkSheet = workBook.DefaultWorkSheet
' Freeze the first two rows (title row + column header row)
' colSplit=0 (no columns), rowSplit=2 (freeze rows 1 and 2)
workSheet.CreateFreezePane(0, 2)
workBook.SaveAs("sales-report-frozen.xlsx")
要同時凍結行和列,例如前兩行和第一列(相當於在Excel中選擇單元格B3),請傳遞兩個參數:
using IronXL;
WorkBook workBook = WorkBook.Load("inventory-list.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;
// Freeze first two rows and first column
// colSplit=1 (freeze column A), rowSplit=2 (freeze rows 1 and 2)
workSheet.CreateFreezePane(1, 2);
// To remove a freeze pane, use RemovePane()
// workSheet.RemovePane();
workBook.SaveAs("inventory-list-frozen.xlsx");
using IronXL;
WorkBook workBook = WorkBook.Load("inventory-list.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;
// Freeze first two rows and first column
// colSplit=1 (freeze column A), rowSplit=2 (freeze rows 1 and 2)
workSheet.CreateFreezePane(1, 2);
// To remove a freeze pane, use RemovePane()
// workSheet.RemovePane();
workBook.SaveAs("inventory-list-frozen.xlsx");
Imports IronXL
Dim workBook As WorkBook = WorkBook.Load("inventory-list.xlsx")
Dim workSheet As WorkSheet = workBook.DefaultWorkSheet
' Freeze first two rows and first column
' colSplit=1 (freeze column A), rowSplit=2 (freeze rows 1 and 2)
workSheet.CreateFreezePane(1, 2)
' To remove a freeze pane, use RemovePane()
' workSheet.RemovePane()
workBook.SaveAs("inventory-list-frozen.xlsx")
IronXL的CreateFreezePane()方法還接受一個四參數重載,以適應您希望分別控制初始滾動位置與凍結邊界的高級場景。 這對於大型資料集很有用,在保持標題鎖定的同時,您希望文件打開時已經滾動到特定區域。 RemovePane()方法可以一次性調用從工作表中移除所有現有的凍結或拆分窗格。
IronXL運行在.NET 6及更高版本上,相容Windows、Linux、macOS、Docker和Azure,是IronXL文件網站上的凍結窗格指南中使用的相同庫。
開始使用: 透過NuGet安裝 IronXL.Excel 安裝包。 可用30天全功能免費試用,不需要信用卡。
進一步閱讀:
包裝
凍結窗格是Excel中最實用的工具之一,能在不失去上下文的情況下瀏覽大型資料集。 對於大多數試算表,最快的方式是直接單擊視圖選項卡,點擊凍結窗格,然後根據您主要向下或向右滾動選擇凍結頂行或凍結第一列。 當試算表具有多行標題時,選擇最後一個標題行下方的單元格,然後選擇凍結窗格,就可以一步鎖定所有標題行。
需要同時凍結多行和多列時,規則始終相同:選擇位於您想凍結的所有內容正下方和右側的單元格,然後點擊凍結窗格。 要移除任何凍結,請前往視圖 > 凍結窗格 > 解除凍結窗格,它會立即清除所有被鎖定的行或列。 對於Excel表格,標題行在滾動時會自動保持可見,而無需進行任何凍結窗格配置。
對於在.NET應用中生成Excel文件的開發人員,IronXL提供CreateFreezePane()方法,以程式方式應用凍結窗格,確保您的應用程式生成的每個工作簿都會新增標題行鎖定並準備使用。 開始免費試用,在您的環境中探索完整功能集。
發現這裡沒有涵蓋的凍結窗格情境? 請在下面留下評論,或存取Iron Software部落格以獲得更多關於Excel格式化、資料管理和試算表自動化的指導。




