Ich würde eine einfache VBA-Collection
verwenden und Elemente mit Schlüssel hinzufügen. Der Schlüssel wäre das Element selbst und da es keine doppelten Schlüssel geben kann, enthält die Sammlung eindeutige Werte.
Hinweis: Da das Hinzufügen eines doppelten Schlüssels zur Sammlung einen Fehler auslöst, wird der Aufruf von collection-add in eine on-error-resume-next-Nachricht eingeschlossen.
Die Funktion GetUniqueValues
hat Source-Bereich-Werte als Parameter und Retuns VBA-Collection
von einzigartigem Quelle-Bereich-Wert. In der main
Methode wird die Funktion aufgerufen und das Ergebnis wird in das Ausgabefenster gedruckt. HTH.
Beispielquellbereich sah wie folgt aus:
Option Explicit
Sub main()
Dim uniques As Collection
Dim source As Range
Set source = ActiveSheet.Range("A2:F6")
Set uniques = GetUniqueValues(source.Value)
Dim it
For Each it In uniques
Debug.Print it
Next
End Sub
Public Function GetUniqueValues(ByVal values As Variant) As Collection
Dim result As Collection
Dim cellValue As Variant
Dim cellValueTrimmed As String
Set result = New Collection
Set GetUniqueValues = result
On Error Resume Next
For Each cellValue In values
cellValueTrimmed = Trim(cellValue)
If cellValueTrimmed = "" Then GoTo NextValue
result.Add cellValueTrimmed, cellValueTrimmed
NextValue:
Next cellValue
On Error GoTo 0
End Function
Ausgabe
SGD
PHP
KRW
CNY
IDA
BGN
PDSS
CBBT
INPC
DBS
a
Im Fall, wenn die so urce Bereich besteht aus Bereichen erhalten Sie zuerst die Werte aller Bereiche.
Public Function GetSourceValues(ByVal sourceRange As Range) As Collection
Dim vals As VBA.Collection
Dim area As Range
Dim val As Variant
Set vals = New VBA.Collection
For Each area In sourceRange.Areas
For Each val In area.Value
If val <> "" Then _
vals.Add val
Next val
Next area
Set GetSourceValues = vals
End Function
Quelltyp ist jetzt Sammlung aber dann funktioniert alles gleich:
Dim uniques As Collection
Dim source As Collection
Set source = GetSourceValues(ActiveSheet.Range("A2:F6").SpecialCells(xlCellTypeVisible))
Set uniques = GetUniqueValues(source)
Wenn Sie eine streng VBA-basierte Lösung wollen, schauen Sie sich ein Scripting.Dictionary des [Exists-Methode] (https: // msdn .microsoft.com/de-de/library/office/gg251562.aspx). – Jeeped