Tip: Other languages are Google-Translated. You can visit the English version of this link.
Log in
x
or
x
x
Register
x

or

How to insert blank rows when value changes in Excel?

doc-insert-rows-value-changes-1 -2 doc-insert-rows-value-changes-2

Supposing you have a range of data, and now you want to insert blank rows between the data when value changes, so that you can separate the sequential same values in one column as following screenshots shown. In this article, I will talk about some tricks for you to solve this problem.

Insert blank rows when value changes with Subtotal function

Insert blank rows when value changes with helper columns

Insert blank rows when value changes with VBA code


Insert blank rows & columns: (Insert every other or nth rows / columns)

Kutools for Excel’s Insert Blank Rows & Columns can help you insert every other rows or columns into existing data.

doc-insert-rows-value-changes-17

Kutools for Excel: with more than 200 handy Excel add-ins, free to try with no limitation in 60 days. Download and free trial Now!


arrow blue right bubble Insert blank rows when value changes with Subtotal function


With the Subtotal feature, you can insert blank rows between the data when value changes as following steps:

1. Select the data range that you want to use.

2. Click Data > Subtotal to open the Subtotal dialog box, and in the Subtotal dialog, please do the following options:

doc-insert-rows-value-changes-3

A: Select the column name which you want to insert blank rows based on when the value changes under At each change in section;

B: Choose Count from the Use function drop down list;

C: Check the column name that you want to insert the subtotal to in the Add subtotal to list box

3. Then click OK, the subtotal lines have been inserted between the different products, and the outline symbols are displayed at the left of the table, see screenshot:

doc-insert-rows-value-changes-3

4. And then click the number 2 at the top of the outline symbol to just only display the subtotal lines.

doc-insert-rows-value-changes-3

5. Then select the subtotal range data, and press Alt+; shortcut keys to select the visible rows only, see screenshot:

doc-insert-rows-value-changes-3

6. After selecting the visible rows only then press the Delete key on the keyboard, and all the subtotal rows have been removed.

7. Then click any other cell, and go back Data > Ungroup > Clear Outline to remove the Outlines, see screenshot:

doc-insert-rows-value-changes-3

8. The outline symbols have been cleared at once, and you can see blank rows have been insert between the data when value changes, see screenshot:

doc-insert-rows-value-changes-3

9. At last, you can delete the column A as you need.


arrow blue right bubble Insert blank rows when value changes with helper columns

With the helper columns, you can insert formula first, and then apply the Find and Replace function, at last, insert the blank rows between the changing values. Please do as follows:

1. In a blank cell C3, please enter this formula =A3=A2, and in cell D4 enter this formula =A4=A3, see screenshot:

doc-insert-rows-value-changes-3

2. Then select C3:D4, and drag the fill handle over to the range that you want to apply theses formulas, and you will get True or False in the cells, see screenshot:

doc-insert-rows-value-changes-3

3. And then press Ctrl + F keys to open the Find and Replace dialog, in the popped out dialog, enter FALSE into the Find what text box under Find tab, and click Options button to expand this dialog, and choose Values from the Look in drop down list, see screenshot:

doc-insert-rows-value-changes-3

4. Click Find All button, and then press Ctrl + A to select all the results of finding, see screenshot:

doc-insert-rows-value-changes-3

5. And all the FALSE cells have been selected at once, then close the Find and Replace dialog box.

doc-insert-rows-value-changes-3

6. Next step, you can insert blank rows by clicking Home > Insert > Insert Sheet Rows, and blank rows have been inserted into the data when value changes based on column A, see screenshots:

doc-insert-rows-value-changes-1 -2 doc-insert-rows-value-changes-1

7. Finally, you can delete the helper column C and D as you need.


arrow blue right bubble Insert blank rows when value changes with VBA code

If you are tired of using the above methods, here is a code also can help you to insert blank rows between the changed values at once.

1. Hold down the ALT + F11 keys to open the Microsoft Visual Basic for Applications window.

2. Click Insert > Module, and paste the following code in the Module Window.

VBA code: Insert blank rows when value changes

Sub InsertRowsAtValueChange()
'Update 20140716
Dim Rng As Range
Dim WorkRng As Range
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
For i = WorkRng.Rows.Count To 2 Step -1
    If WorkRng.Cells(i, 1).Value <> WorkRng.Cells(i - 1, 1).Value Then
        WorkRng.Cells(i, 1).EntireRow.Insert
    End If
Next
Application.ScreenUpdating = True
End Sub

3. Then press F5 key to run this code, and a prompt box will pop out to let you select one column data that you want to insert blank rows when value changes which you based on, see screenshot:

doc-insert-rows-value-changes-3

4. And then click OK, the blank rows have been inserted between data when the value changes based on column A.


