Hi,
Try the following. It assumes your data is on Sheet1 with the names starting in B1 and going across the columns and the skills in A2 going down the rows, and there is a Sheet2 which will receive the revised output.
Sub ListSkills()
Dim iNoNames As Integer, iskills As Integer, itimes As Integer, x As Integer, y As Integer, iVal As Integer
Sheet1.Activate
iskills = Application.WorksheetFunction.CountA(Range("A1:A65536"))
iNoNames = Range(Range("B1"), Range("B1").End(xlToRight)).Cells.Count
For x = 1 To iNoNames
iVal = 0
itimes = Application.WorksheetFunction.CountA(Range("B1:B65536").Offset(0, x - 1)) - 1
If itimes > 0 Then
Sheet2.Range("B65536").End(xlUp).Offset(1, -1) = Range("B1").Offset(0, x - 1)
For y = 1 To iskills
If Range("B1").Offset(y, x - 1) <> "" Then
Sheet2.Range("A65536").End(xlUp).Offset(iVal, 1) = Sheet1.Range("A1").Offset(y, 0)
Sheet2.Range("A65536").End(xlUp).Offset(iVal, 2) = Sheet1.Range("B1").Offset(y, x - 1)
iVal = iVal + 1
End If
Next y
End If
Next x
End Sub
HTH
Bookmarks