Click on options button Select sort left to right & click OK. You can also use the shortcut key Alt + A + S + S for sorting pop-up window. Go to Data Tab Sort & Filter Click on Sort Button. RngSort. First of all, select the data you want to sort. Set RngKey1 = RngSort.Rows(1).Cells(sortField) SortField = Application.Match(headerToFind, RngSort.Rows(1), 0) rearrange the order of columns from left to right based on column headers or values in a particular row. However, sometimes we have non-trivial data sets and we do need to sort by row (horizontally), i.e. Set ws = wbTarget.Worksheets('Sheet1') 'change as appropriate I guess in 90 of cases when you are sorting data in Excel, you sort by values in one or several columns. I essentially try to match the headerToFind string in the header row of the usedRange and, if not found use error handling, otherwise sort. Find I suspect is more efficient, and there is certainly less code, which is good, I was interested in having a play using Application.Match so wrote the following, which I would welcome feedback on.