Well, I did registered a macro and tuned it a bit. So select all your table (without headers) and run:

Sub Test()
Dim ul As Range, lr As Range
Application.ScreenUpdating = False
With Selection
  Set ul = .Cells(1)
  Set lr = .Cells(.Cells.Count)
End With
ul.EntireRow.Insert Shift:=xlDown
Set ul = ul.Offset(-1, 0)
ul.FormulaR1C1 = "=IF(ISNUMBER(R[1]C),-R[1]C,R[1]C)"
Range(ul, Cells(ul.Row, lr.Column)).FillRight
Range(ul, lr).Sort Key1:=ul, Order1:=xlAscending, Header:=xlNo, _
  OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight
ul.EntireRow.Delete
End Sub
of course instead of selecting before running macro you can use other methods to select upperlefy (ul) and lowerright (lr) corners of your data table (As I said - just data, not headers).