SNAKECOLS,  How to snake columns to use fewer pages
Location:   http://www.mvps.org/dmcritchie/excel/snakecol.htm
Home page: http://www.mvps.org/dmcritchie/excel/excel.htm
[View without Frames]

Print ____ pages wide by ___ pages tall

Word allows you to put several pages of data onto a single page.
Excel does not have this facility but it does have a page scaling ability.

File, Page Setup, Page,
  Scaling: [x] Fit to ____ pages(s) wide by ___ tall

Note those are two independent settings.  You do not have to choose both.  You can choose to print 1 page wide and print as many pages as needed.  Also note use of Portrait or Landscape on the page tab.

Another page waster is being left with a lastcell (Ctrl+End) problem.  The MakeLastCell macro can be useful in eliminating unwanted rows at bottom or columns to the right to change the lastcell.

Using MS Word to Snake Columns

This is probably the easiest to use for a one time usage, since I've not put in a dialog into my Excel macro described later.
  1. Select and copy columns from Excel spreadsheet.
  2. Paste into Word, this takes a few moments
  3. Select the rows to be repeated at top in the table, then indicate this in Word with
      Table --> Rows to repeated
  4. Select entire table using anchor, or selecting cell(s) in the table and then
      Table --> Select --> Table
  5. Indicate number of rows using the columns button, or
      Format --> Columns if you want more control over placement

PostScript Printers can print print 2-UP

PostScript printers can print multiple pages on a page, not what you would be looking for with a single column but it would save paper.  Options on my printer during print are:

File --> Print --> [Properties] --> Document Options --> Page Layout (N-Up) Options --> 2-up

I have a choice of 1-Up, 2-UP (1x2), 4-UP (2x2), 6-UP (2x3), 9-UP(3x3), 16-Up(4x4)
underlining makes things hard to read in 16-UP at 300 dpi.

Attempting to Snake columns using Excel

Since snaking columns is so easily done with the help of MS Word and with a lot more control over printing that there is not much point to trying to do this in Excel -- at least as long as Excel itself does not support this feature.  In fact the only reason to use Excel might be to keep down the proliferation of files where Word needs a separate file for each document, and Excel has separate documents as individual sheets.

Snakecols is incomplete (coded Jan 1999).  As the macro currently stands you will have to modify the macro to specify some parameters such as number of rows on a page, how many heading lines, how many columns in the original.  Macro coding can be found in snakecol.txt and you can experiment using snaketstcsv.txt test data.

The macro described here to effect snaking of columns, snaketstcsv.txt, is a VBA macro.  If you need assistance to install or to use a macro please refer refer to my  GetFormula  page.

 ABC
1Col-ACol-BCol-C
2A2B2C2
3A3B3C3
4A4B4C4
5A5B5C5
6A6B6C6
7A7B7C7
8A8B8C8
9A9B9C9
10A10B10C10
11A11B11C11
12A12B12C12
13A13B13C13
   
'THIS WILL BE PUT INTO AN INPUTBOX LATER
Hrows = 2            'specify number of heading rows
cols = 2             'specify number of cols to copy
setts = 4            'specify number of sets per page
rowspp = 50          'specify number of rows per page

 ABCDEFGH
1Col-ACol-B Col-ACol-BCol-A Col-BCol-ACol-B
2A2B2 A2B2A2B2 A2B2
3A3B3A53B53 A103B103A153B153
4A4B4A54B54 A104B104A154B154
5A5B5A55B55 A105B105A155B155
6A6B6A56B56 A106B106A156B156
7A7B7A57B57 A107B107A157B157
8A8B8A58B58 A108B108A158B158
9A9B9A59B59 A109B109A159B159
10A10B10A60 B60A110B110A160B160
11A11B11A61 B61A111B111A161B161
12A12B12A62 B62A112B112A162B162

Creating a Table from something like a column of address labels

Simple example to take a single column, such as labels with Name; Street Address; City, State, Zipcode and convert to a table.    
On a second sheet (or even same sheet), then use fill-handle
A1:  =OFFSET('Contacts'!$A$1,Row()*3-3,0)
B1:  =OFFSET('Contacts'!$A$1,Row()*3-2,0)
C1:  =OFFSET('Contacts'!$A$1,Row()*3-1,0)

Another Solution, must be placed in cell B1 of same sheet #, then use fill-handle
B1:  =INDIRECT("a"&ROW()*3-(4-COLUMN()))

Use the fill handle to copy down until you run out of contacts you can find the last cell on your Contacts sheet (ctrl+End) and divide the row by 3 to see how far down you will have to copy on your second sheet.

After you have completed this process your second sheet will be dependent on content and existence of your contacts sheet. To remove this dependency. Select all cells (ctrl+A) then Edit, paste special, values. You will now have constants without dependencies (no formulas).

Select row 1, Insert, rows; and then provide titles for your columns.

Before
 AB
1A1 
2A2 
3A3 
4A4 
5A5 
6A6 
7A7 
8A8 
9A9 
10A10 
11A11 
12A12 

   After
 ABCD
1A1A2A3 
2A4A5A6 
3A7A8A9 
4A10A11A12  
5A13A14A15  
6A16A17A18  
7A19A20A21  
8A22A23A24  
9A25A26A27  
10A28A29A30  
11A31A32A33  
12A34A35A36  

To create a new worksheet from name and address label format using a macro see code for naddr3ss in my code directory.  A variation that has 8 rows per set and each row has a descriptive title that would be used as the header for the column naddr8fss also seen in newsgroup as response

Something along the lines of a worksheet formula

This example only runs across but not down, but might give a better idea of why you would want a macro and secondly how you could do this with worksheet formulas and the fill handle.  But any insertion or deletion of row would affect these formulas so you would have to use INDIRECT and of course we cannot process for more than a single row of displayed data with these formulas.

 ABCDEFGHIJK
12A12 B12A24B24A36B36 A48B48A60B60A72
13 =OFFSET(sheet33!$A$12,(COLUMN()-1)/2*12,0)
14 =OFFSET(sheet33!$B$12,(COLUMN()-2)/2*12,0)
15   =OFFSET(sheet33!$A$12,(COLUMN()-1)/2*12,0)
16   =OFFSET(sheet33!$B$12,(COLUMN()-2)/2*12,0)
17     =OFFSET(sheet33!$A$12,(COLUMN()-1)/2*12,0)
18     =OFFSET(sheet33!$B$12,(COLUMN()-2)/2*12,0)
19        =OFFSET(sheet33!$A$12,(COLUMN()-1)/2*12,0)
20        =OFFSET(sheet33!$B$12,(COLUMN()-2)/2*12,0)

Related Information - Snakecols


You are one of many distinguished visitors who have visited my site here or in a previous location  since this page was created on May 21, 1999. 

Visit [my Excel home page]   [Index page]   [Excel Onsite Search]   [top of this page]

Please send your comments concerning this web page to:  David McRitchie  mailto:DMcRitchie@msn.com