Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1748to1752
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

Kombinationsfelder

Kombinationsfelder
11.04.2020 12:34:12
edi
Hallo zusammen,
ich hoffe, dass ihr mir bei meiner Exceltabelle weiterhelfen könnt.
Ich habe zwei Kombinationsfelder (Formularfeld) erstellt.
Unter Tabelle 2 sind alle Daten hinterlegt, die in Tabelle 1 als Dropdown (Kombnationsfelder gefüllt werden.
Nun möchte ich, dass unter Hersteller zb. Samsung dann im Kombinationsfeld Gerät alle Geräte von Samsung befüllt werden ohne leere Zellen usw..
unter Spalte G3 und G5 sollen dann die Werte dargestellt werden.
meine Exceldatei: https://www.herber.de/bbs/user/136639.xlsx
Gibt es dafür ein vba Code?

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kombinationsfelder
11.04.2020 13:27:49
Hajo_Zi
NEIN
das geht nicht, da eine XLSX Datei kein Makro enthalten kann.
Ich sehe keinen Grund eine Datei 2x zu speichern und den Code einzufügen.
Ich führe keine Liste unter welchem Dateinamen ich die Datei aus dem Forum gespeichert habe.
Der Name steht ja im Beitrag.

AW: Kombinationsfelder
11.04.2020 13:46:33
Daniel
Hi
Das geht auch ohne VBA-Code über sog. dynamische Namen, dh das sind Namen, bei den den der Zellbereichen per Formel berechnet wird
Für das erste DropDown musst du noch normal einen statischen Zellbereich verwenden, dh die Herstellerspalte kopieren und dann die Duplikate entfernen.
Für die Geräteauswahl gehst du dann so vor:
1. die Liste muss nach Hersteller aufsteigend sortiert sein.
2. erstellen einen Namen mit dieser Formel bei "bezieht sich auf", beim schreiben dieser Formel im Namensmanager ist es sinnvoll, wenn du schon einen Hersteller ausgewählt hast:
=Index(Tabelle2!B:B;Vergleich(Tabelle1!g3;Tabelle2!A:A;0)):Index(Tabelle2!B:B;Vergleich(Tabelle1!g3; Tabelle2!A:A;1)) 

Diesen Namen verwendet du als Quelle für dein DropDown.
Man nutzt hier aus, dass der Vergleich mit 0 als 3. Parameter immer die Zeilennummer der ersten Fundstelle ausgibt, mit 1 als 3. Parameter die Zeilennummer der letzten Fundstelle.
Die Liste muss aber nach den Suchwerten aufsteigend sortiert sein.
Gruß Daniel
Anzeige
AW: Kombinationsfelder
11.04.2020 14:46:19
volti
Hallo Edi,
wenn Du es doch lieber mit Makro machen möchtest, hier mal eine Anregung, wie man es machen könnte.
Kompletten Code habe ich mal in die anliegende Datei eingefügt und hier noch einen Ausschnitt zur Voransicht:
https://www.herber.de/bbs/user/136644.xlsb

Option Explicit
Sub FuelleDDHersteller()
 Dim Obj As Range, sSchonDrin As String, sArr() As String, oRette As Range
 Sheets("Tabelle1").Select
 Set oRette = ActiveCell
 For Each Obj In Sheets("Tabelle2").Range("$A2:$A" _
  & Sheets("Tabelle2").UsedRange.Rows.Count)
  If Obj.Value <> "" Then
   If InStr(sSchonDrin, Obj.Value & ",") = 0 Then
      sSchonDrin = sSchonDrin & Obj.Value & ","
   End If
  End If
 Next Obj
 sArr = Split(sSchonDrin, ",")
 Sheets("Tabelle3").Cells(2, 1).Resize(UBound(sArr), 1).Value = Application.Transpose(sArr)
 Sheets("Tabelle3").Range("$A$1").Value = 1
 Sheets("Tabelle1").Shapes.Range(Array("Dropdown 1")).Select
 With Selection
      .ListFillRange = "Tabelle3!$A$2:$A$" & UBound(sArr) + 1
      .LinkedCell = "Tabelle3!$A$1"
      .DropDownLines = 8
      .Display3DShading = False
 End With
 oRette.Select
End Sub
Sub FuelleDDGeraete()
 Dim Obj As Range, sSchonDrin As String, sArr() As String, oRette As Range
 Dim sHersteller As String
 With Sheets("Tabelle3")
   sHersteller = .Cells(.Cells(1, 1).Value + 1, "A").Value
 End With
 Sheets("Tabelle1").Select
 Sheets("Tabelle1").Range("$G$3").Value = sHersteller
 Set oRette = ActiveCell
 For Each Obj In Sheets("Tabelle2").Range("$B2:$B" _
  & Sheets("Tabelle2").UsedRange.Rows.Count)
  If Obj.Value <> "" And Obj.Offset(0, -1).Value Like sHersteller Then
   If InStr(sSchonDrin, Obj.Value & ",") = 0 Then
      sSchonDrin = sSchonDrin & Obj.Value & ","
   End If
  End If
 Next Obj
 sArr = Split(sSchonDrin, ",")
 Sheets("Tabelle3").Cells(2, 2).Resize(UBound(sArr), 1).Value = Application.Transpose(sArr)
 Sheets("Tabelle3").Range("$B$1").Value = 1
 Sheets("Tabelle1").Shapes.Range(Array("Dropdown 2")).Select
 With Selection
      .ListFillRange = "Tabelle3!$B$2:$B$" & UBound(sArr) + 1
      .LinkedCell = "Tabelle3!$B$1"
      .DropDownLines = 8
      .Display3DShading = False
 End With
 oRette.Select
End Sub
Sub Dropdown1_Beiänderung()
 Call FuelleDDGeraete
End Sub
Sub Dropdown2_Beiänderung()
 Dim sGeraet As String
 With Sheets("Tabelle3")
   sGeraet = .Cells(.Cells(1, 2).Value + 1, "B").Value
 End With
 Sheets("Tabelle1").Select
 Sheets("Tabelle1").Range("$G$5").Value = sGeraet
End Sub

viele Grüße
Karl-Heinz

Anzeige
AW: Kombinationsfelder
11.04.2020 17:18:42
edi
Hallo Zusammen,
Danke Hajo_Zi & Daniel für eure Antworten und Empfehlungen.
Die beste Lösung war von Karl-Heinz. Chapeau (Hut ab) Vielen Dank

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige