Clever-Excel-Forum

Normale Version: abhängige Dropdowns begrenzt füllen, 1. anzeigen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hi,

ich habe zwei Dropdowns (hellgrün: C7, E7) über Gültigkeitsprüfung und die zweite hängt von der ersten ab.

Die Datenquelle ist im Bereich W1:AE21.
Datengültigkeit 1: =W1:AE1
Datengültigkeit 2: =INDEX($W$2:$AE$21;;VERGLEICH($C$7;$W$1:$AE$1;))

Der Bereich W2:AE21 ist aber ungleich weit nach unten gefüllt. Beim Aufruf des zweiten Dropdowns werden dann in der Liste die leeren Zellen des Bereichs auch mit angezeigt und da die Auswahlzelle erst mal leer ist, steht das Dropdown ganz unten und ich muß hochscrollen, damit ich was auswählen kann.

Wie kann ich das auf den je Spalte benutzten Bereich beschränken, damit nur die tatsächlich vorhandenen Begriffe zur Auswahl stehen oder in der Auswahl zuerst der oberste Begriff angezeigt wird?
[attachment=10372]
Hallo Ralf,

ich habe es mit einer Hilfszelle gelöst, in der ich für jede Spalte die Anzahl der Einträge ermittle und das in der Formel anwende.
Hi Edgar,

dann muß ja die 21 in der Formel durch den Inhalt der Hilfszelle ersetzt werden?

Hast Du mir da ein Beispiel?

Oder die Formeln für die Hilfszelle und die zweite Gültigkeit?
Hi,

ich gebe Dir heute Mittag mal ein Beispiel.
Diese Code reicht:


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$C$7" Then
    Application.EnableEvents = False
   
    Range("C8:C24, E7:E24,G8:G18,G19,G21,G23:G24,I6:I15,I16,I18:I20,I23:I24,K6:K15,K17:K24") = ""
    Range("K1:K3") = Application.Transpose(Array(VBA.Environ("Username"), Date, Date + 7))
      
    Cells(7, 5).Validation.Modify , , , "=" & Columns(Application.Match(Target, Range("A1:AE1"), 0)).SpecialCells(2).Address

    Application.EnableEvents = True
  End If
End Sub
Hi,

ohne VBA:

Arbeitsblatt mit dem Namen 'Tabelle2'
 HIJKLMN
184      
1934263Gruppe:d
20abcdeArtikel:da
21aabacadaea  
22abbbcbdbeb  
23acbc dcec  
24 bd dd   
25   de   
26   df   

NameBezug
Gruppen=Tabelle2!$H$20:$L$20

ZelleFormel
H18=WENNFEHLER(VERGLEICH(N19;Gruppen;0);"")

ZelleGültigkeitstypOperatorWert1Wert2
N19Liste =Gruppen 
N20Liste =BEREICH.VERSCHIEBEN(H20;1;H18-1;INDEX(H19:L19;H18)) 
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg

Allerdings geht das so nur mit Bereich.verschieben!
Hi,

das hat geklappt, danke!

(23.03.2017, 13:10)snb schrieb: [ -> ]Diese Code reicht:
Code:
    Cells(7, 5).Validation.Modify , , , "=" & Columns(Application.Match(Target, Range("A1:AE1"), 0)).SpecialCells(2).Address

wegen Kosmetik:
Kann ich in der Datengültigkeit auch nur den Bereich der Zeilen 2 bis Ende anzeigen lassen, also ohne die Kopfzeile?
Hi,

geht auch ganz leicht ohne VBA und auch "fast" ohne Formel

http://www.clever-excel-forum.de/thread-...l#pid72586

Datei Drop_V3
Kein Thema:

Code:
Cells(7, 5).Validation.Modify , , , "=" & Columns(Application.Match(Target, Range("A1:AE1"), 0)).SpecialCells(2).offset(1).specialcells(2).Address