Ever have a report that is too big to fit in one screen but when you scroll you loose the context? Something like this..

Use FREEZE PANES option in Excel to “Freeze” top rows / columns

We can use the excellent “Freeze panes” option in Excel to make the top few rows (and columns) sticky. This will make your reports so much better. Here is the process to “freeze top rows”.
- Select the row immediately under the rows you want to freeze (For example, if you want to freeze rows 1:4, select row 5).
- You can click on the row number to select the entire row.
- Go to View Ribbon and click on “Freeze Panes” and select the first option (which is also “Freeze panes”)
- That is it. Your top rows are now frozen.
See this illustration to understand the process.

Demo of Before & After Freeze Panes
Here is a quick demo the freeze panes in action for a busy sales report.

How to freeze second row in Excel?
To freeze second row (or any number of rows), just select the row immediately under the data. For example, to freeze second row, you select row #3.
Then go to View ribbon and click on Freeze Panes > Freeze Panes.
Your first two rows are now frozen or made sticky.
How to Freeze the first few columns?
You can use the same technique to freeze first few columns so you can scroll horizontally and still have visibility about the data. For example, something like this:

To freeze first few columns in your spreadsheet, follow these steps:

- Select the first column after the columns you want to freeze (for example if you want to freeze column A, then select B)
- Go to View Ribbon, select Freeze Panes > Freeze Panes.
- That is it. Your first few columns are now sticky.
How to freeze both rows & columns?
You can also use the “freeze panes” option of Excel to freeze or sticky both rows & columns. This is incredibly helpful when dealing with big spreadsheets or reports. For example, this is how the freeze would look like:

- To freeze both rows & columns, select the first cell under the freeze area. See this illustration to understand what I mean.

- After you selected the cell, go to View ribbon > Click on “Freeze panes” to freeze both rows & columns above & to the left of the selected cell.
- That is it. Now your freeze (sticky area) is set. You can scroll down or right and the frozen cells always stay visible.
How to “UNFREEZE” and go back to normal scrolling behavior
To Unfreeze or remove the freeze effect on your spreadsheet, Just go to View Ribbon and click on the Freeze Panes > Unfreeze Panes any time. You don’t have to select any cell or column or row for this. It will remove any freeze effect your have set.

Keyboard Shortcuts to Freeze and unfreeze
You can also use the keyboard shortcuts to quickly set or remove freeze effect on your worksheet.
- To freeze top rows: Go the the first cell under the area you want to freeze. Press Shift + Space to select entire row. Now Press the keyboard sequence ALT W F F to freeze the top rows.
- To freeze left few columns: Go to the first cell right of the columns you want to freeze. Press CTRL + Space to select the entire column. Press the keyboard sequence ALT W F F to freeze the left columns.
- To freeze both rows & columns: Select the first cell under & right of the area you want to freeze (for example, if you want to free rows 1:3, columns A:C, select D4). Press the keyboard sequence ALT W F F to freeze (sticky) the cells on top & left.
- To unfreeze: Press the keyboard sequence ALT W F F.
Freeze vs. Split in Excel
Excel also offers a helpful feature called “Split”. With this, we can split the spreadsheet into two individually scrollable areas. You can use this if you want to be able to see two halves of a big workbook and scroll separately.
To split the worksheet at a specific row (or column), select the entire row (or column) and then go to View ribbon and click on “Split” (shortcut sequence: ALT W S)

Here is a quickly illustration of Freeze vs. Split.

When to use Split?
If you want to be able to “scroll” individually in both areas of the screen, then split is what you need. On the other hand, if you just want to scroll on the sheet, but always have the “top few rows” visible, then freeze is the option for you.
Other options to consider
Excel also offers many other ways to work with your data when you have too much of it to see clearly. Here are few of my favorite options:
- Excel tables: These are perfect if you just want to see the heading row. Once you format your data as a table (CTRL T), the top row is always visible, even when you scroll. Learn more about Excel tables here.
- Focus Cell: This new feature allows to highlight the entire row & column of selected cell and follows your selection around the workbook. Very helpful to understand which data you are looking at any point of time. Find it in the view ribbon > focus cell (ALT W E). Here is a quick demo of focus cell in action.

