Microsoft Excel

Herbers Excel/VBA-Archiv

Dropdownliste ohne Duplikate/Leerzeichen

Betrifft: Dropdownliste ohne Duplikate/Leerzeichen von: Ralf
Geschrieben am: 02.11.2020 11:16:24

Hallo zusammen,

folgende Problematik:
ich habe in Spalte F Werte, welche vom Nutzer ausgewählt werden.
In Spalte A möchte ich eine Dropdownliste ausgegeben haben, in welcher die Werte aus Spalte F ohne Duplikate und Leerzeichen angezeigt werden.

Dabei möchte ich keine Hilfsspalte nutzen!

Ist das möglich?
Momentan arbeite ich mit "Datenüberprüfung" und lasse mir eine Liste ausgeben.

Würde mich sehr freuen, wenn ihr mir hier helfen könntet.

VG

Betrifft: AW: ja, ist möglich ...
von: neopa C
Geschrieben am: 02.11.2020 11:28:22

Hallo Ralf,

... dazu erstelle zu den Daten in Spalte F eine Hilfsspaltenbereich auf den dann über eine benannte Formel für die Datengültigkeit zugegriffen werden kann. Mit welcher Excel-Version arbeitest Du genau?

Gruß Werner
.. , - ...

Betrifft: AW: Dropdownliste ohne Duplikate/Leerzeichen
von: Daniel
Geschrieben am: 02.11.2020 11:47:15

HI
ohne Hilfsspalte entweder nur mit Makroprogrammierung, oder vielleicht per benutzerdefinierter Formel, aber nur wenn du mit Excel 365 oder Online arbeitest, weil nur diese Excelversionen die dafür benötigten Funktionen haben (Eindeutig, Filter, ggf Sortieren)

Gruß Daniel

Betrifft: AW: Dropdownliste ohne Duplikate/Leerzeichen
von: Alwin WeisAngler
Geschrieben am: 02.11.2020 14:36:06

Du meinst sicherlich ohne Leerzeilen.

Anbei eine Lösung, größtenteils mit Makrorecorder aufgezeichnet und etwas nachbearbeitet:
Option Explicit

Sub NamenCopy()

Application.ScreenUpdating = False
 
    Sheets("NamenABC").Range("A3:A300").Delete
    Sheets("Tabelle1").Select
    Range("A3:A203").Copy
    Sheets("NamenABC").Cells(3, 1).PasteSpecial xlPasteValues
    Application.CutCopyMode = False
    ActiveWorkbook.Worksheets("NamenABC").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("NamenABC").Sort.SortFields.Add2 Key:=Range("A3"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("NamenABC").Sort
        .SetRange Range("A3:A203")
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
Sheets("Tabelle2").Select
Range("A2").Select

Application.ScreenUpdating = True

End Sub

Sub NamenReaparatur()

        Sheets("Tabelle1").Select
    With ActiveWorkbook.Names("rng_Namensliste")
        .Name = "rng_Namensliste"
        .RefersToR1C1 = _
        "=NamenABC!R3C1:INDEX(NamenABC!R3C1:R203C1,COUNTA(NamenABC!R3C1:R203C1),1)"

    End With

End Sub
In das Dropdown muss: =rng_Namensliste

In Tabelle 1:
Private Sub Worksheet_Change(ByVal Target As Range)
Call NamenCopy
Call NamenReaparatur
End Sub
Ins Workbook:
Private Sub Workbook_Open()
Call NamenCopy
Call NamenReaparatur
End Sub
Ich hoffe du kommst damit klar. Das ist eigentlich nichts Kompliziertes.