Recommended Productivity Tools

Ribbon of Excel (with Kutools for Excel installed)

300+ Advanced Features Increase Your Productivity by 71%, and Help You To Stand Out From Crowd!

Would you like to complete your daily work quickly and perfectly? Kutools For Excel brings 300+ cool and powerful advanced features (Combine workbooks, sum by color, split cell contents, convert date, and so on...) for 1500+ work scenarios, helps you solve 82% Excel problems.

  •  Deal with all complicated tasks in seconds, help to enhance your work ability, get success from the fierce competition, and never worry about being fired.
  •  Save a lot of work time, leave much time for you to love and care the family and enjoy a comfortable life now.
  •  Reduce thousands of keyboard and mouse clicks every day, relieve your tired eyes and hands, and give you a healthy body.
  •  Become an Excel expert in 3 minutes, and get admiring glance from your colleagues or friends.
  •  No longer need to remember any painful formulas and VBA codes, have a relaxing and pleasant mind, give you a thrill you've never had before.
  •  Spend only $39, but worth than $4000 training of others. Being used by 110,000 elites and 300+ well-known companies.
  •  60-day unlimited free trial. 60-day money back guarantee. Free upgrade and support for 2 years. Buy once, use forever.
  •  Change the way you work now, and give you a better life immediately!

Office Tab Brings Efficient And Handy Tabs to Office (include Excel), Just Like Chrome, Firefox, And New IE

  • Increases your productivity by 50% when viewing and editing multiple documents.
  • Reduce hundreds of mouse clicks for you every day, say goodbye to mouse hand.
  • Open and create documents in new tabs of same window, rather than in new windows.
  • Help you work faster and easily stand out from the crowd! One second to switch between dozens of open documents!
Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Hassan · 6 months ago
    Hello,
    Is very usefull in case i need to insert 1 row, but if i need to insert 145 rows in every time the data change in spwcific column, how can i do it??
    • To post as a guest, your comment is unpublished.
      skyyang · 6 months ago
      Hi, Hassan,
      To insert multiple blank rows when value changes in a specific column, you should apply the following VBA code:

      Note: In the below code, you should change the number 99 to your need, for example, when you insert 145 blank rows, you should change the number 99 to 144. Please try it, hope it can help you!

      Sub InsertRowsAtValueChange()
      Dim Rng As Range
      Dim WorkRng As Range
      On Error Resume Next
      xTitleId = "KutoolsforExcel"
      Set WorkRng = Application.Selection
      Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
      Application.ScreenUpdating = False
      For i = WorkRng.Rows.Count To 2 Step -1
      If WorkRng.Cells(i, 1).Value <> WorkRng.Cells(i - 1, 1).Value Then
      Range(WorkRng.Cells(i, 1).EntireRow, WorkRng.Cells(i + 99, 1).EntireRow).Insert
      End If
      Next
      Application.ScreenUpdating = True
      End Sub
      • To post as a guest, your comment is unpublished.
        DCalk · 6 months ago
        Very helpful. The code that skyyang shows above worked perfectly. Just make sure that the data doesn't already have spaces in it.

        I don't understand VBA, but I believe if you wanted to add more rows underneath data that already had the spacing, there should be a way to ignore spaces.

        Could a line be added to ignore or skip over blank lines? That might make this code more universal and repeatable if needed. Also a delete function that is similar to this may be useful so undo isn't necessary.
  • To post as a guest, your comment is unpublished.
    Suzi · 7 months ago
    RE: insert blank rows when value changes with vba code
    Is there a way that I can save the Range & not have to pick it every time I run it?
  • To post as a guest, your comment is unpublished.
    Eric F · 10 months ago
    The VBA code worked 1st time and did exactly what I was trying to do. Thank you so much!
  • To post as a guest, your comment is unpublished.
    Steve · 1 years ago
    I've been using my own solution for some time.
    1. Insert a helper column into Column A
    2. In A2, type "if(B2=B1,A1,A1+1)"
    3. Copy that formula down to the last row
    4. Copy all the populated cells in column A and Paste Special (Values) over them
    5. Copy all the cells again and paste them into column A in the first unpopulated cell (e.g. if you have 104 rows of data plus a header row you would paste into cell A106)
    6. Click on Data and Remove Duplicates (only on the cells you just pasted in Step 5; not on all rows)
    7. Sort all of Column A
    8. Delete Column A

    Seems like a lot of steps but only takes a few seconds.
  • To post as a guest, your comment is unpublished.
    Madhur · 2 years ago
    [quote name="Hudson"]Hi all thank you!!

    its awesome , can you guys also let me how to insert 2 rows when the value changes in VBA or through excel.[/quote]

    Please let me know how to insert more than 1 row.