Restructuring text data in excel? Pivot?


I have a large sum och data in the order below:

Choice	Course 1	Course 2	Course 3	Course 4
1	Name 1	Name 3	Name 2	Name 1
2	Name 3	Name 4	Name 4	Name 3
3	Name 5			

I would like to structure it differently to the format below:

Choice	1	2	3
Name 1	Course 1	Course 4	
Name 2	Course 3		
Name 3	Course 1	Course 2	Course 4
Name 4	Course 2	Course 3	
Name 5	Course 1		

Is this possible? I have been trying to use pivottables without any luck.

Cheers and thanks,
11/26/2009 9:12:02 AM
excel.misc 78881 articles. 5 followers. Follow

2 Replies

Similar Articles

[PageSpeed] 36

Pivottables work with numbers (sum of, max of, average of).  They won't work
with text.

And I don't understand how Name 1 can have both course 1 and course 4 as its
first choice.  I'm guessing that this is an error in your post--each person can
have at most one first choice, at most one 2nd choice, ...

If that's true, then this worked ok in my testing:

Option Explicit
Sub testme()
    Dim InWks As Worksheet
    Dim TempWks As Worksheet
    Dim OutWks As Worksheet
    Dim TempTable As Range
    Dim iRow As Long
    Dim FirstRow As Long
    Dim LastRow As Long
    Dim iCol As Long
    Dim FirstCol As Long
    Dim LastCol As Long
    Dim oRow As Long
    Dim res As Variant
    Dim myFormula As String
    Set InWks = Worksheets("Sheet1")
    Set TempWks = Worksheets.Add
    Set OutWks = Worksheets.Add
    TempWks.Range("A1").Resize(1, 3).Value _
        = Array("Name", "Choice", "Course")
    oRow = 1
    With InWks
        FirstRow = 2
        LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
        FirstCol = 2
        For iRow = FirstRow To LastRow
            LastCol = .Cells(iRow, .Columns.Count).End(xlToLeft).Column
            For iCol = FirstCol To LastCol
                If Trim(.Cells(iRow, iCol).Value) = "" Then
                    'skip it
                    oRow = oRow + 1
                    TempWks.Cells(oRow, "A").Value = .Cells(iRow, iCol).Value
                    TempWks.Cells(oRow, "B").Value = .Cells(iRow, "A").Value
                    TempWks.Cells(oRow, "C").Value = .Cells(1, iCol).Value
                End If
            Next iCol
        Next iRow
    End With
    With TempWks
        .Range("A1", .Cells(.Rows.Count, "A").End(xlUp)).AdvancedFilter _
            action:=xlFilterCopy, criteriarange:="", _
            copytorange:=OutWks.Range("A1"), unique:=True
        .Range("B1", .Cells(.Rows.Count, "B").End(xlUp)).AdvancedFilter _
            action:=xlFilterCopy, criteriarange:="", _
            copytorange:=OutWks.Range("b1"), unique:=True
        Set TempTable = .Range("a2", .Cells(.Rows.Count, "C").End(xlUp))
    End With
    With OutWks
        .Range("b2", .Cells(.Rows.Count, "B").End(xlUp)).Copy
        .Range("C1").PasteSpecial Transpose:=True
        'fill in the data portion of this table with a formula like:
        '    MATCH(1,((Sheet10!$A$2:$A$10=$A2)*(Sheet10!$B$2:$B$10=B$1)),0))
        myFormula = "=index(" & TempTable.Columns(3).Address(external:=True) _
            & ",match(1,((" & TempTable.Columns(1).Address(external:=True) _
            & "=$a2)*(" & TempTable.Columns(2).Address(external:=True) _
            & "=b$1)),0))"
        .Range("B2").FormulaArray = myFormula

        LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
        LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column        
        .Range("B2").AutoFill _
            Destination:=.Range("B2", .Cells(2, LastCol)), Type:=xlFillCopy
        .Range("B2", .Cells(2, LastCol)).AutoFill _
            Destination:=.Range("B2", .Cells(LastRow, LastCol)), _
        With .Range("b2", Cells(LastRow, LastCol))
            .PasteSpecial Paste:=xlPasteValues
            .Replace What:="#n/a", _
                Replacement:="", _
                LookAt:=xlPart, _
                SearchOrder:=xlByRows, _
                MatchCase:=False, _
                SearchFormat:=False, _
        End With
    End With
    With Application
        .CutCopyMode = False
        .DisplayAlerts = False
        .DisplayAlerts = True
    End With
