Home > Data > Data Entry > Fill Blanks Fill Blank Cells in Excel ColumnSome Microsoft Excel worksheets contain cells that have been left blank, in order to make the headings and subheadings easier to read. However, if you want to sort or filter the list, you need to fill in the blanks, by copying the value from the first filled cell above the blank. Follow the instructions on this page to fill the blank cells, manually, or with an Excel macro. Note: To fill blank cells in Pivot Table headings, see how to Repeat Item Labels in Excel 2010 and later. |
In the screenshot below, cells that have been left blank, so the report headings and subheadings are easier to read. If you need to sort or filter this data, you need to fill the blanks cells, by copying the value from the first filled cell above the blank
To fill the blank cells manually, you will select all the blanks, enter a simple formula in each cell, then convert the formulas to values. Watch the video below, to see the steps, and the written steps are below the video.
Video: Fill Blank Cells ManuallyIn this video, watch the steps to manually select and fill blank cells, with the value from the cell above. Then, use a mouse shortcut to change the formulas to values, so you can safely sort and filter the data. Note: There is a video transcript at the end of the page. |
To fill the blank cells manually, there are 3 main steps:
-- 3) Change Formulas to Values
The first main step is to select all the blank cells that you want to fill.
To select the empty cells with Excel's built in Go To Special feature, follow these steps:
After you close the Go To Special dialog box:
Next, complete the following steps, to create a simple formula, that will copy the value from the closest heading above each blank cell.
Currently, blank cells in columns A and B are selected, and cell A3 is the active cell.
To build the formula, follow these steps:
In the screen shot below, you can see the formula in cell A3, and in the formula bar:
The final step will enter that formula in all the selected blank cells
Because the formula uses a relative reference, each cell's formula refers to the cell directly above it.
The final step, before you sort or filter the data, is to convert the "blank cell" formulas to values, to lock them in.
You can:
Follow these steps to change the "blank cell" formulas to values
To quickly change formulas into values, you can use this mouse shortcut, shown in the video below. The written instructions are on the Excel Data Entry Tips page. |
After you complete the above steps, to use the Paste Values command, the blank cells are filled in with values, instead of cell reference formulas.
With cell values "locked" in, you can safely sort or filter the list.
If you frequently have to fill blank cells, you may prefer to use a macro. The following Excel VBA code examples fill blank cells in the active column. Each example uses a different method to find the last row, and to fill blank cells programmatically
Tip: For more information on finding the last row, see Ron de Bruin's page: Find last row, column or last cell. Ron explains the advantages and disadvantages of each method.
-- Macro 1 - Dave Peterson -- Macro 2 - Rick Rothstein -- Macro 3 - Dave Peterson and Ron de Bruin -- Macro 4 - Alex Blakenburg |
In this fill blank cells macro, from Dave Peterson:
You can copy the code below, and paste it into a regular code module, in your own Excel file. Or, download the sample Excel file, and copy the code from there.
Sub FillColBlanks() 'by Dave Peterson 2004-01-06 'fill blank cells in column with value above 'https://www.contextures.com/xldataentry02.html Dim wks As Worksheet Dim rng As Range Dim LastRow As Long Dim col As Long Set wks = ActiveSheet With wks col = activecell.column 'or 'col = .range("b1").column Set rng = .UsedRange 'try to reset the lastcell LastRow = .Cells.SpecialCells(xlCellTypeLastCell).Row Set rng = Nothing On Error Resume Next Set rng = .Range(.Cells(2, col), .Cells(LastRow, col)) _ .Cells.SpecialCells(xlCellTypeBlanks) On Error GoTo 0 If rng Is Nothing Then MsgBox "No blanks found" Exit Sub Else rng.FormulaR1C1 = "=R[-1]C" End If 'replace formulas with values With .Cells(1, col).EntireColumn .Value = .Value End With End With End Sub
This fill blank cells macro, from Rick Rothstein
You can copy the code below, and paste it into your own Excel file. Or, download the sample Excel file, and copy the code from there.
Sub FillColBlanks_Offset() 'by Rick Rothstein 2009-10-24 'fill blank cells in column with value above 'https://www.contextures.com/xldataentry02.html Dim Area As Range, LastRow As Long On Error Resume Next LastRow = Cells.Find(What:="*", SearchOrder:=xlRows, _ SearchDirection:=xlPrevious, _ LookIn:=xlFormulas).Row For Each Area In ActiveCell.EntireColumn(1).Resize(LastRow). _ SpecialCells(xlCellTypeBlanks).Areas Area.Value = Area(1).Offset(-1).Value Next End Sub
This example combines Dave Peterson's code (Example 1), with the special cells test from Ron de Bruin.
You can copy the code below, and paste it into your own Excel file. Or, download the sample Excel file, and copy the code from there.
Sub FillColBlanksSpecial() 'https://www.contextures.com/xldataentry02.html 'by Dave Peterson 2004-01-06 'fill blank cells in column with value above '2010-10-12 incorporated Ron de Bruin's test ' for special cells limit 'https://www.rondebruin.nl/win/s4/win003.htm Dim wks As Worksheet Dim rng As Range Dim rng2 As Range Dim LastRow As Long Dim col As Long Dim lRows As Long Dim lLimit As Long Dim lCount As Long On Error Resume Next lRows = 2 'starting row lLimit = 8000 Set wks = ActiveSheet With wks col = ActiveCell.Column Set rng = .UsedRange 'try to reset the lastcell LastRow = .Cells.SpecialCells(xlCellTypeLastCell).Row Set rng = Nothing lCount = .Columns(col).SpecialCells(xlCellTypeBlanks) _ .Areas(1).Cells.Count If lCount = 0 Then MsgBox "No blanks found in selected column" Exit Sub ElseIf lCount = .Columns(col).Cells.Count Then 'next line can be deleted MsgBox "Over the Special Cells Limit" Do While lRows < LastRow Set rng = .Range(.Cells(lRows, col), _ .Cells(lRows + lLimit, col)) _ .Cells.SpecialCells(xlCellTypeBlanks) rng.FormulaR1C1 = "=R[-1]C" lRows = lRows + lLimit Loop Else Set rng = .Range(.Cells(2, col), _ .Cells(LastRow, col)) _ .Cells.SpecialCells(xlCellTypeBlanks) rng.FormulaR1C1 = "=R[-1]C" End If 'replace formulas with values With .Cells(1, col).EntireColumn .Value = .Value End With End With End Sub
This macro example is from Alex Blakenburg, who had numbers entered as text in his data, and didn't want them converted to real numbers. Also, his data didn't always start in row 1 on the worksheet.
In this macro, Alex addressed those problems:
You can copy the code below, and paste it into your own Excel file. Or, download the sample Excel file, and copy the code from there.
Sub FillSelBlanks_Num() 'from Alex Blakenburg 'use FillDown to prevent text numbers ' from converting to real numbers 'starts from active cell Dim RowEnd As Long Dim RowStart As Long Dim ColStart As Long Dim RowNo As Long Dim wks As Worksheet Set wks = ActiveSheet ' Reset end of sheet and ' capture end row and column nos Call ResetLastCell With wks.UsedRange RowEnd = .Rows(.Rows.Count).Row End With ' Start from selected cell ' check next row is blank, fill down RowStart = ActiveCell.Row ColStart = ActiveCell.Column RowNo = RowStart ' to limit errors due to invoking ' accidentally, check that next row ' is blank. If not, exit routine With wks If Not IsEmpty(.Cells(RowStart + 1, _ ColStart)) _ And .Cells(RowStart + 1, _ ColStart).Value <> "" Then MsgBox "Expect next row to be blank" _ & " - exiting routine" Exit Sub End If ' Cycle through rows, ' copy group value down Do Until RowNo >= RowEnd RowNo = RowNo + 1 If IsEmpty(.Cells(RowNo, _ ColStart).Value) _ Or .Cells(RowNo, _ ColStart).Value = "" Then ' Use previous row to try to transfer ' both the text attribute and value ' for Numeric text. Using the variable ' converted numeric text to a number .Cells(RowNo, ColStart).FillDown End If Loop End With End Sub '============================= Sub ResetLastCell() Dim lLastRow As Long Dim lLastColumn As Long Dim lRealLastRow As Long Dim lRealLastColumn As Long Dim rng As Range Dim wks As Worksheet Set wks = ActiveSheet ' Find last row,column ' special cells method With wks.Range("A1") _ .SpecialCells(xlCellTypeLastCell) lLastRow = .Row lLastColumn = .Column End With ' Find backwards from A1 ' to last non-blank row With wks.Cells lRealLastRow = .Find("*", Range("A1"), _ xlFormulas, , xlByRows, xlPrevious).Row ' Find backwards from A1 ' to last non-blank column lRealLastColumn = .Find("*", Range("A1"), _ xlFormulas, , xlByColumns, _ xlPrevious).Column End With With wks 'Delete from row after real last row 'to last row, per special cells method If lRealLastRow < lLastRow Then .Range(.Cells(lRealLastRow + 1, 1), _ .Cells(lLastRow, 1)).EntireRow.Delete End If 'Delete from column after real last column 'to last column per special cells method If lRealLastColumn < lLastColumn Then .Range(.Cells(1, lRealLastColumn + 1), _ .Cells(1, lLastColumn)) _ .EntireColumn.Delete End If Set rng = .UsedRange 'Resets last cell End With End Sub
After you fill in the blank cells with values from above, you can use a conditional formattng trick, to hide the duplicate headings.
This will make the list easier to read, just like it was with the blank cells.
This video shows you the steps, and the written instructions are on the Conditional Formatting Examples page.
Here is the transcript for the Fill Blank Cells video, at the top of this page.
Sometimes in Excel, you'll end up with data like this, possibly exported from another system where you've got headings, but blank cells below those headings.
Here we can see region and it's only listed once, and then blank to the end of the region, and the employees in each region. You might have one or multiple employees, but again, blank below those employee names.
This is fine for reading the list, but if you want to work with the data, perhaps filter it or sort things, then you need to fill in these blank cells. Here's a quick way to do that.
First, we'll select columns A and B where there are blanks.
All the blank cells are selected now and we're going to put in a very simple formula that just says get the value from the cell above.
That puts that same formula into all the selected cells.
Now we want to change these formulas to values so that we can move things around without having the values change.
Now everything in here is a value instead of a formula, and you can sort or filter without any problems.
To see the report with blank cells, and test the Fill Blanks macros, you can download the sample Excel workbook file. The file is zipped, and is in xlsm format, and contains macros.
Increase Numbers With Paste Special
Last updated: December 6, 2023 1:54 PM