Sub loc2()
Dim num1 As Long, num2 As Long, num3 As Long, num4 As Long, num5 As Long, rng As Range, sfin As Range, arr1, arr2, arr3
num3 = Sheets("sheet1").[A60000].End(xlUp).Row - 2
For num1 = 1 To num3
num5 = WorksheetFunction.Max(num5, Sheets("sheet1").Cells(num1 + 2, Columns.Count).End(xlToLeft).Column)
Next num1
arr3 = Sheets("sheet1").[A3].Resize(num3, num5)
ReDim arr2(1 To 100, 1 To num3 + 2)
With CreateObject("scripting.dictionary")
For num1 = 1 To UBound(arr3)
For num4 = 2 To UBound(arr3, 2)
If arr3(num1, num4) <> Empty Then
If Not .exists(arr3(num1, num4)) Then
num2 = num2 + 1
.Add arr3(num1, num4), num2
arr2(num2, 1) = arr3(num1, num4): arr2(num2, 2) = 1: arr2(num2, 3) = arr3(num1, 1)
Else
arr2(.Item(arr3(num1, num4)), 2) = arr2(.Item(arr3(num1, num4)), 2) + 1
For num5 = 4 To UBound(arr2, 2)
If arr2(.Item(arr3(num1, num4)), num5) = Empty Then
arr2(.Item(arr3(num1, num4)), num5) = arr3(num1, 1)
Exit For
End If
Next num5
End If
End If
Next num4
Next num1
End With
Sheets("sheet2").[A3].Resize(UBound(arr2), UBound(arr2, 2)) = arr2
End Sub