End Sub

If you're new to macros:

Debra Dalgleish has some notes how to implement macros here:

David McRitchie has an intro to macros:

Ron de Bruin's intro to macros:

(General, Regular and Standard modules all describe the same thing.)

Pete wrote:
> Hi!
> I have a large sum och data in the order below:
> Choice  Course 1        Course 2        Course 3        Course 4
> 1       Name 1  Name 3  Name 2  Name 1
> 2       Name 3  Name 4  Name 4  Name 3
> 3       Name 5
> I would like to structure it differently to the format below:
> Choice  1       2       3
> Name 1  Course 1        Course 4
> Name 2  Course 3
> Name 3  Course 1        Course 2        Course 4
> Name 4  Course 2        Course 3
> Name 5  Course 1
> Is this possible? I have been trying to use pivottables without any luck.
> Cheers and thanks,
> Pete


Dave Peterson
11/26/2009 2:30:46 PM
Excel 2007 PivotTable
With text.
No formulas, no code.
11/26/2009 5:31:53 PM

Similar Artilces:

data input in text box
We have a form which the operator enters data in a text box. Currently we have a 'done' button on the form that the operator clicks to send the text box info to a vba program. How can we send the text box info to the vba program when the operator hits the enter key @ the end of the data entry for the text box? TIA -- _______________________________ In Christ's matchless name ted & colleen n6trf kc6rue Use the control's AfterUpdate event. -- Doug Steele, Microsoft Access MVP http://I.Am/DougSteele (no e-mails, please!) "ted" <n6trf@arr...

Transferring over outlook data to new XP machine
How do I transfer over my old emails, address book to my new XP machine? I have looked over the internet and found nothing the tells me EXACTLY how to do this, any help would be greatly appreciated. If your using MS Outlook copy your .PST file across and import it into the new install. >If your using MS Outlook copy your .PST file across and import it into the new install. No, don't import it. Simply use "File">"Open" -- Brian Tillman Smiths Aerospace 3290 Patterson Ave. SE, MS 1B3 Grand Rapids, MI 49512-1991 Brian.Tillman is the nam...

how do I automatically update a text box in a chart?
Hi, You can link the textbox to a cell. When you update the cell the textbox should reflect this. Select the textbox border and then in the formula bar enter the complete cell reference, for example, =Sheet1!A1 Cheers Andy Kath wrote: -- Andy Pope, Microsoft MVP - Excel ...

Excel 2007
When I select cells to copy as a picture in Excel 2007, the resolution is terrible. Text and objects with shadow's are very blotchy when pasting the picture. How do you change the resolution of a 'Copy Picture'? ...

Parsing data from one spreadsheet into another format
The data that we dump out of one machine comes in like below. %AT_1300 Bottoms|Conductivity| (Water Out) InputRange VDC1to5 %AT_1300 Bottoms|Conductivity| (Water Out) Custom_Range_Low 0.0 %AT_1300 Bottoms|Conductivity| (Water Out) Custom_Range_Hi 0.0 %AT_1300 Bottoms|Conductivity| (Water Out) MinScale 0.0 %AT_1300 Bottoms|Conductivity| (Water Out) MaxScale 20.0 %AT_1300 Bottoms|Conductivity| (Water Out) EngUnits mhos %AT_1300 Bottoms|Conductivity| (Water Out) StepResponseTime 1.0 %AT_1300 Bottoms|Conductivity| (Water Out) DigFiltTimeCnst 0.016 And I need to convert this data to this f...

Input Excel 'Password to Open' through control in access form
Hi All, We know,Excel has prompt password to open it files. Is it possible to create a code that can supplies the excel prompt password?.So that when we open the excel file through our access control in a form, the excel files can be opened automatically.But when the excel files opened from its default icon,it will prompt a password first. ...

Excel not Access
I have designed an Access database that holds records relating to my stores audit results going back for about 5 years plus a load more information relating to these stores. This was used to produe a pack once a month, however a change in senior management means that I have got to shelve this and prodce a similar pack in Excel. The idea would be that the user could select a month or a 12 mnth date range that would produce data that could then be used to populate a number of excel templates that have been designed. Having not used excel for years I would be grateful for any suggestion...

