Hello,
Try this code:
(change the input range and output destination cell as required)
Sub FlatData()
Dim ar, arF
Dim i As Long, j As Long, n As Long
ar = Sheets(1).Range("B2").CurrentRegion.Value 'Range of data
n = UBound(ar, 2)
ReDim arF(1 To UBound(ar, 1) * n, 1 To 3)
n = 1
For i = 2 To UBound(ar, 1) '2 to skip header row
For j = 3 To UBound(ar, 2)
arF(n, 1) = ar(i, 1)
arF(n, 2) = ar(i, 2)
If ar(i, j) <> "" Then
arF(n, 3) = ar(i, j)
n = n + 1
End If
Next j
Next i
Sheets(2).Cells(1).Resize(n - 1, 3) = arF 'Output to different sheet (must exist)
End Sub
Bookmarks