Dropdown in Zellen
Hallo!
Ich bin gerade bei einer Aufgabenstellung in Excel am Ende meines Lateins, vielleicht kann mir ja jemand weiterhelfen.
Ich habe eine Arbeitsmappe mit 2 Tabellenblättern.
In der ersten Tabelle gibt es die Spalten „Artikelnummer“, „Produkt“, „Packungsgröße“, „Artikelart“ und „Status“.
In der zweiten Tabelle gibt es unter anderem die Spalten „Produkt“ und „Packungsgröße“.
Nun möchte ich in der Tabelle 2 in den Zeilen 2 bis 49 in Spalte B (Produktname) direkt in den Zellen je ein Dropdown od. Listenfeld in welchen die Daten aus der Tabelle 1 Spalte „Produkt“ angezeigt werden bzw. auszuwählen sind.
Es sollen jedoch nur die Datensätze angezeigt werden, bei welchen in der Spalte „Status“ ein „J“ steht.
Weiters sollte wenn in dem Dropdown ein Produkt ausgewählt wurde die dazugehörige Packungsgröße aus Tabelle 1 in die Spalte „Packungsgröße“ in Tabelle 2 eingetragen werden.
Ich hätte schon versucht ein Dropdown bzw. Listenfeld über Daten -> Gültigkeit zu erzeugen, jedoch hier scheitere ich schon daran, dass die Daten ja in einem anderem Tabellenblatt stehen.
Über Formular -> Listen bzw. Kombinationsfeld gibt es das Problem das das Feld nicht in der Zelle ist, und ich auch nicht die Spalte Packungsgröße füllen kann.
Da sich der Datenbereich in Tabelle 1 ändern kann, wenn z.B ein Artikel dazukommt soll der auch automatisch im Dropdown zur Verfügung stehen, wäre wohl einen Lösung über Makro nötig.
Jedoch hier scheitere ich auch daran wie ich ein solches Feld in einer Zelle erzeuge.
Hat jemand eine Idee wie man das am brauchbarsten lösen kann?
Freue mich über jeden Tipp, danke!!
lg
Ich bin gerade bei einer Aufgabenstellung in Excel am Ende meines Lateins, vielleicht kann mir ja jemand weiterhelfen.
Ich habe eine Arbeitsmappe mit 2 Tabellenblättern.
In der ersten Tabelle gibt es die Spalten „Artikelnummer“, „Produkt“, „Packungsgröße“, „Artikelart“ und „Status“.
In der zweiten Tabelle gibt es unter anderem die Spalten „Produkt“ und „Packungsgröße“.
Nun möchte ich in der Tabelle 2 in den Zeilen 2 bis 49 in Spalte B (Produktname) direkt in den Zellen je ein Dropdown od. Listenfeld in welchen die Daten aus der Tabelle 1 Spalte „Produkt“ angezeigt werden bzw. auszuwählen sind.
Es sollen jedoch nur die Datensätze angezeigt werden, bei welchen in der Spalte „Status“ ein „J“ steht.
Weiters sollte wenn in dem Dropdown ein Produkt ausgewählt wurde die dazugehörige Packungsgröße aus Tabelle 1 in die Spalte „Packungsgröße“ in Tabelle 2 eingetragen werden.
Ich hätte schon versucht ein Dropdown bzw. Listenfeld über Daten -> Gültigkeit zu erzeugen, jedoch hier scheitere ich schon daran, dass die Daten ja in einem anderem Tabellenblatt stehen.
Über Formular -> Listen bzw. Kombinationsfeld gibt es das Problem das das Feld nicht in der Zelle ist, und ich auch nicht die Spalte Packungsgröße füllen kann.
Da sich der Datenbereich in Tabelle 1 ändern kann, wenn z.B ein Artikel dazukommt soll der auch automatisch im Dropdown zur Verfügung stehen, wäre wohl einen Lösung über Makro nötig.
Jedoch hier scheitere ich auch daran wie ich ein solches Feld in einer Zelle erzeuge.
Hat jemand eine Idee wie man das am brauchbarsten lösen kann?
Freue mich über jeden Tipp, danke!!
lg
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 66560
Url: https://administrator.de/contentid/66560
Ausgedruckt am: 26.11.2024 um 07:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo Hatlho und willkommen im Forum!
Bis Du copkiller's Frage beantwortet hast, vielleicht einige Anmerkungen:
Noch eine generelle Überlegung zum Thema "Dropdown": Wenn es genügt, für das Produkt nur die Artikelnummer oder die Produktbezeichnung anzuzeigen, geht das vergleichsweise einfach. Willst Du beides (oder noch mehr) im Dropdown haben, könnte die Lösung so aussehen, dass Du für die Anzeige der Liste alle gewünschten Informationen in einer Zelle je Produkt kombinierst und zumindest zwischen die Artikelnummer und die übrigen Felder ein eindeutiges Trennzeichen (etwa "_") setzt.
Die getroffene Auswahl enthält dann natürlich auch alle diese Informationen, daher könntst Du diese in einer (nicht zu schmalen) Spalte (Spalte B) unterbringen und die Anzeige des Inhaltes über das benutzerdefinierte Zahlenformat ";;;" verhindern. Da die Artikelnummer als Schlüsselbegriff sicher zu bevorzugen ist, würde ich diese dann in der nächsten Spalte (Spalte C) ausgeben: Wenn Du als Trennzeichen "_" verwendet hast, wäre die Formel zB
Noch einfacher wäre es, wenn die Artikelnummer eine fixe Länge (zB 5 Zeichen) hat. Dann würde genügen:
Durch das WENN() wird die Anzeige einer Fehlermeldung verhindert, wenn in dieser Zeile noch kein Artikel ausgewählt wurde.
Alle weiteren Detailinformationen (also auch die Packungsgröße) wären dann nur noch per SVERWEIS() auf die Artikelnummer (steht in C2) zu realisieren, also etwa
Vorausgesetzt habe ich hier, dass alle (Zeilen und Spalten der) Artikeldaten in Tabelle1 einen gemeinsamen Bereichsnamen "Artikeldaten" haben. Mit dem Spaltenindex 2 würde dann (entsprechend Deinem Beispiel oben) zB die Produktbezeichnung gewählt, oder mit 3 eben die Packungsgröße ....
Zum Erstellen der Daten für den "Listeninhalt" könntest Du schließlich das folgende kleine VBA-Programm verwenden:
Die "Const"-Zeilen am Anfang legen fest, wo die Liste erstellt und wie sie benannt werden soll. Wenn die Daten, wie oben beschrieben, mit dem Bereichsnamen "Artikeldaten" versehen wurden, wird für jeden Datensatz mit einem "J" im letzten Feld ein Listeneintrag aus allen vorhergehenden Feldern erstellt. Am Ende erhält diese Liste dann noch den gewünschten Bereichsnamen ("Listeninhalt"). Unter diesem Namen kann sie dann im Dropdown eingesetzt werden.
Dieses Programm müsstest Du nach jeder Änderung der Artikeldaten ausführen, um die Liste zu aktualisieren. Starten könntest Du es zB (wie ein aufgezeichnetes Makro) über ein Schaltflächensymbol. Eine (zusätzliche) automatische Ausführung beim Öffnen der Arbeitsmappe wäre vielleicht auch keine schlechte Idee ...
Grüße
bastla
P.S.: Hast Du über Access nachgedacht?
Bis Du copkiller's Frage beantwortet hast, vielleicht einige Anmerkungen:
... jedoch hier scheitere ich schon daran, dass die Daten ja in einem anderem Tabellenblatt stehen.
Wenn Du den Daten in der anderen Tabelle einen Bereichsnamen gibst (etwa "Listeninhalt"), kannst Du unter "Quelle" eines "Gültigkeit"-Dropdown einfach "=Listeninhalt" eintragen. Da die Liste allerdings dynamisch sein soll, würde ich für das Erstellen des "Listeninhaltes" VBA verwenden.... die dazugehörige Packungsgröße aus Tabelle 1 in die Spalte „Packungsgröße“ in Tabelle 2 eingetragen werden.
Nachdem Du den Eintrag aus der Liste in die Zelle bekommen hast, sollte zum Auslesen der korrespondierenden Packungsgröße ein einfacher SVERWEIS() genügen (siehe unten) ...Noch eine generelle Überlegung zum Thema "Dropdown": Wenn es genügt, für das Produkt nur die Artikelnummer oder die Produktbezeichnung anzuzeigen, geht das vergleichsweise einfach. Willst Du beides (oder noch mehr) im Dropdown haben, könnte die Lösung so aussehen, dass Du für die Anzeige der Liste alle gewünschten Informationen in einer Zelle je Produkt kombinierst und zumindest zwischen die Artikelnummer und die übrigen Felder ein eindeutiges Trennzeichen (etwa "_") setzt.
Die getroffene Auswahl enthält dann natürlich auch alle diese Informationen, daher könntst Du diese in einer (nicht zu schmalen) Spalte (Spalte B) unterbringen und die Anzeige des Inhaltes über das benutzerdefinierte Zahlenformat ";;;" verhindern. Da die Artikelnummer als Schlüsselbegriff sicher zu bevorzugen ist, würde ich diese dann in der nächsten Spalte (Spalte C) ausgeben: Wenn Du als Trennzeichen "_" verwendet hast, wäre die Formel zB
=WENN(B2<>"";LINKS(B2;SUCHEN("_";B2)-1);"")
=WENN(B2<>"";LINKS(B2;5);"")
Alle weiteren Detailinformationen (also auch die Packungsgröße) wären dann nur noch per SVERWEIS() auf die Artikelnummer (steht in C2) zu realisieren, also etwa
=WENN(B2<>"";SVERWEIS($C2;Artikeldaten;2;0);"")
Zum Erstellen der Daten für den "Listeninhalt" könntest Du schließlich das folgende kleine VBA-Programm verwenden:
Sub ListeErstellen()
Const LISTENNAME As String = "Listeninhalt"
Const LISTENTABELLE As String = "Tabelle3"
Const LISTENZEILE As Integer = 2
Const LISTENSPALTE As Integer = 1
aTemp = Range("Artikeldaten").CurrentRegion
Worksheets(LISTENTABELLE).Cells(LISTENZEILE, LISTENSPALTE).CurrentRegion.ClearContents
iZielZeile = LISTENZEILE
For i = 2 To UBound(aTemp, 1) 'Annahme: Es werden Spaltenüberschriften verwendet, Daten daher erst ab Zeile 2 des Bereiches
If aTemp(i, UBound(aTemp, 2)) = "J" Then
sEintrag = ""
For j = 1 To UBound(aTemp, 2) - 1
sEintrag = sEintrag & aTemp(i, j) & "_"
Next
sEintrag = Left(sEintrag, Len(sEintrag) - 1)
Worksheets("Tabelle3").Cells(iZielZeile, LISTENSPALTE).Value = sEintrag
iZielZeile = iZielZeile + 1
End If
Next
Worksheets(LISTENTABELLE).Cells(LISTENZEILE, LISTENSPALTE).CurrentRegion.Name = LISTENNAME
Set aTemp = Nothing
End Sub
Dieses Programm müsstest Du nach jeder Änderung der Artikeldaten ausführen, um die Liste zu aktualisieren. Starten könntest Du es zB (wie ein aufgezeichnetes Makro) über ein Schaltflächensymbol. Eine (zusätzliche) automatische Ausführung beim Öffnen der Arbeitsmappe wäre vielleicht auch keine schlechte Idee ...
Grüße
bastla
P.S.: Hast Du über Access nachgedacht?