Bob
I would copy the sorted data to another sheet and convert the 3 columns to 6
columns for printing using a macro.
When new data is needed, add it to the original sheet then re-run the macro
with your newly added and sorted data.
Public Sub Snake3to6()
Dim myRange As Range
Dim colsize As Long
Dim maxrow As Long
Dim CopyToSheet As Worksheet
Const numgroup As Integer = 2
Const NUMCOLS As Integer = 6
On Error GoTo fileerror
Application.ScreenUpdating = False
For Each wkSht In Worksheets
With wkSht
If .Name = "Print_Sheet" Then
Application.DisplayAlerts = False
Sheets("Print_Sheet").Delete
End If
End With
Next
Application.DisplayAlerts = True
Set CopyToSheet = Worksheets.Add
CopyToSheet.Name = "Print_Sheet"
Sheets("datasht").Columns("A:C").Copy Destination _
:=Sheets("Print_Sheet").Range("A1")
CopyToSheet.Activate
colsize = Int((ActiveSheet.UsedRange.Rows.Count + _
((NUMCOLS - 1)) / NUMCOLS)) / numgroup
' MsgBox "Number of Rows to Move is: " & colsize
Range("A1").Select
With ActiveCell.Parent.UsedRange
maxrow = .Cells(.Cells.Count).Row + 1
End With
ActiveCell.Parent.Cells(maxrow, ActiveCell.Column) _
.End(xlUp).Offset(1, 0).Select
Set myRange = Range(ActiveCell.Address & ":" _
& ActiveCell.Offset(-colsize, (numgroup)).Address)
myRange.Cut Destination:=ActiveSheet.Range("D1")
Application.CutCopyMode = False
Range("A1").Select
fileerror:
End Sub
Gord Dibben Excel MVP