Transpose Row by Row

  • Thread starter Thread starter walan
  • Start date Start date
W

walan

Does anyone have a shorter/simpler way of transposing more than 150 rows
of data that is in 5 columns into one column? The only catch or
difficulty is it has to be in the order of the rows vertically. See
below.
12 15 45 20 12
13 15 45 20 15
14 15 45 20 45
16 15 45 20 20
17 15 45 20 13
18 15 45 20 15
19 15 45 20 45
20 15 45 20 20
21 15 45 20 14
15
45
20
16
15
45
20
17
15
45
20
18
15
45
20

I did create a macro which is repetitive and was wondering if anyone
can help make is simpler this way it transpose more than 100 rows of
data into one column.
Range("A1:D1").Select
Selection.Copy
Range("F1").Select
Selection.PasteSpecial Paste:=xlAll,
Operation:=xlNone,SkipBlanks:=False ,
Transpose:=True
Application.CutCopyMode = False
Range("A2:D2").Select
Selection.Copy
Range("F5").Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone,
SkipBlanks:=False _
, Transpose:=True
Application.CutCopyMode = False
Range("A3:D3").Select
Selection.Copy
Range("F9").Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone,
SkipBlanks:=False _
, Transpose:=True
Application.CutCopyMode = False
Range("A4:D4").Select
Selection.Copy
Range("F13").Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone,
SkipBlanks:=False _
, Transpose:=True
Application.CutCopyMode = False
Range("A5:D5").Select
Selection.Copy
Range("F17").Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone,
SkipBlanks:=False _
, Transpose:=True
Application.CutCopyMode = False
Range("A6:D6").Select
Selection.Copy
Range("F21").Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone,
SkipBlanks:=False _
, Transpose:=True
Application.CutCopyMode = False
Range("E1").Select
End Sub
 
Your code only does 4 columns. I did this to handle 5 as you stated. Also,
yours seems to overwrite some of the copied data. This doesn't. So test it
on a copy of your data.

Sub CCC()
Dim rng As Range, i As Long
i = 1
Set rng = Range(Cells(1, 1), Cells(Rows.Count, _
1).End(xlUp))
For Each cell In rng
cell.Resize(1, 5).Copy
Cells(i, 6).PasteSpecial Paste:=xlValues, _
Transpose:=True
i = i + 5
Next
End Sub
 
Try:

Sub TestTranspose()
Dim r As Range, c As Range, c2 As Range
Set r = Range(Range("A1"), Range("A1").End(xlDown))
Set c2 = Range("F1")
For Each c In r.Cells
c2.Resize(4, 1) = Application.Transpose(c.Resize(1, 4))
Set c2 = c2(5)
Next
End Sub

Regards,
Greg
 
Either I don't understand what you are trying to do, or your example as well
as your code does not agree with what you say you want to do.
If you take all 5 columns of one row and copy/transpose it to F1, then
that one row after paste will occupy F1:F5. If you then do the same thing
with the next row but paste it to F5, you will be wiping out the last entry
of the previous paste. Is this correct or did I miss something? HTH
Otto
 

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

Back
Top