How to keep format when importing Excel into SQL.
Can anybody help me please? When I import Excel file into SQL, a field that formated as 0000000000 (custom), loosing leading zeros. I tried to change data type in SQL after importing. No luck. I appretiate any help. See if using IMEX=1 helps: -- Plamen Ratchev Plamen, I tried this, but got an error: "The OLE DB provider "Microsoft.Jet.OLEDB.4.0" has not been registered." Thank you very much for looking into this. "Plamen Ratchev" wr...

Auto-format in Microsoft Excel.
Each time i try to enter a number range, for example, 8- 10, in Excel, it constantly re-formats it to a date. If I change the formatting to "General" it turns it into a random number, usually 38209. I would like to turn off ALL auto-formatting, but that's probably asking too much. How do I disable this frustrating feature? thanks. Hi Paul When you enter "8-10" in a cell, that's not strictly a number but Excel thinks you mean a date so converts it as such. A date is a number and in your example the number 38209 represents August 10 2004 which is not a ra...

MS Money 95 data files
I hope that some one can answer this for me. I have used MS Money 95 for years, and it works just fine for me on Windows XP, however, I now have to reformat my hard drive, and have discovered that I can nolonger find my original install disk. Will the latest versions of Money still read the MS Money 95 data files. All that I have ever used the program for is to track my investments, and am unlikely to do any different in the future. Thanks Stan B In, Stan Banner wrote: >I hope that some one can answer this for me. >I have used MS Money 95 for years, and...

HELP! Need to export hourly sales data on POS (NOT RMS)
How can I export hourly sales data across a date range? For instance, I want to show hourly sales for the month of October so I can graph it and post it in our break room. If I can't export hourly data, can I export daily sales? The built-in reports don't address this data format. This is a multi-part message in MIME format. ------=_NextPart_000_008E_01C826DC.CBC512D0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=response Content-Transfer-Encoding: 7bit Mark, This should work for you. Keep in mind it takes up to 5-10 minutes to load...

How to change font size on formula bar in Excell 2007
I don't find Tools>Options>General (as suggested in other post answers) in Excel 2007. On the Office button there is an Excel Options but it doesn't provide a method of changing font size on the office but. My font is so small I can barely see it. Office button>ExcelOptions>Popular tab>in the "When creating new workbooks" section, choose font and font size -- Kind regards, Niek Otten Microsoft MVP - Excel "jimwillie" <> wrote in message news:588AAC05-0F52-404E-AA01-128E70E02D0B@microso...

Opening Excel Workbooks
I'm running into an issue where if I click on an Excel file through My Documents, it doesn't automatically bring it up. I get the toolbar but the actual spreadsheet doesn't appear on the screen. I have to click on the taskbar to get it to pop up. If I already have Excel active and I open a file through Excel, this doesn't happen. Any ideas? Here is a similar thread: Rolli -- Message posted from Hi, Take a look at Tools-Options-General tab- uncheck ignore other application...

Unexpected error message on closing an Excel file
Suddenly I am getting the following message when I try to close a workbook: "Your formula contains an invalid external reference to a worksheet. Verify that the path, workbook, and range name or cell reference are correct, and try again" The mysterious thing is that it does not happen consistently and that, after I click OK after the above message, I can still save the file. What might be the cause of this error message and can the "invalid reference" be tracked down using one of the utility add-ins such as J. Walkenbach's PUP? If it only happens when you close ...

help with simple maths in excel
I want to do a simple arithmatic excercise in excel for my grand daughter. It is stuff like 2+2 =4 Smart me has hit a problem at the first hurdle... I need to put 2 in one cell the + in another cell and then 2 in another = in another and then she puts the answer in the next one. So the above would have 4 cells completed and she would put the answer in the 5th one. When I use the + or = sign in a cell of its own it (excel) thinks I am doing an equation, is there a way around this? I will work on the answer like if she gets it correct or wrong how I will do that...a sound or som...

