Na stronie:
https://newtonexcelbach.wordpress.com/2012/01/31/retrieving-unique-values-from-a-range-or-array/
Znalazłem funkcję tablicową UDF (trzeba wprowadzić wciskając (Ctrl+Shift+Enter), która umożliwia uzyskanie unikalnych wartości z zakresu. Jak przerobić tę funkcję, aby zwracała wartości posortowane?
Function Unique(DRange As Variant) As Variant Dim Dict As Object Dim i As Long, j As Long, NumRows As Long, NumCols As Long 'Convert range to array and count rows and columns If TypeName(DRange) = "Range" Then DRange = DRange.Value2 NumRows = UBound(DRange) NumCols = UBound(DRange, 2) 'put unique data elements in a dictionay Set Dict = CreateObject("Scripting.Dictionary") For i = 1 To NumCols For j = 1 To NumRows Dict(DRange(j, i)) = 1 Next j Next i 'Dict.Keys() is a Variant array of the unique values in DRange 'which can be written directly to the spreadsheet 'but transpose to a column array first Unique = WorksheetFunction.Transpose(Dict.keys) End Function
Autor artykułu wspomina, że struktura dictionary w VBA nie jest dobrze udokumentowana, więc przy okazji byłbym ciekaw, jak w VBA posortować taką strukturę.
Z góry dziękuję za podpowiedź.