VBA – Array mit eindeutigen Werten aus einer Spalte auffüllen

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Zakarya El Oirzadi

Last updated on Dezember 20, 2022

In diesem Tutorial lernen Sie, wie Sie in VBA ein Array mit eindeutigen Werten aus einer Spalte auffüllen können.

Array mit eindeutigen Werten aus einer Spalte auffüllen

Um eine Liste von Werten aus einem Excel-Blatt in ein Array zu übernehmen, müssen Sie lediglich die Zeilen in Excel in einer Schleife durchlaufen und das Array auffüllen.

Betrachten Sie die folgende Kundenliste in der Excel-Tabelle.

vba eindeutige liste erstellen

Mit einer Schleife könnten wir ein Array in VBA auffüllen. Eine Standard-Schleife durchläuft jedoch jede Zeile einschließlich doppelter Zeilen und Sie erhalten doppelte Werte in Ihrem Array.

Die Lösung besteht darin, die Zellen in einer Schleife zu durchlaufen und ein Collection-Objekt mit den Werten zu füllen, da dieses keine Duplikate zulässt. Dann können Sie dieses Collection-Objekt verwenden, um Ihr Array aufzufüllen.

Sub ArrayEindeutigAuffuellen()
  Dim StrKunden() As String
  Dim Col As New Collection
  Dim wertZelle As String
  Dim i As Integer
  Dim n As Integer
'Zeilen im Bereich zählen
  n = Range("A1", Range("A1").End(xlDown)).Rows.Count
'Temporäre Sammlung auffüllen
  On Error Resume Next
  For i = 0 To n
    wertZelle = Range("A1").Offset(i, 0).Value
    Col.Add wertZelle, wertZelle
  Next i
  Err.Clear
  On Error GoTo 0
'Größe ändern
  n = Col.Count
'Array neu deklarieren
  ReDim StrKunden(1 To n)
'Array in einer Schleife durch die Sammlung füllen
  For i = 1 To Col.Count
    StrKunden(i) = Col(i)
  Next i
  Debug.Print Join(StrKunden(), vbCrLf)
End Sub

Array mit eindeutigen Werten auffüllen (Funktion)

Das obige Beispiel zeigt eine Prozedur, die die gewünschten Aktionen ausführen würde. Sie könnten jedoch stattdessen eine tragbare Funktion zur Durchführung der Aufgabe bevorzugen:

Function EindeutigeListeErstellen(nAnfang as Long, nEnde as long) as Variant
   Dim Col As New Collection
  Dim arrTemp() As String
   Dim wertZelle As String
   Dim i As Integer
'Temporäre Sammlung auffüllen
   On Error Resume Next
   For i = 0 To nEnd 
      wertZelle = Range("A" & nAnfang).Offset(i, 0).Value
      Col.Add wertZelle, wertZelle
   Next i
   Err.Clear
   On Error GoTo 0
'Größe von n ändern
   nEnde = Col.Count
'Array neu deklarieren
   ReDim arrTemp(1 To nEnde )
'Temporäres Array in einer Schleife durch die Sammlung auffüllen
   For i = 1 To Col.Count
     arrTemp(i) = Col(i)
   Next i
'Das temporäre Array an das Funktionsergebnis zurückgeben
   EindeutigeListeErstellen = arrTemp()
End Function

Um die Funktion zu verwenden, müssen Sie sie von einer Unterprozedur aus aufrufen:

Sub ArrayAuffuellen()
   Dim StrKunden() As String
   Dim strCol as Collection
   Dim n As Long
'Zeilen im Bereich zählen
   n = Range("A1", Range("A1").End(xlDown)).Rows.Count
'Die Funktion ausführen, um ein Array mit eindeutigen Werten zu erstellen
   strKunden() = EindeutigeListeErstellen(1,n)
End Sub   
vba-free-addin

Add-In für VBA-Code-Beispiele

Auf alle Code-Beispiele aus unserer Website einfach zugreifen.

Navigieren Sie einfach zum Menü, klicken Sie darauf und der Code wird direkt in Ihr Modul eingefügt. .xlam add-in.

(Keine Installation erforderlich!)

Kostenloser Download

Return to VBA Code Examples