This little macro will create an "Output" list sheet and populate it based on the field names in column A and the values in column B. The field names DO have to be accurate.
Option Explicit
Sub TransposeList()
Dim LR As Long, NR As Long, i As Long
Dim wsI As Worksheet, wsO As Worksheet
Set wsI = ActiveSheet
LR = Range("A" & Rows.Count).End(xlUp).Row
Application.ScreenUpdating = False
'Setup New Sheet
Sheets.Add.Name = "Output" & Sheets.Count
Set wsO = ActiveSheet
Range("A1") = "Name"
Range("B1") = "Age"
Range("C1") = "City"
Range("D1") = "Country"
With Range("A1:D1")
.Font.Bold = True
.Borders(xlEdgeBottom).LineStyle = xlContinuous
.Borders(xlEdgeBottom).Weight = xlMedium
End With
Range("A2").Select
ActiveWindow.FreezePanes = True
NR = 1
'Tranpose old data
wsI.Activate
For i = 1 To LR
Select Case Cells(i, "A").Value
Case "Name"
NR = NR + 1
wsO.Cells(NR, "A") = Cells(i, "B")
Case "Age"
wsO.Cells(NR, "B") = Cells(i, "B")
Case "City"
wsO.Cells(NR, "C") = Cells(i, "B")
Case "Country"
wsO.Cells(NR, "D") = Cells(i, "B")
Case Else
'do nothing
End Select
Next i
wsO.Activate
Application.ScreenUpdating = True
End Sub
Bookmarks