Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Liste mit eindeutigen Werten

Liste mit eindeutigen Werten
31.10.2006 10:34:10
Sina
Hallo,
ich möchte in einer UserForm eine ComboBox mit Kundennummern zur Auswahl füllen.
Leider sind in dem Tabellenblatt, aus dem ich die Kundennummern selektieren möchte, die Kundennummern nicht eindeutig.
Das heißt in Spalte D (Kundennummer) steht z.B. die Kundennummer 4711 5mal drin.
4712 13mal, etc.
Denn das Tabellenblatt enthält alle Kundenaufträge.
Nun bräuchte ich quasi eine Abfrage, die mir die Kundennummern anzeigt ohne die doppelten zu beachten.
In SQL würde ich das so machen:
"Select distinct SpalteD from Tabellenblatt"
Das Ergebnis würde ich dann über AddItem der ComboBox übergeben....
Wie mache ich das in Excel?
Vielen Dank für jede Art von Hilfe :-)
Sina
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Liste mit eindeutigen Werten
31.10.2006 10:55:33
Mac4
Hallo Sina,
so in der Art:
Dim zl
For zl = 1 To [D65536].End(xlUp).Row
If WorksheetFunction.CountIf(Range("D1:D" & zl), Cells(zl, "D")) = 1 Then
ComboBox1.AddItem Cells(zl, "D")
End If
Marc
Combobox Userform Unikate
31.10.2006 10:56:03
Beate
Hallo Sina,
in Zeile 1 liegt die Überschrift, Werte ab D2:

Private Sub UserForm_Initialize()
Dim lngx As Long
Me.ComboBox1.Clear
For lngx = 2 To Range("D65536").End(xlUp).Row
If Not Rows(lngx).Hidden And _
WorksheetFunction.CountIf(Range("D2:D" & lngx), Cells(lngx, 4)) = 1 Then
Me.ComboBox1.AddItem Cells(lngx, 4)
End If
Next
Me.ComboBox1.ListIndex = 0
End Sub

Gruß,
Beate
Anzeige
AW: Liste mit eindeutigen Werten
31.10.2006 10:57:15
Rudi
Hallo,

Private Sub UserForm_Initialize()
Dim i As Long
For i = 2 To Range("d65536").End(xlUp).Row
If WorksheetFunction.CountIf(Range(Cells(2, 4), Cells(i, 4)), Cells(i, 4)) = 1 Then
ComboBox1.AddItem (Cells(i, 4))
End If
Next
End Sub

Gruß
Rudi
Anzeige
AW: Liste mit eindeutigen Werten
31.10.2006 11:07:53
Ptonka
Hallo,
alernativ könntest Du auch mit jedem Aufruf der Userform in zwei Hilfsspalten den Spezialfilter einsetzen und von dort dann die Combobox füllen.
also:

Sub Spezialfilter_setzen
Range("D:D").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
"E1:E2"), CopyToRange:=Columns("F:F"), Unique:=True
End Sub

Gruß,
Ptonka
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Eindeutige Werte in Excel auflisten


Schritt-für-Schritt-Anleitung

Um in Excel eine Liste mit eindeutigen Werten, wie beispielsweise Kundennummern, zu erstellen und diese in einer ComboBox anzuzeigen, kannst Du folgende Schritte ausführen:

  1. Öffne die UserForm: Stelle sicher, dass Du eine UserForm mit einer ComboBox hast.

  2. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Code eingeben: Füge den folgenden Code in das UserForm_Initialize()-Ereignis ein:

    Private Sub UserForm_Initialize()
       Dim lngx As Long
       Me.ComboBox1.Clear
       For lngx = 2 To Range("D65536").End(xlUp).Row
           If WorksheetFunction.CountIf(Range("D2:D" & lngx), Cells(lngx, 4)) = 1 Then
               Me.ComboBox1.AddItem Cells(lngx, 4)
           End If
       Next
       Me.ComboBox1.ListIndex = 0
    End Sub
  4. Speichern und Testen: Speichere die Änderungen und teste die UserForm, um sicherzustellen, dass die ComboBox die eindeutigen Werte korrekt anzeigt.


Häufige Fehler und Lösungen

  • Fehler: ComboBox bleibt leer
    Lösung: Überprüfe, ob die Daten in Spalte D tatsächlich mehrfach vorhanden sind. Stelle sicher, dass Deine Schleife ab der richtigen Zeile (D2) beginnt und die Endzeile korrekt ermittelt wird.

  • Fehler: Falsche Zählung der Werte
    Lösung: Vergewissere Dich, dass Du die CountIf-Funktion korrekt anwendest, um die doppelten Werte zu zählen. Die Syntax sollte WorksheetFunction.CountIf(Range("D2:D" & lngx), Cells(lngx, 4)) sein.


Alternative Methoden

Eine weitere Möglichkeit, um eindeutige Werte aufzulisten, ist die Verwendung des Spezialfilters. Dieser Ansatz kann auch in einem Makro implementiert werden, um die Liste zu erstellen:

Sub Spezialfilter_setzen()
    Range("D:D").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range("E1:E2"), CopyToRange:=Columns("F:F"), Unique:=True
End Sub

Mit dieser Methode kannst Du die eindeutigen Werte direkt in eine andere Spalte kopieren und von dort aus Deine ComboBox füllen.


Praktische Beispiele

Angenommen, Du hast in Spalte D folgende Kundennummern:

D
1   Kundennummer
2   4711
3   4711
4   4712
5   4713
6   4712

Nach dem Ausführen des Codes werden in Deiner ComboBox nur die eindeutigen Kundennummern angezeigt:

  • 4711
  • 4712
  • 4713

Das ist eine einfache und effiziente Methode, um eine Excel Liste mit eindeutigen Werten zu erstellen.


Tipps für Profis

  • Optimierung der Performance: Wenn Du mit großen Datenmengen arbeitest, kann es hilfreich sein, die Bildschirmaktualisierung vor und nach der Schleife auszuschalten:

    Application.ScreenUpdating = False
    ' Dein Code hier
    Application.ScreenUpdating = True
  • Dynamische Bereiche: Überlege, ob Du anstelle von D65536 eine dynamische Methode zur Bestimmung des letzten Datenpunkts nutzen möchtest, um die Wartung zu erleichtern.


FAQ: Häufige Fragen

1. Wie kann ich eine Excel-Liste mit eindeutigen Werten erstellen, ohne VBA zu verwenden?
Du kannst die Funktion Entfernen von Duplikaten in Excel verwenden, die sich im Daten-Tab befindet.

2. Was ist der Unterschied zwischen CountIf und SumIf?
CountIf zählt die Anzahl der Zellen, die einem bestimmten Kriterium entsprechen, während SumIf die Werte in den Zellen summiert, die den Bedingungen entsprechen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige