Combobox mit eindeutigen Werten füllen

Hallo,
ich möchte in einem Userformular eine Combobox mit Werten aus einem Tabellenblatt füllen.

Dabei geht es darum, in der ComboBox alle Kundennummern anzuzeigen.
In dem Tabellenblatt, aus dem ich mir die Kundennummern holen möchte, sind diese in Spalte B mehrfach vorhanden.

Nun bräuchte ich quasi einen „Select“:
„Select distinct SpalteB from TabellenBlatt Aufträge“

Ich habe es versucht mit Zählewenn, komme aber nicht weiter. Ich brauche die Daten ja in der Form, dass ich Sie in die Combobox schreiben kann.

Kann mir jemand helfen?

Gruß
Sina

ich löse sowas meist durch Hilfsspalten bzw Hilfstabellenblätter…
Mit
Zählenwenn(B$1:B2;B2)
zählst Du, wie oft die aktuelle Kundennummer schon vorgekommen ist.
Wenn sie mehr als 1x vorkommt, dann lässt Du den Eintrag aus - ansonsten nimmst Du ein
MAX(C$1:C1)+1
(wenn wir diese Formel in C stehen haben) um dir eine „id“ zu machen…

sprich das ganze sieht dann etwa so aus (in Spalte C)
=WENN(Zählenwenn(B$1:B2;B2)>1;MAX(C$1:C1)+1;"")

anschliessend in Spalte D nochmal die Kundennummern wiederholen weil SVerweis ja nur nach rechts suchen kann -.-
=WENN(C2="";"";B2)
und im Hilfsdatenblatt einen SVERWEIS() auf die ganzen Zahlen.
Dann hast Du alles untereinander stehen und kannst es als Quelle für Deine Combobox nehmen…
selbst wenn das Blatt ausgeblendet ist… :wink:

Zu Fuss z.b.

Sub nurEinen()
kopiersortier
Filter
End Sub
Sub kopiersortier()
 Sheets("DeineTabelle").Select
 Columns("B:B").Select
 Selection.Copy
 Sheets("SortierBlatt").Select
 Columns("A:A").Select
 ActiveSheet.Paste
 Columns("A:A").Select
 Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, \_
 OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, \_
 DataOption1:=xlSortNormal
End Sub
Sub Filter()
Dim ALTERWERT
Dim NEUERWERT
Dim MAXZEILEN
Dim ANFANG
Dim SPALTE
SPALTE = 1
ANFANG = 2
MAXZEILEN = 20
For zeile = 1 To MAXZEILEN
 NEUERWERT = Sheets("SortierBlatt").Cells(zeile, SPALTE)
 If (ALTERWERT = NEUERWERT) Then
 Else: MsgBox (NEUERWERT) ' SchreibeInCombobox (NEUERWERT)
 ALTERWERT = NEUERWERT
 End If
Next
End Sub

Werte bitte selber Anpassen

Hallo,
ich möchte in einem Userformular eine Combobox mit Werten aus
einem Tabellenblatt füllen.
Dabei geht es darum, in der ComboBox alle Kundennummern
anzuzeigen.
In dem Tabellenblatt, aus dem ich mir die Kundennummern holen
möchte, sind diese in Spalte B mehrfach vorhanden.

Hi Sina,

Private Sub UserForm_Initialize()
ComboBox1.ListRows = Range(„G2“).Value
ComboBox1.RowSource = „Tabelle1!F2:F“ & Range(„G2“).Value + 1
End Sub

bezieht sich auf:

Tabellenblattname: Tabelle1

 A B C D E F G 
 1 nr Hilf1 Hilf2 Anzahl 
 2 1 1 1 4 
 3 2 2 2 
 4 4 4 3 
 5 2 4 
 6 3 3 #ZAHL! 
 7 2 #ZAHL! 
 8 1 #ZAHL!
 9 4 #ZAHL! 
10 2 #ZAHL! 

Benutzte Formeln:
E2: =WENN(UND(B2"";ZÄHLENWENN($E$1:E1;B2)=0);B2;"")
E3: =WENN(UND(B3"";ZÄHLENWENN($E$1:E2;B3)=0);B3;"")
E4: =WENN(UND(B4"";ZÄHLENWENN($E$1:E3;B4)=0);B4;"")
E5: =WENN(UND(B5"";ZÄHLENWENN($E$1:E4;B5)=0);B5;"")
E6: =WENN(UND(B6"";ZÄHLENWENN($E$1:E5;B6)=0);B6;"")
E7: =WENN(UND(B7"";ZÄHLENWENN($E$1:E6;B7)=0);B7;"")
E8: =WENN(UND(B8"";ZÄHLENWENN($E$1:E7;B8)=0);B8;"")
E9: =WENN(UND(B9"";ZÄHLENWENN($E$1:E8;B9)=0);B9;"")
E10: =WENN(UND(B10"";ZÄHLENWENN($E$1:E9;B10)=0);B10;"")
F2: =KKLEINSTE($E$2:blush:E$100;ZEILE()-1)
F3: =KKLEINSTE($E$2:blush:E$100;ZEILE()-1)
F4: =KKLEINSTE($E$2:blush:E$100;ZEILE()-1)
F5: =KKLEINSTE($E$2:blush:E$100;ZEILE()-1)
G2: =ANZAHL(F2:F100)

Namen in der Tabelle:
Anzahl: =Tabelle1!$G$2

Gruß
Reinhard

Hallo,

oder so:

Private Sub UserForm\_Initialize()
Dim Zei As Long
With UserForm1.ComboBox1
 For Zei = 2 To Range("B65536").End(xlUp).Row
 If Application.WorksheetFunction.CountIf(Range("B2:B" & Zei), Range("B" & Zei)) = 1 Then .AddItem Range("B" & Zei)
 Next Zei
 .ListRows = .ListCount + 1
End With
End Sub

Gruß
Reinhard

1 Like