The following macro, placed in your main data sheet, might suit your needs. You may need to adjust the Sheet names and columns to match your data layout, but it should give you a good start. If you have questions let us know (at which point we'll probably ask you to upload your workbook, or a copy of it minus any private data).
Sub orgPrintData()
Dim ws As Worksheet, myRng As Range, i As Long
' Turn off screen updating to reduce screen flicker and speed up macro
Application.ScreenUpdating = False
' Turn off alerts for when the temp sheet is deleted
Application.DisplayAlerts = False
' Set the original data range - change sheet/column references as needed
Set myRng = Sheets("Sheet1").Columns("A:F")
' If sheet "Org Print Data" exists, delete it
On Error Resume Next
If Len(Sheets("Org Print Data")) > 0 Then Sheets("Org Print Data").Delete
On Error GoTo 0
' Add new worksheet
Set ws = Worksheets.Add
With ws
' Name new sheet
.Name = "Org Print Data"
'Copy original data range to new sheet to re-organize
myRng.Copy .Range("A1")
' Re-organize data, such that D1:F1 will end up below A1:C1
' and D2:F2 will be below the original A2:C2, etc.
For i = 1 To .Range("D65536").End(xlUp).Row
.Range(.Cells(i, 4), .Cells(i, 6)).Cut
.Cells(i * 2, 1).Insert Shift:=xlDown
Next i
' Add page break before column D
.VPageBreaks.Add Before:=.Range("D1")
' Open PrintPreview window
.PrintPreview
' Delete "Org Print Data" sheet
.Delete
End With
'Turn alerts and screen updating back on
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Bookmarks