Sub FillListbox1()
Dim ws As Worksheet
Dim arrQuell As Variant, arrFilter() As Variant
Dim letzteZeile As Long, i As Long, j As Long, treffer As Long
Dim krit1 As String, krit2 As String
Dim iC As Long
Dim Counter As Long
Set ws = ThisWorkbook.Sheets("Rohdaten")
krit1 = ORDER.Label1380.Caption 'Jahr
krit2 = ORDER.Label450.Caption 'KW
letzteZeile = ws.Cells(ws.Rows.count, "A").End(xlUp).Row
' Daten von Spalte A bis U (Spalte 1 bis 21) in ein Array einlesen
arrQuell = ws.Range("A2:U" & letzteZeile).Value
ReDim arrFilter(1 To UBound(arrQuell, 1), 1 To UBound(arrQuell, 2))
treffer = 0
' 1. Schritt: Daten filtern (Spalte A = 1, Spalte D = 4)
For i = 1 To UBound(arrQuell, 1)
If arrQuell(i, 1) = krit1 And arrQuell(i, 4) = krit2 Then
treffer = treffer + 1
arrFilter(treffer, 1) = arrQuell(i, 7) ' Spalte G
arrFilter(treffer, 2) = arrQuell(i, 8) ' Spalte H
arrFilter(treffer, 3) = "(" & arrQuell(i, 21) & ")" ' Spalte U
End If
Next i
' Array auf die tatsächliche Trefferanzahl verkleinern
ReDim Preserve arrFilter(1 To UBound(arrFilter, 1), 1 To UBound(arrQuell, 2))
' 3. Schritt: Daten in die ListBox ausgeben
With ORDER.ListBox1
.Clear ' Vorherige Einträge löschen
.ColumnCount = 3 ' 3 Spalten festlegen
.ColumnWidths = "0;150;30"
.List = arrFilter ' Das Array direkt zuweisen
End With
end sub
ReDim Preserve arrFilter(1 To UBound(arrFilter, 1), 1 To UBound(arrQuell, 2))
ReDim Preserve arrFilter(1 To Treffer, 1 To UBound(arrQuell, 2))
ArrFilter = Worksheetfunction.Transpose(ArrFilter)
Redim Preserve ArrFilter(1 to Ubound(arrFilter 1), 1 to Treffer)
ArrFilter = Worksheetfunction.Transpose(ArrFilter)
Redim arrFilter(1 to Worksheetfunction.Countif(WS.Columns(1), krit1, ws.Columns(4), krit2), 1 to Ubound(arrQuelle, 2))
ReDim Preserve arrFilter(1 To Treffer, 1 To UBound(arrQuell, 2))
Redim arrFilter(1 to Worksheetfunction.Countif(WS.Columns(1), krit1, ws.Columns(4), krit2), 1 to Ubound(arrQuelle, 2))
Sub FillListbox1()
Dim arrTab(), arrList(), i&, j&, k&, lz&, krit1$, krit2$
With Sheets("Rohdaten")
krit1 = Label1380.Caption
krit2 = Label450.Caption
lz = .Cells(.Rows.Count, "A").End(xlUp).Row
arrTab = .Range("A2:U" & lz).Value
End With
ReDim arrList(1 To 3, 1 To UBound(arrTab))
For i = 1 To UBound(arrTab, 1)
If arrTab(i, 1) = krit1 And arrTab(i, 4) = krit2 Then
k = k + 1
arrList(1, k) = arrTab(i, 7)
arrList(2, k) = arrTab(i, 8)
arrList(3, k) = arrTab(i, 21)
End If
Next i
ReDim Preserve arrList(1 To 3, 1 To k)
With ListBox1
.ColumnCount = 3
.ColumnWidths = "100;150;30"
.Column = arrList
End With
End Sub
ListBox1.Clear
For a = 1 To UBound(arr, 1)
For L = 0 To ListBox1.ListCount - 1
If arr(a, 1) < ListBox1.List(L, 0) Then Exit For
Next
ListBox1.AddItem arr(a, 1), L
ListBox1.List(L, 1) = arr(a, 2)
ListBox1.List(L, 2) = arr(a, 3)
Next
Private Sub QuickSort(lngLBound As Long, lngUBound As Long, avntArray As Variant, lngSortColumn As Long)
Dim lngIndex1 As Long, lngIndex2 As Long, lngColumn As Long
Dim vntBuffer As Variant, vntTemp As Variant
lngIndex1 = lngLBound
lngIndex2 = lngUBound
vntTemp = avntArray((lngLBound + lngUBound) \ 2, lngSortColumn)
Do
Do While avntArray(lngIndex1, lngSortColumn) < vntTemp
lngIndex1 = lngIndex1 + 1
Loop
Do While vntTemp < avntArray(lngIndex2, lngSortColumn)
lngIndex2 = lngIndex2 - 1
Loop
If lngIndex1 <= lngIndex2 Then
For lngColumn = LBound(avntArray, 2) To UBound(avntArray, 2)
vntBuffer = avntArray(lngIndex1, lngColumn)
avntArray(lngIndex1, lngColumn) = avntArray(lngIndex2, lngColumn)
avntArray(lngIndex2, lngColumn) = vntBuffer
Next
lngIndex1 = lngIndex1 + 1
lngIndex2 = lngIndex2 - 1
End If
Loop Until lngIndex1 > lngIndex2
If lngLBound < lngIndex2 Then Call QuickSort(lngLBound, lngIndex2, avntArray, lngSortColumn)
If lngIndex1 < lngUBound Then Call QuickSort(lngIndex1, lngUBound, avntArray, lngSortColumn)
End Sub
Sub FillListbox1()
Dim arrTab(), arrList(), i&, j&, k&, lz&, krit1$, krit2$
With Sheets("Rohdaten")
krit1 = 2025
krit2 = 50
lz = .Cells(.Rows.Count, "A").End(xlUp).Row
arrTab = .Range("A2:U" & lz).Value
End With
ReDim arrList(1 To 3, 1 To UBound(arrTab))
For i = 1 To UBound(arrTab, 1)
If arrTab(i, 1) = krit1 And arrTab(i, 4) = krit2 Then
k = k + 1
arrList(1, k) = arrTab(i, 7)
arrList(2, k) = arrTab(i, 8)
arrList(3, k) = arrTab(i, 21)
End If
Next i
ReDim Preserve arrList(1 To 3, 1 To k)
With ListBox1
.ColumnCount = 3
.ColumnWidths = "100;150;30"
.Column = arrList
arrList = .List
Call QuickSort(LBound(arrList), UBound(arrList), arrList, 2)
.List = arrList
End With
End Sub
Sub M_snb()
With Sheets("Rohdaten").Cells(1).CurrentRegion
.AutoFilter 1, Label1380.Caption
.AutoFilter 4, Label450.Caption
.Copy .Parent.Cells(1, 60)
Listbox1.List = .Parent.Cells(1, 60).CurrentRegion
.Parent.Cells(1, 60).CurrentRegion.ClearContents
End With
With Listbox1
.ColumnCount = 21
.ColumnWidths = "0;0;0;0;0;0100;150;0;0;0;0;0;0;0;0;0;0;0;0;30"
End With
End Sub
Sub M_snb()
With Sheets("rohdaten").Cells(1).CurrentRegion
.AutoFilter 1, Label1380
.AutoFilter 4, Label450
.Copy .Parent.Cells(1, 60)
ListBox1.List = Application.Index(.Parent.Cells(1, 60).CurrentRegion.Value, [row(1:100)], Array(7, 8, 21))
.Parent.Cells(1, 60).CurrentRegion.ClearContents
End With
ListBox1.ColumnCount = 3
End Sub