Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: DropDown-Auswahl ohne Duplikate

DropDown-Auswahl ohne Duplikate
19.07.2020 22:21:27
Thomas
Hallo
habe eine Zelle mit einem DropDownfeld in Zelle A3. Da ist "Liste" zugelassen und ein bestimmter Bereich. Dieser Bereich hat aber mehrfache Einträge.
https://www.herber.de/bbs/user/139170.xlsx
Mein Wunsch
Im Dropdown-Auswahl keine doppelte Werte zu sehen. Die Liste soll dynamisch erweiteret werden können. Wie geht das?
Die dynamische Erweiterung würde nach Umwandlung in eine intelligente Tabelle mit dem Spaltennamen gehen. So habe ich zumindest recherchiert. Die Umsetzung scheitert aber an unbekannten Hürden.
Lösungsvorschläge bitte falls möglich, ohne Hilfsspalte, als Makro.
Grüsse,
Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Für ein aktuelles Excel
20.07.2020 06:37:28
RPP63
Moin!
Wenn Du Excel 365 oder Excel Online nutzt, geht folgendes:
  • Wandel die Tabelle mittels Strg+t in eine intelligente Tabelle um

  • Schreibe in eine beliebige Zelle (bei mir X1): =EINDEUTIG(Tabelle1[Sorten])

  • In der Datengültigkeit in A3 nimmst Du als Quelle =$X$1#

  • Willst Du es gleichzeitig noch sortiert haben, nimmst Du in X1:
    =SORTIEREN(EINDEUTIG(Tabelle1[Sorten]))
    Gruß Ralf
    Anzeige
    AW: Für ein aktuelles Excel
    20.07.2020 17:44:32
    Thomas
    Leider kein 365 oder online-Version vorhanden.
    Wenn man die Sorten in eine intelligente Tabelle umwandelt, bekommt man doch mit
    arr=Range("Tabelle1")
    die Einträge als Array.
    Kann man vielleicht irgendwie per VBA in das DropDown-Feld in A3 eine selbst gewählte Liste schreiben?
    Könnte sich daraus eine Möglichkeit mit Makro ohne Hilfsspalten ergeben?
    Die recherchierten Lösungen kann ich nachvollziehen, aber noch keine eigene Lösungen gestalten. Dazu fehlt es mir an Wissen und Erfahrung.
    Vielleicht ihr?
    Gruss, Thomas
    Anzeige
    AW: VBA-Lösung
    21.07.2020 14:44:35
    Thomas
    ja, Karin. das ist schon mal ein guter Ansatz. Vielen Dank.
    Geht das auch ohne Hilfsspalte?
    Kannst Du vielleicht das Makro selbst aus "arrDaten" eine solche Wertesammlug "Daten" erzeugen lassen, ohne diese erst im Sheet abbilden zu müssen?
    Bis später. Gruss, Thomas
    Anzeige
    AW: VBA-Lösung
    21.07.2020 15:00:17
    Beverly
    Hi Thomas,
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim arrDaten()
    Dim varVorhanden As Variant
    Dim rngZelle As Range
    Dim lngAnzahl As Long
    Dim strDaten As String
    ReDim arrDaten(0)
    If Not Intersect(Target.Cells(1), ActiveSheet.ListObjects(1).DataBodyRange.Columns(1)) Is  _
    Nothing Then
    For Each rngZelle In ActiveSheet.ListObjects(1).DataBodyRange.Columns(1).Cells
    varVorhanden = Application.Match(rngZelle, arrDaten(), 0)
    If IsError(varVorhanden) Then
    ReDim Preserve arrDaten(0 To lngAnzahl)
    arrDaten(lngAnzahl) = rngZelle
    lngAnzahl = lngAnzahl + 1
    End If
    Next rngZelle
    strDaten = Join(arrDaten(), ",")
    With Range("A3").Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
    xlBetween, Formula1:=strDaten
    End With
    End If
    End Sub
    


    Anzeige
    AW: VBA-Lösung
    23.07.2020 22:12:21
    Thomas
    Hi Karin,
    Verstehe. Klingt gut. Funktioniert gut. Nur Kommas in den Ausdrücken (zB Kommazahlen) dürfen keine vorkommen, denn das Komma wird zum Delimiter. Andererseits ist eine Hilfsspalte durchaus zumutbar. Ohne ist aber auch nicht schlecht. Naja, mal sehn.
    "Operator:= xlBetween" habe ich, trotz Recherche, nicht verstanden, aber egal. Die anderen verwenden es auch.
    Danke für Deine Hilfe, die Dir sicher einiges Deiner wertvollen Zeit gekostet, mir aber interessante Einblicke gebracht hat. Vielen Dank.
    Gruss, Thomas
    Anzeige
    AW: VBA-Lösung
    23.07.2020 22:35:51
    Beverly
    Hi Thomas,
    das Problem ist, dass Excel englisch spricht, weshalb man in VBA als Trenner der einzelnen Kriterien eben das Komma nehmen MUSS. Für Daten, die im Original ein Komma enthalten, müsstest du im Original stattdessen ein anderes Zeichen verwenden, z.B. Semikolon ";"
    "Operator:= xlBetween" stellt sich standardmäßig ein, wenn du die Datenüberprüfung erstellst. Er ist aber nur aktivierbar, wenn du die relevanten Gültigkeitskriterien zuweist - also alle Kriterien, die eine Unter- und eine Obergrenze besitzen können, nicht jedoch bei einer Liste von Kriterien.


    Anzeige
    AW: VBA-Lösung
    23.07.2020 22:57:27
    Thomas
    Das macht mich jetzt aber neugierig:
    " "Operator:= xlBetween" stellt sich standardmäßig ein?"
    Verstehe ich nicht. Wo kann man das sehen? Du hast doch bewusst gewollt vorsätzlich und nicht unabsichtich "Operator:= xlBetween" geschrieben.
    Bis später, Thomas
    AW: VBA-Lösung
    23.07.2020 23:16:47
    Beverly
    Wenn du eine Datenüberprüfung (von Hand) erstellst, siehst du bei den Einstellungen der Gültigkeitskriterien die Position "Daten:" mit einem DropDown-Menü, welches sich jedoch nur öffnen lässt, wenn die relevanten Kriterien unter "Zulassen:" ausgewählt wurden. Und sobald du eine neue Datenüberprüfung erstellst ist unter der Position "Daten:" eben standardmäßig "zwischen" eingestellt.


    Anzeige
    AW: VBA-Lösung
    25.07.2020 19:35:13
    Thomas
    Verstehe. Hat also in disem Fall keine Bedeutung. Aber wie kommt "Operator:= xlBetween" in Dein Makro? Wird das irgendwo standardmäßig generiert?
    AW: VBA-Lösung
    25.07.2020 20:16:40
    Beverly
    Zeichne einfach mal mit dem Makrorekorder auf wie du eine Datenüberprüfung erstellst.


    Anzeige
    AW: VBA-Lösung
    25.07.2020 20:36:52
    Thomas
    Ach so, vom Makrorekorder kommt das. Alles klar.
    Problem gelöst.
    Karin, vielen Dank für Deine Hilfe.
    Thomas
    ;

    Forumthreads zu verwandten Themen

    Anzeige
    Anzeige
    Anzeige
    Entdecke relevante Threads

    Schau dir verwandte Threads basierend auf dem aktuellen Thema an

    Alle relevanten Threads mit Inhaltsvorschau entdecken
    Anzeige
    Anzeige

    Infobox / Tutorial

    DropDown-Auswahl ohne Duplikate in Excel


    Schritt-für-Schritt-Anleitung

    Um ein Dropdown-Menü in Excel zu erstellen, das keine doppelten Werte enthält, folge diesen Schritten:

    1. Intelligente Tabelle erstellen:

      • Wähle deinen Datenbereich aus und drücke Strg + T, um die Tabelle in eine intelligente Tabelle umzuwandeln.
    2. Eindeutige Werte abrufen:

      • In einer leeren Zelle (z.B. X1) schreibe die Formel:
        =EINDEUTIG(Tabelle1[Spaltenname])
      • Diese Formel extrahiert die eindeutigen Werte aus der gewählten Spalte deiner intelligenten Tabelle.
    3. Datenüberprüfung einrichten:

      • Wähle die Zelle aus, in der du das Dropdown-Menü haben möchtest (z.B. A3).
      • Gehe zu Daten > Datenüberprüfung.
      • Wähle "Liste" aus und setze die Quelle auf =$X$1#.
      • Dadurch wird das Dropdown-Menü mit den eindeutigen Werten gefüllt.

    Falls du eine ältere Excel-Version ohne die Funktion EINDEUTIG verwendest, kannst du die Hilfsspalte verwenden, um doppelte Werte zu entfernen (siehe den nächsten Abschnitt).


    Häufige Fehler und Lösungen

    • Problem: Dropdown zeigt immer noch doppelte Werte an:

      • Lösung: Stelle sicher, dass die Formel für eindeutige Werte korrekt ist und die intelligente Tabelle ordnungsgemäß eingerichtet wurde.
    • Problem: Fehlermeldung bei der Datenüberprüfung:

      • Lösung: Überprüfe, ob die Quelle der Liste korrekt angegeben ist und die Zelle, die du für die Datenüberprüfung verwendest, sichtbar ist.
    • Problem: Dropdown enthält leere Werte:

      • Lösung: Stelle sicher, dass die Formel für die eindeutigen Werte keine leeren Zellen zurückgibt.

    Alternative Methoden

    Wenn du Excel 365 nicht verwenden kannst, gibt es alternative Methoden:

    1. Hilfsspalte nutzen:

      • Erstelle eine Hilfsspalte, in der du die Formel =WENN(ZÄHLENWENN(A$1:A1;A1)=1;A1;"") verwenden kannst, um doppelte Werte zu ignorieren.
    2. VBA-Lösung:

      • Du kannst ein VBA-Makro erstellen, das die doppelten Werte entfernt und die Dropdown-Liste dynamisch aktualisiert. Hier ein einfaches Beispiel:
        Private Sub Worksheet_Change(ByVal Target As Range)
        Dim arrDaten()
        Dim rngZelle As Range
        Dim lngAnzahl As Long
        Dim strDaten As String
        ReDim arrDaten(0)
        If Not Intersect(Target, Me.Range("A1:A10")) Is Nothing Then
         For Each rngZelle In Me.Range("A1:A10")
             If Application.WorksheetFunction.CountIf(arrDaten, rngZelle.Value) = 0 Then
                 arrDaten(lngAnzahl) = rngZelle.Value
                 lngAnzahl = lngAnzahl + 1
                 ReDim Preserve arrDaten(0 To lngAnzahl)
             End If
         Next rngZelle
         strDaten = Join(arrDaten, ",")
         With Me.Range("A3").Validation
             .Delete
             .Add Type:=xlValidateList, Formula1:=strDaten
         End With
        End If
        End Sub

    Praktische Beispiele

    • Beispiel 1: Angenommen, du hast eine Liste von Obstsorten in Spalte A, die du in ein Dropdown-Menü in Zelle B1 einfügen möchtest:

      1. Wandle die Liste in eine intelligente Tabelle um.
      2. Verwende die Formel =EINDEUTIG(Tabelle1[Obstsorten]) in Zelle D1.
      3. Setze die Datenüberprüfung in B1 auf =$D$1#.
    • Beispiel 2: In Excel 365 kannst du auch die Formel =SORTIEREN(EINDEUTIG(Tabelle1[Obstsorten])) nutzen, um die eindeutigen Werte gleichzeitig zu sortieren.


    Tipps für Profis

    • Verwendung von dynamischen Bereichen: Überlege, ob du mit dynamischen Bereichen arbeiten möchtest, damit dein Dropdown immer die neuesten Daten anzeigt.
    • VBA für komplexe Anforderungen: Wenn du oft mit Dropdown-Listen arbeitest, kann ein VBA-Makro dir viel Zeit sparen, besonders wenn du die Werte dynamisch aktualisieren möchtest.
    • Vermeide Kommas in Listen: Wenn deine Daten Kommas enthalten, verwende stattdessen Semikolons als Trenner, um Verwirrung zu vermeiden.

    FAQ: Häufige Fragen

    1. Wie kann ich doppelte Werte in einer bestehenden Dropdown-Liste entfernen? Du kannst die Liste in eine intelligente Tabelle umwandeln und die Formel =EINDEUTIG() verwenden, um die doppelten Werte zu entfernen.

    2. Funktioniert dies auch in älteren Excel-Versionen? Ja, du kannst eine Hilfsspalte verwenden oder ein VBA-Makro erstellen, um doppelte Werte zu ignorieren und ein Dropdown zu erstellen.

    3. Was ist eine intelligente Tabelle? Eine intelligente Tabelle in Excel ermöglicht es dir, Daten dynamisch zu verwalten, einschließlich automatischer Aktualisierungen und einfacher Datenanalysen.

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Entdecke mehr
    Finde genau, was du suchst

    Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

    Suche nach den besten Antworten
    Unsere beliebtesten Threads

    Entdecke unsere meistgeklickten Beiträge in der Google Suche

    Top 100 Threads jetzt ansehen
    Anzeige