DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
	Altın Üyelik Hakkında Bilgi
Option Explicit
Sub Yan_Yana_Aktar()
    Dim Dizi As Object, Veri As Variant
    Dim X As Long, Y As Integer, Sutun_Veri As Byte
    Dim Sutun_Dizi As Variant, Max_Sutun As Integer
    Dim Say As Long, Zaman As Double
    
    Zaman = Timer
    
    Set Dizi = VBA.CreateObject("Scripting.Dictionary")
    
    Veri = Range("A1").CurrentRegion.Value
    
    ReDim Liste(1 To UBound(Veri, 1), 1 To 16384)
    
    For X = LBound(Veri, 1) To UBound(Veri, 1)
        Sutun_Veri = 1
        If Not Dizi.Exists(Veri(X, 1)) Then
            Say = Say + 1
            Dizi.Add Veri(X, 1), Array(Say, 1)
            For Y = 1 To 4
                Liste(Say, Y) = Veri(X, Sutun_Veri)
                Sutun_Veri = Sutun_Veri + 1
            Next
            Sutun_Dizi = Dizi.Item(Veri(X, 1))
            Sutun_Dizi(1) = Y
            Max_Sutun = Application.Max(Max_Sutun, Sutun_Dizi(1))
            Dizi.Item(Veri(X, 1)) = Sutun_Dizi
        Else
            For Y = Dizi.Item(Veri(X, 1))(1) To Dizi.Item(Veri(X, 1))(1) + 3
                Liste(Dizi.Item(Veri(X, 1))(0), Y) = Veri(X, Sutun_Veri)
                Sutun_Veri = Sutun_Veri + 1
            Next
            Sutun_Dizi = Dizi.Item(Veri(X, 1))
            Sutun_Dizi(1) = Y
            Max_Sutun = Application.Max(Max_Sutun, Sutun_Dizi(1))
            Dizi.Item(Veri(X, 1)) = Sutun_Dizi
        End If
    Next
    
    If Say > 0 Then
        Cells.Delete
        Range("A1").Resize(Say, Max_Sutun) = Liste
        Columns.AutoFit
        MsgBox "İşleminiz tamamlanmıştır." & vbCrLf & vbCrLf & _
               "İşlem süresi ; " & Format(Timer - Zaman, "0.00") & " Saniye", vbInformation
    End If
    Dizi.RemoveAll
    Erase Liste
    Set Dizi = Nothing
End Sub