[2 days left] What’s wrong with your cloud strategy? Learn why multicloud solutions matter with Nimble Storage.Register Now

x
Solved

# Macro to insert "X" number of rows between items in a list

Posted on 2014-02-14
Medium Priority
363 Views
I have a list of 100+ items and I would like insert 52 rows between each item in my list. I know this is probably pretty straightforward, but I don't have the time to figure it out and I know someone on here can help pretty quickly.

I've attached an example of my list.
InsertRowsExample.xlsx
0
Question by:thomas-sherrouse
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points

LVL 19

Accepted Solution

Ken Butters earned 2000 total points
ID: 39860180
Here is code... need to run InsertLines Macro.

I have variable set to 52... you can change that if you want different number of lines inserted.

``````Public Sub InsertLines()

Dim myLastCell As Range
Dim i As Long
Dim ws As Worksheet

Dim numRowsToInsert As Long

numRowsToInsert = 52

Set ws = Worksheets("Sheet1")
Set myLastCell = LastCell(ws)

For i = myLastCell.Row To 2 Step -1
ws.Rows(i & ":" & i + numRowsToInsert).Insert shift:=xlDown
Next

End Sub

Function LastCell(ws As Worksheet) As Range

'
' Note "&" denotes a long value; "%" denotes an integer value

Dim LastRow&, lastCol%

' Error-handling is here in case there is not any
' data in the worksheet

On Error Resume Next

With ws

' Find the last real row

LastRow& = .Cells.Find(What:="*", _
SearchDirection:=xlPrevious, _
SearchOrder:=xlByRows).Row

' Find the last real column

lastCol% = .Cells.Find(What:="*", _
SearchDirection:=xlPrevious, _
SearchOrder:=xlByColumns).Column

End With

' Finally, initialize a Range object variable for
' the last populated row.

Set LastCell = ws.Cells(LastRow&, lastCol%)

End Function
``````
InsertRowsExample.xlsm
0

LVL 35

Expert Comment

ID: 39860204
This will insert 52 rows between each row.
``````Dim rng As Range

Set rng = Range("A2")

Do

rng.Offset(1).Resize(52).Insert xlShiftDown

Set rng = rng.Offset(53)

Loop Until rng.Value = ""
``````

This will insert 52 rows whenever there's a change in value.
``````Dim rng As Range

Set rng = Range("A2")

Do

If rng.Value <> rng.Offset(1).Value Then
rng.Offset(1).Resize(52).Insert xlShiftDown
Set rng = rng.Offset(52)
End If

Set rng = rng.Offset(1)

Loop Until rng.Value = ""
``````
0

Author Closing Comment

ID: 39860209
Thanks - Got what I needed!
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Some code to ensure data integrity when using macros within Excel. Also included code that helps secure your data within an Excel workbook.
If you need to forecast numbers -- typically for finance -- the Windows and Mac versions of Excel 2016 have a basket of tools to get the job done.
The viewer will learn how to create two correlated normally distributed random variables in Excel, use a normal distribution to simulate the return on different levels of investment in each of the two funds over a period of ten years, and, create a …
This Micro Tutorial demonstrates using Microsoft Excel pivot tables, how to reverse engineer competitors' marketing strategies through backlinks.
###### Suggested Courses
Course of the Month14 days, 2 hours left to enroll