+ Reply to Thread
Results 1 to 6 of 6

Converting column to rows -not pivot table

Hybrid View

jartzh Converting column to rows... 07-25-2008, 03:55 PM
mrice Try this Open the text... 07-25-2008, 05:26 PM
Leith Ross Hello jartzh, If you want... 07-25-2008, 05:47 PM
jartzh Thanks Leith, Now can I... 08-04-2008, 04:01 PM
Leith Ross Hello Jartzh, Do you mean... 08-04-2008, 06:35 PM
jartzh Leith, Here is what I really... 08-05-2008, 08:28 AM
  1. #1
    Forum Contributor
    Join Date
    07-25-2008
    Location
    texas
    Posts
    178

    Converting column to rows -not pivot table

    Here is a fun one.
    I have a txt file that has a single data element on a line. Its prefixed by the name of the data element. I need to build a row that contains all the elements for a single record.
    Example:
    PO=111
    date=07072008
    PO=222
    date=07082008
    PO=333
    date=07012008

    and this needs to be changed to 3 rows
    PO date
    111 07072008
    222 07082008
    333 07012008

    Got any ideas?

  2. #2
    Forum Expert mrice's Avatar
    Join Date
    06-22-2004
    Location
    Surrey, England
    MS-Off Ver
    Excel 2013
    Posts
    4,967
    Try this

    Open the text file in Excel
    In column B enter 1 and 2 alternately down the column
    Sort by column B
    Bring the bottom half of the sorted column A alongside the top half
    Use replace to get rid of the PO =

  3. #3
    Forum Moderator Leith Ross's Avatar
    Join Date
    01-15-2005
    Location
    San Francisco, Ca
    MS-Off Ver
    2000, 2003, & 2010
    Posts
    23,259
    Hello jartzh,

    If you want to use a VBA macro, you can make changes to this one. You can change the starting row and the column (they are marked in red). The data is sorted into 2 columns from using the column the data is in plus the column to the right.
    Sub ConvertToColumns()
    
      Dim C As Variant
      Dim LastRow As Long
      Dim N As Long
      Dim Rng As Range
      Dim StartRow As Long
          
          C = "A"
          StartRow = 2
     
          N = 1
          LastRow = Cells(Rows.Count, C).End(xlUp).Row
            If LastRow < StartRow Then Exit Sub
          C1 = Cells(1, C).Column + 1
          
          Set Rng = Range(Cells(StartRow, C), Cells(LastRow \ 2, C1))
          
            For R = StartRow To LastRow Step 2
              Rng.Cells(N, 1) = Split(Cells(R, C), "=")(1)
              Rng.Cells(N, 2) = Split(Cells(R + 1, C), "=")(1)
              N = N + 1
            Next R
          
          Range(Rows(StartRow + N - 1), Rows(LastRow)).Delete Shift:=xlUp
            
    End Sub
    Adding the Macro
    1. Copy the macro above pressing the keys CTRL+C
    2. Open your workbook
    3. Press the keys ALT+F11 to open the Visual Basic Editor
    4. Press the keys ALT+I to activate the Insert menu
    5. Press M to insert a Standard Module
    6. Paste the code by pressing the keys CTRL+V
    7. Make any custom changes to the macro if needed at this time
    8. Save the Macro by pressing the keys CTRL+S
    9. Press the keys ALT+Q to exit the Editor, and return to Excel.

    To Run the Macro...
    To run the macro from Excel, open the workbook, and press ALT+F8 to display the Run Macro Dialog. Double Click the macro's name to Run it.

    Sincerely,
    Leith Ross

  4. #4
    Forum Contributor
    Join Date
    07-25-2008
    Location
    texas
    Posts
    178
    Thanks Leith,
    Now can I throw a curve at you?

    How about if there could be multiple date rows under a PO row and you only wanted the last one?

    Does that make sense?

  5. #5
    Forum Moderator Leith Ross's Avatar
    Join Date
    01-15-2005
    Location
    San Francisco, Ca
    MS-Off Ver
    2000, 2003, & 2010
    Posts
    23,259
    Hello Jartzh,

    Do you mean before or after the macro is run? Can you give me an example?

    Sincerely,
    Leith Ross

  6. #6
    Forum Contributor
    Join Date
    07-25-2008
    Location
    texas
    Posts
    178
    Leith,
    Here is what I really need:
    Example:
    PO=111
    date=07072008
    date=07082008
    PO=222
    date=07082008
    date=08012008
    date=08042008
    PO=333
    date=07012008

    and this needs to be changed to 3 rows with the last date
    PO date
    111 07082008
    222 08042008
    333 07012008


    Thanks

+ Reply to Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Search Engine Friendly URLs by vBSEO 3.6.0 RC 1