Wenn Sie den Bereich Mittelsmann ausschneiden möchten, können Sie die Werte direkt in eine 1-dimensionale VBA-Array erhalten, indem ein Wörterbuch verwenden, um sicherzustellen, dass nur einmalig Werte werden gepackt:
Function UniqueVals(Col As Variant, Optional SheetName As String = "") As Variant
'Return a 1-based array of the unique values in column Col
Dim D As Variant, A As Variant, v As Variant
Dim i As Long, n As Long, k As Long
Dim ws As Worksheet
If Len(SheetName) = 0 Then
Set ws = ActiveSheet
Else
Set ws = Sheets(SheetName)
End If
n = ws.Cells(Rows.Count, Col).End(xlUp).Row
ReDim A(1 To n)
Set D = CreateObject("Scripting.Dictionary")
For i = 1 To n
v = ws.Cells(i, Col).Value
If Not D.Exists(v) Then
D.Add v, 0
k = k + 1
A(k) = k
End If
Next i
ReDim Preserve A(1 To k)
UniqueVals = A
End Function
Zum Beispiel wird ein Array zurück UniqueVals("E",sheetName)
bestehend aus den eindeutigen Werte in der Spalte E von Sheetname.
Was meinst du? Kopieren Sie es in ein VBA-Array und nicht in einen Tabellenbereich? Sie können das nicht direkt tun, aber es ist einfach genug, es in einen Tabellenkalkulationsbereich und dann aus dem Bereich in ein VBA-Array zu kopieren - danach löschen Sie die Werte im Bereich. –