Lookup text with multiple search criteria
I know how to look up data and text using vlookup and hlookup, what I' like to know is whether there is a way of looking up data based on mor than 1 search criteria; for example If I wanted to look up an item in a 4 column database, I'd us something like this: =VLOOKUP("Apples",A2:D10,4,false) But that only looks for Apples. Say I wanted to lookup data based on subcategory of Apples, e.g. colour. If it was a number, I could use SUMPRODUCT and (assuming named range were in use) do it like this: =SUMPRODUCT((Fruit="Apples)*(Colour="Red")*(Total)) But obvio...

Sorting Data #5
Is there formula or anyway to be able sort the below data into a format that I could create a pivot table on? I spend to many hours doing this every month. Invoice #: 12345 Invoice Date: 1/16/1950 A/P Code: ABC Due Date: 1/16/1950 Total Payable: $100.00 Reference: Freight: Account #: 1234 Description: Name Reference 1 Amount: $100.00 Account #: 4321 Description: Name Reference 2 Amount: $100.00 Account #: 9876 Description: Name Reference 3 Amount: $100.00 Any help would be much appreciated!! You need to show a Before and After version. You still might not get any help, but your ...

How To Copy MS Word mailing labels into Excel
I have a word doc that I want to put into Excel. I want to add some more fields to the names and addresses. Is this simple or do I have to learn how to program? Michael Rodriguez City of Grand Prairie Michael, have you tried to copy and paste the data into excel? -- Paul B Always backup your data before trying something new Please post any response to the newsgroups so others can benefit from it Feedback on answers is always appreciated! Using Excel 2000 & 97 ** remove news from my email address to reply by email ** "Michael Rodriguez" <> wrote in messa...

How do I use traffic lights in excel
I am wanting to use traffic lights in excel that change colour based on the result of a variance cell, ie if the result of the cell is 10 make the traffic light green, if it is 20 make the traffic light amber, if the result is 30 make the traffic light red. How do I do this? Shorty Format>Conditional Formatting>Cell Value is: Note: you can add up to 3 conditions(4 if you count default) Gord Dibben Excel MVP On Wed, 22 Dec 2004 16:35:03 -0800, Shorty <> wrote: >I am wanting to use traffic lights in excel that change colour based on the &g...

HELP! remote data not accessible msg
Hello, I have a use who is currently using a Bloomberg DDE add- in. Whenever he attempts to activate the add-in to retreive remote data, the system hangs. If I go to task manager, I then see a message stating "Remote data not accessible. To access this data Excel needs to open another program.... I have searched the knowledge base and didn't find much help. Does anyone have any ideas? I am desperate!!!! We are currently using Excel 2003 in XP Professional. TIA, Ramissah ...

Calculating age in a label or text box on a form
Hello All, I have a text box for birthdate for a user to enter the birthdate and I want to the age for the user to be automatically calcuated and displayed in another label called "Age." What formula can I use? Missy ...

[b]Can I download Excel data to a MS Access database?[/b]
I've built an Excel 2002 form that I want our internal customers to access from our intranet, and use. Once completed, they will send it to us as an e-mail attachment. I'd like to be able to open it, and somehow download the data from the form into an MS Access 2002 database I've built (so that we don't have to rekey it into the database). Is this possible or even feasible? Any and all help is appreciated. Thanks. :D --------- Message sent via Hi in Access check 'File - Import External data' -- Regards Frank Kabel Frankfurt, Germany "...

Excel Problem
I have a 23.8 meg excel 2000 spreadsheet set for manual calculation saved to my local hard drive. Every time I try to open it, it takes forver and sometimes never opens but I do not get any error messages, let me just tell you that I am running a P4, 1 GB memory, Office 2K with SP3, and nothing else running when I try to open it. As I said it is set for manual calculation, and it is cleared to not auto calculate when opening or closing. Any idea's as to why this is happening? -- Todd I don't know why you're having this problem but I would like to point something out for w...

How do I merge cells with multiple data values?
I've tried highlighting the two cells which are in the same row. It suggested that I format and align. Both of which I've tried. I keep getting the same error message, "The selection contains multiple data values. Merging into one cell will keep the upper-most data only." I need to make the cells one with all my information. Is this possible? Not knowing what you want to do, let me make a suggestion. Put all your data into the first cell and leave the second cell empty. Select both cells. Click on Format - Cells - Alignment tab. In the "Horizontal" b...

Excel DNS query
Hello, Is there a way for an Excel function to query a DNS server? Thanks. Soundy Not that I know of, but you can turn on the macro recorder, use 'get external data' and tailor the resulting code into a user function of your own. E.g. I've used this to create a button to get MS-Access data from a query that has the same name as the sheet (tab) name. It saves me a lot of copy-paste actions. Bas Hartkamp <> schreef in bericht > Hello, > > Is there a way for an Excel function ...