- New Window: You can also use the “new window” option of the view ribbon to open another Excel window with the same file. This is helpful if you want to see sheet1 of the file in one monitor and sheet 2 of the file in another monitor. To open the new window, press ALT W N (or go to View ribbon and click on the New Window button). Any updates or changes you make in one window are automatically reflected in the other window.
In conclusion – Freeze panes is an excellent productivity tool
I think all spreadsheet power users need to know and use “freeze panes” to their advantage. It is an excellent tool to improve UX of your worksheets and stay on top of the data.
 
								

 
								 
								 
						









14 Responses to “How many ‘Friday the 13th’s are in this year? [Formula fun + challenge]”
in C3=2016
in C4=3
in C5=1 (the first next year with three Friday the 13ths)
=SMALL(IF(MMULT(--(MOD(DATE(C3+ROW(1:1000),COLUMN(A:L),13),7)=6),ROW(1:12)^0)=C4,C3+ROW(1:1000)),C5)
formula check in the next 1000 years
This will generate a table of counts of Friday the 13th's by year. If I didn't screw it up the next year with three is 2026.
I created a simple parameter table with a start date and end date that I wanted to evaluate. That calculates the number of days and generates a list of those days. Then filter and group. The generation of the list in power query (i.e. without populating a date table in excel) is pretty cool, otherwise this isn't really doing anything than creating a big date and filtering/counting.
let
Source = List.Dates(StartDateAsDate, Days2, #duration(1,0,0,0)),
ConvertDateListToTable = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
AddDayOfMonthColumn = Table.AddColumn(ConvertDateListToTable, "DayOfMonth", each Date.Day([Column1])),
AddYearColumn = Table.AddColumn(AddDayOfMonthColumn, "Year", each Date.Year([Column1])),
AddDayOfWeekColumn = Table.AddColumn(AddYearColumn, "Day of Week", each Date.DayOfWeek([Column1])),
FilterFriday13 = Table.SelectRows(AddDayOfWeekColumn, each ([DayOfMonth] = 13) and ([Day of Week] = 5)),
Friday13thsByYear = Table.Group(FilterFriday13, {"Year"}, {{"Number of Friday the 13ths!", each Table.RowCount(_), type number}})
in
Friday13thsByYear
With the parameters replaced by values should you want to play along at home. This runs for 20 years starting on 1/1/2016.
let
Source = List.Dates(#date(2016,1,1), 7300, #duration(1,0,0,0)),
ConvertDateListToTable = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
AddDayOfMonthColumn = Table.AddColumn(ConvertDateListToTable, "DayOfMonth", each Date.Day([Column1])),
AddYearColumn = Table.AddColumn(AddDayOfMonthColumn, "Year", each Date.Year([Column1])),
AddDayOfWeekColumn = Table.AddColumn(AddYearColumn, "Day of Week", each Date.DayOfWeek([Column1])),
FilterFriday13 = Table.SelectRows(AddDayOfWeekColumn, each ([DayOfMonth] = 13) and ([Day of Week] = 5)),
Friday13thsByYear = Table.Group(FilterFriday13, {"Year"}, {{"Number of Friday the 13ths!", each Table.RowCount(_), type number}})
in
Friday13thsByYear
=MATCH(3,MMULT(N(WEEKDAY(DATE(C3+ROW(1:100)-1,COLUMN(A:L),13))=6),1^ROW(1:12)),)+C3-1
It should be pointed out that Alex's solution, unlike some others, has the additional advantage of being non-array. My solution was nearly identical but with -- and SIGN instead of N and 1^.
=C3-1+MATCH(3,MMULT(--(WEEKDAY(DATE(C3-1+ROW(1:25),COLUMN(A:L),13))=6),SIGN(ROW(1:12))),0)
Sub Friday13()
Dim StartDate As Date
Dim EndDate As Date
Dim x As Long
Dim r As Long
Range("C7:C12").ClearContents
StartDate = CDate("01/01/" & Range("C3"))
EndDate = CDate("31/12/" & Range("C3"))
r = 7
For x = StartDate To EndDate
If Day(x) = 13 And Weekday(x, vbMonday) = 5 Then
Cells(r, 3) = Month(x)
r = r + 1
End If
Next
End Sub
Calculate next year with 3 Friday 13th. Good for 100 years different from year entered in cell C3
Sub ThreeFriday13()
Dim StartDate As Date
Dim EndDate As Date
Dim x As Long
Dim WhatYear As Integer
Dim Counter As Integer
Range("E7").ClearContents
StartDate = CDate("01/01/" & Range("C3") + 1)
EndDate = CDate("31/12/" & Range("C3") + 100)
Counter = 0
For x = StartDate To EndDate
If WhatYear Year(x) Then
WhatYear = Year(x)
'Different year so reset counter
Counter = 0
End If
If Day(x) = 13 And Weekday(x, vbMonday) = 5 Then
Counter = Counter + 1
If Counter = 3 Then
WhatYear = Year(x)
Exit For
End If
End If
Next
Range("E7") = WhatYear
End Sub
*RE-POST as not equal did not show earliuer
Calculate next year with 3 Friday 13th. Good for 100 years different from year entered in cell C3
Sub ThreeFriday13()
Dim StartDate As Date
Dim EndDate As Date
Dim x As Long
Dim WhatYear As Integer
Dim Counter As Integer
Range("E7").ClearContents
StartDate = CDate("01/01/" & Range("C3") + 1)
EndDate = CDate("31/12/" & Range("C3") + 100)
Counter = 0
For x = StartDate To EndDate
If WhatYear NE Year(x) Then
WhatYear = Year(x)
'Different year so reset counter
Counter = 0
End If
If Day(x) = 13 And Weekday(x, vbMonday) = 5 Then
Counter = Counter + 1
If Counter = 3 Then
WhatYear = Year(x)
Exit For
End If
End If
Next
Range("E7") = WhatYear
End Sub
earlier*
I've a doubt with using array formula here.
In sample workbook, I tried to replicate the formula again.
=IFERROR(SMALL(IF(WEEKDAY(DATE($C$3,ROW($A$1:$A$12),13))=6,ROW($A$1:$A$12)),$B7),"")
For this I selected C7 to C12, and typed the same formula and pressed ctrl+alt+Enter. But in all cells it is taking $B7 (and not $B7, $B8, $B9.... etc)
and since it is array formula I can't edit individual cell.
Please guide.
Thanks
Hi Chandoo,
Cool stuff. You need to clarify that the answer of 5 represents the 1st month in the year that has a Friday the 13th, and not the number of Fridays the 13th in the year. Subtle, but important difference.
Thanks,
Pablo
I like the MMULT() function far more, but here's how I would have tackled it. It uses an EDATE() base and MODE() over 100 years. I'm assuming that 100 years is enough time to catch the next year with 3 friday 13th's. Array entered, of course.
{=MODE(IFERROR(YEAR(IF((WEEKDAY(EDATE(DATE(C3, 1, 13), ROW(INDIRECT("1:1200"))))=6), EDATE(DATE(C3, 1, 13), ROW(INDIRECT("1:1200"))), "")), ""))}
Finding all the Friday the 13ths in a Year:
=SUMPRODUCT((DAY(ROW(INDIRECT(DATE(C3,1,1)&":"&DATE(C3,12,31))))=13)*(TEXT(ROW(INDIRECT(DATE(C3,1,1)&":"&DATE(C3,12,31))),"ddd")="Fri"))
{=sum(if(day.of.week(DATe($YEAR;{1;2;3;4;5;6;7;8;9;10;11;12};13);1)=6;1;0))}
just list the years