How to freeze rows in excel

Share

Facebook
Twitter
LinkedIn

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

Excel Freeze panes - why you need them

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”.

  1. Select the row immediately under the rows you want to freeze (For example, if you want to freeze rows 1:4, select row 5).
  2. You can click on the row number to select the entire row.
  3. Go to View Ribbon and click on “Freeze Panes” and select the first option (which is also “Freeze panes”)
  4. That is it. Your top rows are now frozen.

See this illustration to understand the process.

How to freeze top rows in Excel?

Demo of Before & After Freeze Panes

Here is a quick demo the freeze panes in action for a busy sales report.

Before and after freezing rows in excel

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:

How to freeze columns in Excel

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

Freeze panes button in View ribbon of Excel
  1. Select the first column after the columns you want to freeze (for example if you want to freeze column A, then select B)
  2. Go to View Ribbon, select Freeze Panes > Freeze Panes.
  3. 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:

Freezing both rows & columns at the same time in Excel
  1. To freeze both rows & columns, select the first cell under the freeze area. See this illustration to understand what I mean.
How to freeze rows & columns in Excel
  1. 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.
  2. 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.

How to remove freeze in Excel

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)

Splitting in Excel

Here is a quickly illustration of Freeze vs. Split.

freeze vs split - Excel demo

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.
Focus cell in Excel - demo
  • 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.

Facebook
Twitter
LinkedIn

Share this tip with your colleagues

Excel and Power BI tips - Chandoo.org Newsletter

Get FREE Excel + Power BI Tips

Simple, fun and useful emails, once per week.

Learn & be awesome.

Welcome to Chandoo.org

Thank you so much for visiting. My aim is to make you awesome in Excel & Power BI. I do this by sharing videos, tips, examples and downloads on this website. There are more than 1,000 pages with all things Excel, Power BI, Dashboards & VBA here. Go ahead and spend few minutes to be AWESOME.

Read my storyFREE Excel tips book

Overall I learned a lot and I thought you did a great job of explaining how to do things. This will definitely elevate my reporting in the future.
Rebekah S
Reporting Analyst
Excel formula list - 100+ examples and howto guide for you

From simple to complex, there is a formula for every occasion. Check out the list now.

Calendars, invoices, trackers and much more. All free, fun and fantastic.

Advanced Pivot Table tricks

Power Query, Data model, DAX, Filters, Slicers, Conditional formats and beautiful charts. It's all here.

Still on fence about Power BI? In this getting started guide, learn what is Power BI, how to get it and how to create your first report from scratch.

14 Responses to “How many ‘Friday the 13th’s are in this year? [Formula fun + challenge]”

  1. 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

  2. Brian says:

    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

    • Brian says:

      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

  3. Alex Groberman says:

    =MATCH(3,MMULT(N(WEEKDAY(DATE(C3+ROW(1:100)-1,COLUMN(A:L),13))=6),1^ROW(1:12)),)+C3-1

    • David N says:

      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)

  4. SunnyKow says:

    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

    • SunnyKow says:

      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

      • SunnyKow says:

        *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

  5. Devesh says:

    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

  6. Pablo says:

    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

  7. Micah Dail says:

    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"))), "")), ""))}

  8. Jason Morin says:

    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"))

  9. jmdias says:

    {=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

Leave a Reply