Try this:
VB Code:
  1. Private Sub SplitRows()
  2.  
  3.     Dim oRange As Range, lRow As Long, lCol As Long, oOut As Worksheet, lOut As Long
  4.     Dim sValue As String, sName As String
  5.    
  6.     Set oRange = Application.ActiveSheet.UsedRange          'Get the range of used cells.
  7.     Set oOut = Application.ActiveWorkbook.Worksheets.Add    'Create an output worksheet.
  8.  
  9.     For lRow = 1 To oRange.Rows.Count                       'Loop through all rows.
  10.         sName = oRange.Cells(lRow, 1).Value                 'Get the name from column A.
  11.         sName = Trim$(sName)                                'Trim it.
  12.         If Len(sName) <> 0 Then                             'Check to see if there is an entry.
  13.             For lCol = 2 To oRange.Columns.Count            'Loop through the remaining columns.
  14.                 sValue = oRange.Cells(lRow, lCol).Value     'Get the value from that cell.
  15.                 sValue = Trim$(sValue)                      'Trim it.
  16.                 If Len(sValue) <> 0 Then                    'See if there is a value there.
  17.                     lOut = lOut + 1                         'Increment the output row counter.
  18.                     oOut.Cells(lOut, 1).Value = sName       'Write the name cell.
  19.                     oOut.Cells(lOut, 2).Value = sValue      'Write the value cell.
  20.                 End If
  21.             Next lCol
  22.         End If
  23.     Next lRow
  24.    
  25.     Set oRange = Nothing                                    'Release objects.
  26.     Set oOut = Nothing
  27.  
  28. End Sub