Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.worksheet.functions
|
|||
|
|||
![]()
I have a spreadsheet with 151 columns by 49 rows of data. I need to
transpose this data from its current state, to only 1 vertical column. How can I do this? Thks |
#2
![]()
Posted to microsoft.public.excel.worksheet.functions
|
|||
|
|||
![]()
Off the top, untested
With ActiveSheet LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column For i = LastRow To 1 Step -1 For j = LastCol To 2 Step -1 .Rows(i + 1).Insert .Cells(i, j).Cut .Cells(i + 1, "A") Next j Next i End With -- HTH Bob "Jethro Bodeene" <Jethro wrote in message ... I have a spreadsheet with 151 columns by 49 rows of data. I need to transpose this data from its current state, to only 1 vertical column. How can I do this? Thks |
#3
![]()
Posted to microsoft.public.excel.worksheet.functions
|
|||
|
|||
![]()
Hi Bob,
I tested your 'lil sonnet and it works fine with Option Explicit edited out. Then I dimmed LastRow and LastCol as Range and that was fine, but errored out at i and j, I tried Integer and Range and neither worked. What would these be declared as?? Is there any good reason to dim these variables? Seems I hear you always should. Thanks Howard "Bob Phillips" wrote in message ... Off the top, untested With ActiveSheet LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column For i = LastRow To 1 Step -1 For j = LastCol To 2 Step -1 .Rows(i + 1).Insert .Cells(i, j).Cut .Cells(i + 1, "A") Next j Next i End With -- HTH Bob "Jethro Bodeene" <Jethro wrote in message ... I have a spreadsheet with 151 columns by 49 rows of data. I need to transpose this data from its current state, to only 1 vertical column. How can I do this? Thks |
#4
![]()
Posted to microsoft.public.excel.worksheet.functions
|
|||
|
|||
![]()
Howard,
They should be Longs. Yes, you should always dimension your variables, you can always get caught out with mis-spellings if you don't. I always do in my own code, I just miss them sometimes in posts, especially if responding to someone who doesn't do so. -- HTH Bob "L. Howard Kittle" wrote in message ... Hi Bob, I tested your 'lil sonnet and it works fine with Option Explicit edited out. Then I dimmed LastRow and LastCol as Range and that was fine, but errored out at i and j, I tried Integer and Range and neither worked. What would these be declared as?? Is there any good reason to dim these variables? Seems I hear you always should. Thanks Howard "Bob Phillips" wrote in message ... Off the top, untested With ActiveSheet LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column For i = LastRow To 1 Step -1 For j = LastCol To 2 Step -1 .Rows(i + 1).Insert .Cells(i, j).Cut .Cells(i + 1, "A") Next j Next i End With -- HTH Bob "Jethro Bodeene" <Jethro wrote in message ... I have a spreadsheet with 151 columns by 49 rows of data. I need to transpose this data from its current state, to only 1 vertical column. How can I do this? Thks |
#5
![]()
Posted to microsoft.public.excel.worksheet.functions
|
|||
|
|||
![]()
Thanks Bob.
Your advice rings familiar and I appreciate the reminder from an MVP to a hobby lurker. So it has to be a Long because the possible 'scope' of the value of i or j, given the code, may exceed the value of an Integer? Regards, Howard "Bob Phillips" wrote in message ... Howard, They should be Longs. Yes, you should always dimension your variables, you can always get caught out with mis-spellings if you don't. I always do in my own code, I just miss them sometimes in posts, especially if responding to someone who doesn't do so. -- HTH Bob "L. Howard Kittle" wrote in message ... Hi Bob, I tested your 'lil sonnet and it works fine with Option Explicit edited out. Then I dimmed LastRow and LastCol as Range and that was fine, but errored out at i and j, I tried Integer and Range and neither worked. What would these be declared as?? Is there any good reason to dim these variables? Seems I hear you always should. Thanks Howard "Bob Phillips" wrote in message ... Off the top, untested With ActiveSheet LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column For i = LastRow To 1 Step -1 For j = LastCol To 2 Step -1 .Rows(i + 1).Insert .Cells(i, j).Cut .Cells(i + 1, "A") Next j Next i End With -- HTH Bob "Jethro Bodeene" <Jethro wrote in message ... I have a spreadsheet with 151 columns by 49 rows of data. I need to transpose this data from its current state, to only 1 vertical column. How can I do this? Thks |
#6
![]()
Posted to microsoft.public.excel.worksheet.functions
|
|||
|
|||
![]()
Partly Howard, but windows under the covers converts integers to Long,
processes the request, then converts the long back to the integer as passed. So by declaring as integer you are causing two unnecessary conversions, so it is just more efficient. Many API calls require an integer as the parameter type, but in your/my code, there is no real reason to use integer unless you want to use it as some sort of number validation (which I would argue is the wrong way to do it). -- HTH Bob "L. Howard Kittle" wrote in message ... Thanks Bob. Your advice rings familiar and I appreciate the reminder from an MVP to a hobby lurker. So it has to be a Long because the possible 'scope' of the value of i or j, given the code, may exceed the value of an Integer? Regards, Howard "Bob Phillips" wrote in message ... Howard, They should be Longs. Yes, you should always dimension your variables, you can always get caught out with mis-spellings if you don't. I always do in my own code, I just miss them sometimes in posts, especially if responding to someone who doesn't do so. -- HTH Bob "L. Howard Kittle" wrote in message ... Hi Bob, I tested your 'lil sonnet and it works fine with Option Explicit edited out. Then I dimmed LastRow and LastCol as Range and that was fine, but errored out at i and j, I tried Integer and Range and neither worked. What would these be declared as?? Is there any good reason to dim these variables? Seems I hear you always should. Thanks Howard "Bob Phillips" wrote in message ... Off the top, untested With ActiveSheet LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column For i = LastRow To 1 Step -1 For j = LastCol To 2 Step -1 .Rows(i + 1).Insert .Cells(i, j).Cut .Cells(i + 1, "A") Next j Next i End With -- HTH Bob "Jethro Bodeene" <Jethro wrote in message ... I have a spreadsheet with 151 columns by 49 rows of data. I need to transpose this data from its current state, to only 1 vertical column. How can I do this? Thks |
#7
![]()
Posted to microsoft.public.excel.worksheet.functions
|
|||
|
|||
![]()
Sub rowstocol()
'many columns and rows to one column on a new worksheet Dim wks As Worksheet Dim colnos As Long Dim CopytoSheet As Worksheet If ActiveSheet.Name = "Copyto" Then MsgBox "Active Sheet Not Valid" & Chr(13) _ & "Try Another Worksheet." Exit Sub Else Set wks = ActiveSheet Application.ScreenUpdating = False For Each Wksht In Worksheets With Wksht If .Name = "Copyto" Then Application.DisplayAlerts = False Sheets("Copyto").Delete End If End With Next Application.DisplayAlerts = True Set CopytoSheet = Worksheets.Add CopytoSheet.Name = "Copyto" wks.Activate Range("A1").Select colnos = InputBox("Enter Number of Columns to Transpose to Rows") Do Until ActiveCell.Value = "" ActiveCell.Offset(1, 0).Select With ActiveCell .Resize(1, colnos).Copy End With Sheets("Copyto").Select Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, _ SkipBlanks:=False _ , Transpose:=True Application.CutCopyMode = False ActiveSheet.Cells(Rows.Count, ActiveCell.Column).End(xlUp).Select ActiveCell.Offset(1, 0).Select wks.Activate ActiveCell.Select Loop Sheets("Copyto").Activate End If End Sub Gord Dibben MS Excel MVP On Mon, 15 Mar 2010 13:55:01 -0700, Jethro Bodeene <Jethro wrote: I have a spreadsheet with 151 columns by 49 rows of data. I need to transpose this data from its current state, to only 1 vertical column. How can I do this? Thks |
#8
![]()
Posted to microsoft.public.excel.worksheet.functions
|
|||
|
|||
![]()
Assume your data is in Sheet1, with top left corner cell B2
In another sheet, Put in any startcell, say in C3: =OFFSET(Sheet1!$B$2,INT((ROWS($1:1)-1)/151),MOD(ROWS($1:1)-1,151)) Copy C3 down as far as required to exhaust the source data into that col (copy down by at least: 151 x 49 = 7399 cells). Inspiring? hit the YES below -- Max Singapore --- "Jethro Bodeene" wrote: I have a spreadsheet with 151 columns by 49 rows of data. I need to transpose this data from its current state, to only 1 vertical column. How can I do this? Thks |
#9
![]()
Posted to microsoft.public.excel.worksheet.functions
|
|||
|
|||
![]()
Max, Thanks for your help!
That worked perfectly! Now onto other projects.... "Max" wrote: Assume your data is in Sheet1, with top left corner cell B2 In another sheet, Put in any startcell, say in C3: =OFFSET(Sheet1!$B$2,INT((ROWS($1:1)-1)/151),MOD(ROWS($1:1)-1,151)) Copy C3 down as far as required to exhaust the source data into that col (copy down by at least: 151 x 49 = 7399 cells). Inspiring? hit the YES below -- Max Singapore --- "Jethro Bodeene" wrote: I have a spreadsheet with 151 columns by 49 rows of data. I need to transpose this data from its current state, to only 1 vertical column. How can I do this? Thks |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Transpose Maybe? | Excel Worksheet Functions | |||
Help using Transpose | Excel Discussion (Misc queries) | |||
Want to Transpose | Excel Discussion (Misc queries) | |||
I WANT TO TRANSPOSE LINKS, AS WE TRANSPOSE VALUES | Excel Worksheet Functions | |||
TRANSPOSE() | Excel Worksheet Functions |