If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below. |
|
|
|
Thread Tools | Display Modes |
#11
|
|||
|
|||
The tables are turned! Well... not yet.
Thanks for reporting the problem with the macro.
Please see second posting, which addresses the problem by not using an auxiliary table. "macropod" wrote: I am sorry that this forum danced around the issue and gave you no good advice. Really? The other solutions offered all do the job in various ways, at least one of which met the OP's needs. Your code needs more work. I tried it with a 5-column, 4-row table and nothing was transposed. Plus, if the table is at the very top of the document, the code crashes. Cheers -- macropod [MVP - Microsoft Word] |
#12
|
|||
|
|||
The tables are turned! Well... not yet.
Everyone thank macropod for alpha testing the macro, here is version 2, much
improved: Option Explicit Sub TransposeTableSelected() Dim c As New Collection Dim o For Each o In Selection.Tables c.Add o Next Dim t As Table For Each t In c TransposeTable t Next End Sub Sub TransposeTable(t As Table) If t Is Nothing Then Exit Sub End If Dim original_rows As Integer original_rows = t.Rows.Count Dim original_cols As Integer original_cols = t.Columns.Count Dim diagonal_count As Integer diagonal_count = IIf(original_rows original_cols, original_rows, original_cols) ' increase size Do While t.Rows.Count diagonal_count t.Rows.Add Loop Do While t.Columns.Count diagonal_count t.Columns.Add Loop ' add a row to hold values as they are shuffled. t.Rows.Add Dim j As Integer Dim k As Integer For k = 1 To diagonal_count For j = k + 1 To diagonal_count Call TableCellSwap(t, k, j, j, k) Next Next ' decrease size Do While t.Rows.Count original_cols t.Rows(t.Rows.Count).Delete Loop Do While t.Columns.Count original_rows t.Columns(t.Columns.Count).Delete Loop End Sub Sub TableCellMove(sourceTable As Table, sourceRow As Integer, sourceCol As Integer, destTable As Table, destRow As Integer, destCol As Integer) sourceTable.Cell(sourceRow, sourceCol).Select Selection.Cut destTable.Cell(destRow, destCol).Select Selection.Paste End Sub Sub TableCellSwap(sourceTable As Table, sourceRow As Integer, sourceCol As Integer, destRow As Integer, destCol As Integer) Call TableCellMove(sourceTable, destRow, destCol, sourceTable, sourceTable.Rows.Count, 1) Call TableCellMove(sourceTable, sourceRow, sourceCol, sourceTable, destRow, destCol) Call TableCellMove(sourceTable, sourceTable.Rows.Count, 1, sourceTable, sourceRow, sourceCol) End Sub "Tesla" wrote: Yes, there is. It involves a small macro that the vendor does not ship with the product. I am sorry that this forum danced around the issue and gave you no good advice. This is a complete solution, which handles multiple tables selected, of any size, even with embedded OLE objects in the cells, and keeps the original formatting of the table. I worked Equations objects successfully in them. Do not panic with the seemingly chaotic dance of tables and selections in the document during processing, it all works nicely. Here it is: see version 2 above. |
#13
|
|||
|
|||
The tables are turned! Well... not yet.
Your tone is not welcome. And you have not contributed to a solution.
This is a discussion about transposing tables in Word; not matrices, not Excel documents. 99.9% of statistics are made up by the people that quote them. "Pat Garard" wrote: Hi Sweetheart, Yes, there is. It involves a small macro that the vendor does not ship with .. Thank you SO MUCH for a lesson in matrix transposition. Of course the Vendor actually shipped the solution in Excel ... 99.9% of Word Users do not need matrices ... 99.9% of Excel Users MIGHT .... I feel so ... enriched ... -- Regards, Pat Garard Melbourne, Australia |
#14
|
|||
|
|||
The tables are turned! Well... not yet.
Still needs more work - bombs on tables with merged cells.
Cheers -- macropod [MVP - Microsoft Word] "Tesla" wrote in message ... Everyone thank macropod for alpha testing the macro, here is version 2, much improved: Option Explicit Sub TransposeTableSelected() Dim c As New Collection Dim o For Each o In Selection.Tables c.Add o Next Dim t As Table For Each t In c TransposeTable t Next End Sub Sub TransposeTable(t As Table) If t Is Nothing Then Exit Sub End If Dim original_rows As Integer original_rows = t.Rows.Count Dim original_cols As Integer original_cols = t.Columns.Count Dim diagonal_count As Integer diagonal_count = IIf(original_rows original_cols, original_rows, original_cols) ' increase size Do While t.Rows.Count diagonal_count t.Rows.Add Loop Do While t.Columns.Count diagonal_count t.Columns.Add Loop ' add a row to hold values as they are shuffled. t.Rows.Add Dim j As Integer Dim k As Integer For k = 1 To diagonal_count For j = k + 1 To diagonal_count Call TableCellSwap(t, k, j, j, k) Next Next ' decrease size Do While t.Rows.Count original_cols t.Rows(t.Rows.Count).Delete Loop Do While t.Columns.Count original_rows t.Columns(t.Columns.Count).Delete Loop End Sub Sub TableCellMove(sourceTable As Table, sourceRow As Integer, sourceCol As Integer, destTable As Table, destRow As Integer, destCol As Integer) sourceTable.Cell(sourceRow, sourceCol).Select Selection.Cut destTable.Cell(destRow, destCol).Select Selection.Paste End Sub Sub TableCellSwap(sourceTable As Table, sourceRow As Integer, sourceCol As Integer, destRow As Integer, destCol As Integer) Call TableCellMove(sourceTable, destRow, destCol, sourceTable, sourceTable.Rows.Count, 1) Call TableCellMove(sourceTable, sourceRow, sourceCol, sourceTable, destRow, destCol) Call TableCellMove(sourceTable, sourceTable.Rows.Count, 1, sourceTable, sourceRow, sourceCol) End Sub "Tesla" wrote: Yes, there is. It involves a small macro that the vendor does not ship with the product. I am sorry that this forum danced around the issue and gave you no good advice. This is a complete solution, which handles multiple tables selected, of any size, even with embedded OLE objects in the cells, and keeps the original formatting of the table. I worked Equations objects successfully in them. Do not panic with the seemingly chaotic dance of tables and selections in the document during processing, it all works nicely. Here it is: see version 2 above. |
#15
|
|||
|
|||
The tables are turned! Well... not yet.
One more restriction to that approach: unfortunately that does not handle all
the things that can be in a cell, such as Objects (see MS Equation) or captions, when one goes from Word to Excel. The quest continues. "Suzanne S. Barnhill" wrote: Although "macropod" has given you the options within Word, there is a way to transpose the rows and columns, but it will work only if the table is fairly simple (no merged cells, not too much fancy formatting). Copy the table in Word, then open Excel and use Paste Special: Transpose. This will swap the rows and columns, and you can then copy/paste the text back into Word. -- Suzanne S. Barnhill Microsoft MVP (Word) Words into Type Fairhope, Alabama USA Word MVP FAQ site: http://word.mvps.org Email cannot be acknowledged; please post all follow-ups to the newsgroup so all may benefit. "Cooz" wrote in message ... Hi everyone, Is there a way to turn a Word table so that its columns become rows and its rows become columns? If yes... how? Thank you, Cooz |
|
Thread Tools | |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Relationships set up | linronamy | New Users | 7 | February 20th, 2006 10:45 PM |
Criterion - How to Write Query for Multiple Tables | jcinn | Running & Setting Up Queries | 1 | February 8th, 2005 12:42 PM |
Appending data from one table to multiple relational tables | Stranger | Running & Setting Up Queries | 42 | August 18th, 2004 02:55 AM |
Mutliple Tables lookup? | Westley | Database Design | 4 | June 15th, 2004 01:07 AM |
How do I design a database based on the information that will be stored? - Copy of Tables and hirearchies.zip (0/1) | Jim | Database Design | 1 | June 1st, 2004 01:44 PM |