Если вы хотите, чтобы вырезать диапазон посредник, вы можете получить значения непосредственно в 1-мерный массив VBA, используя словарь, чтобы убедиться, что только уникальным значения захватываются:
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
Например, UniqueVals("E",sheetName)
возвращает массив, состоящий из уникальных значений в столбце Е SheetName.
Что вы имеете в виду? Скопировать его в массив VBA, а не в диапазон электронных таблиц? Вы не можете сделать это напрямую, но достаточно просто скопировать его в диапазон электронных таблиц, а затем из диапазона в массив VBA - после этого удалить значения в диапазоне. –