Noticed no response to this so, decided to brush up some rusty array skills.
It does the job at my end on the sample data you provided.
-Copy the code below (between asterisks) to a module;
-click in a single cell of the area where you want rows reversed;
-run the code.
If you don't know about creating macros see + "Create a macro using
Microsoft Visual Basic" 0n the web page that follows
http://office.microsoft.com/en-us/excel/HP052047111033.aspx
--
Steve
'*****************************************************************
Option Base 1
Sub ReverseRows()
' click on any cell in the area to reverse before running
Dim r As Integer, c As Integer, i As Integer, x As Integer, s As Integer
Dim arFromSheet
Dim arToSheet
Selection.CurrentRegion.Select
r = Selection.Rows.Count
c = Selection.Columns.Count
On Error Resume Next
ReDim arToSheet(r, c)
'Get values from selection as an arFromSheetay
arFromSheet = Selection.Value
For i = 1 To r
s = 0
For x = 1 To c
If arFromSheet(i, c - x + 1) & "" = "" Then
'allow for blank and empty cells
s = s + 1
Else
arToSheet(i, x - s) = arFromSheet(i, c - x + 1)
End If
Next x
Next i
'Put the arFromSheetay back into the worksheet
Selection.Value = arToSheet
End Sub
'***********************************************************************