Private Sub UserForm_Initialize()
Dim rng, veri, liste, i, ii, say, bb, b, ky, miktar, sut, s, uz, alan, son
Set alan = Range("B4")
son = Cells(Rows.Count, 2).End(3).Row
With CreateObject("Scripting.Dictionary")
For Each rng In Range("B5:B" & son).SpecialCells(xlCellTypeVisible).Areas
For Each b In rng.Cells
Set alan = Union(alan, b)
Next b
Next rng
Set alan = Intersect(alan, Selection, Range("B5:B" & son))
If alan Is Nothing Then Exit Sub
For Each b In alan.Cells
.Item(WorksheetFunction.Trim(b)) = Null
Next b
veri = .keys
.RemoveAll
ReDim liste(1 To UBound(veri) + 3, 1 To 1)
For i = 0 To UBound(veri)
For Each bb In Split(veri(i), ",")
b = Split(WorksheetFunction.Trim(bb), " ")
ky = UCase(Trim(b(1)))
miktar = CDbl(Replace(Trim(b(0)), ".", ","))
If Not .exists(ky) Then
say = say + 1
.Item(ky) = say
ReDim Preserve liste(1 To UBound(veri) + 3, 1 To say)
liste(2, say) = ky
End If
sut = .Item(ky)
liste(1, sut) = liste(1, sut) + miktar
liste(i + 3, sut) = miktar
Next bb
Next i
End With
For i = 1 To say
s = s & ";" & 30
uz = uz + 32
Next i
For i = 1 To UBound(liste)
For ii = 1 To say
liste(i, ii) = liste(i, ii) & String(10 - Len(liste(i, ii)), "-")
Next ii
Next i
ListBox1.Width = uz + 0
ListBox1.Height = (UBound(veri) + 3) * 12
ListBox1.List = liste
ListBox1.ColumnCount = say
ListBox1.ColumnWidths = Mid(s, 2)
Me.Width = uz + 22
Me.Height = ((UBound(veri) + 3) * 12) + 35
End Sub