Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1772to1776
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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,

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
    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
    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
    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.


    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

    225 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige