Printing two columns of data in telephone directory style

  • Thread starter OftenConfuddled
  • Start date
O

OftenConfuddled

Hi,

Wondering if anyone can please help?

I have a long (15,000 entry) list of data in two columns that I need to
print. To save space, paper and access time, I'd like to print this list in
two sets of two columns - as the names and numbers in a telephone directory
might appear.

What I envisage is my list starting at the top left of page 1, with its
corresponding data column just to the right. The list would go down to the
bottom of that page and then restart at the top of the page, just right of
centre. Subsequent pages would continue in similar fashion.

I have tried achieving this manually, but it's fraught with potential error.
Also, the moment you edit column width, font size or just about any other
formatting parameter, the whole thing needs repaginating - it's just not
practical.

Is this possible within Excel? I sure would be grateful for any assistance.

Best Regards,

- OftenConfuddled
 
D

Dave Peterson

I like to copy the data into MSWord and use MSWord's builtin ability to do
column layout.

If that doesn't work for you, David McRitchie has a macro that will "snake" the
columns.
http://www.mvps.org/dmcritchie/excel/snakecol.htm

If you're new to macros:

Debra Dalgleish has some notes how to implement macros here:
http://www.contextures.com/xlvba01.html

David McRitchie has an intro to macros:
http://www.mvps.org/dmcritchie/excel/getstarted.htm

Ron de Bruin's intro to macros:
http://www.rondebruin.nl/code.htm

(General, Regular and Standard modules all describe the same thing.)
 
G

Gord Dibben

Run this macro on a test sheet.

Gives 8 columns from 2

Sub Move_Sets()
Dim iSource As Long
Dim iTarget As Long

iSource = 1
iTarget = 1

Do
Cells(iSource, "A").Resize(50, 2).Cut _
Destination:=Cells(iTarget, "A")
Cells(iSource + 50, "A").Resize(50, 2).Cut _
Destination:=Cells(iTarget, "C")
Cells(iSource + 100, "A").Resize(50, 2).Cut _
Destination:=Cells(iTarget, "E")
Cells(iSource + 150, "A").Resize(50, 2).Cut _
Destination:=Cells(iTarget, "G")
iSource = iSource + 200
iTarget = iTarget + 51
Loop Until IsEmpty(Cells(iSource, "A").Value)

End Sub


Gord Dibben MS Excel MVP
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top