Sorting Data Fields in Excel 2010
Handy Programming Tips for Microsoft Excel 2010: Learn how to sort multiple fields in a Microsoft Excel 2010 table of data.
Applies to: Excel 2010 | Office 2010 | VBA
In this article
Add the Code to the Visual Basic Editor
Test the Solution
Next Steps
Published: May 2011
Provided by: Frank Rice, Microsoft Corporation
Sorting data is an important part of data analysis. For example, you might want to alphabetize a list of names or compile a list of products organized by inventory levels. Sorting data helps you quickly visualize and understand your data, organize and find the data that you want, and ultimately make better decisions. In this topic, you programmatically create a table of data and then sort two columns. To complete this task, you must do the following:
Add the Code to the Visual Basic Editor
Test the Solution
Add the Code to the Visual Basic Editor
In this task, you add programming code that creates a table and then sorts two columns in that table.
To add code to the Visual Basic Editor
Start Excel 2010.
On the Developer tab, click Visual Basic to open the Visual Basic Editor.
Note
If you do not see the Developer tab in Excel 2010, click the File tab, and then click Options. In the categories pane, click Custom Ribbon, select Developer, and then click OK.
In the Projects pane, click Sheet1.
Paste or type the following Microsoft Visual Basic for Applications (VBA) code into the module window.
Sub TestWorksheetSort() ' Create sample data: Range("A1:D1") = Array("Name", "City", "State", "Age") Range("A2:D2") = Array("Pam", "Los Angeles", "CA", "16") Range("A3:D3") = Array("Jerry", "Boston", "MA", "14") Range("A4:D4") = Array("Juanita", "San Francisco", "CA", "15") Range("A5:D5") = Array("Xochitl", "Houston", "TX", "11") Range("A6:D6") = Array("Jozi", "New York", "NY", "7") Range("A7:D7") = Array("Aneka", "Houston", "TX", "18") Range("A8:D8") = Array("Brie", "Boston", "MA", "22") Range("A9:D9") = Array("Andrew", "Seattle", "WA", "23") Range("A10:D10") = Array("Grace", "Boston", "MA", "35") Range("A11:D11") = Array("Tom", "Houston", "TX", "12") ' Retrieve a reference to the used range: Dim rng As Range Set rng = UsedRange ' Create sort: Dim srt As Sort ' Include these two lines to make sure you get ' IntelliSense help as you work with the Sort object: Dim sht As Worksheet Set sht = ActiveSheet Set srt = sht.Sort ' Sort first by state ascending, and then by age descending. srt.SortFields.Clear srt.SortFields.Add Key:=Columns("C"), _ SortOn:=xlSortOnValues, Order:=xlAscending srt.SortFields.Add Key:=Columns("D"), _ SortOn:=xlSortOnValues, Order:=xlDescending ' Set the sort range: srt.SetRange rng srt.Header = xlYes srt.MatchCase = True ' Apply the sort: srt.Apply End Sub
Test the Solution
In this task, you step through the VBA code that creates a table of names and other data and then sorts two columns; one in ascending order and another in descending order.
To run the code
Drag the Visual Basic Editor window to the right side of your monitor.
Drag the Excel window to the left side of your monitor and adjust the windows until you can see them both.
Press F8 to step through the code line-by-line and watch the code sort the data in Excel.