Clever-Excel-Forum

Normale Version: DropDown-Liste mit Wertebereich
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

wahrscheinlich taucht diese Frage häufig auf, über die Suchfunktion bin ich aber leider nicht fündig geworden.

Folgendes Problem:

Ich arbeite an einer sehr großen und ausführlichen Auswertung mit vielen verschiedenen Datenblättern zu unterschiedlichsten Themen. Um alle Berechnungen und Daten abschließend auf einem einzigen Datenblatt zusammenzufassen, benötige ich eine Lösung für ein (wahrscheinlich einfaches) Problem.

Meine Auswertung hat immer verschiedene Standorte als Grundlage. Für jeden Standort werden im Hintergrund verschiedene Kostenberechnungen zu verschiednene Themen durchgeführt. Ich hätte für meine Zusammenfassung gerne ein Drop Down Menü, bei dem ich den Standort auswählen kann und alle Werte aus den verschiedenen Berechnungen und Datenblättern werden dann den einzelnen Themen zugeordnet. Mir gelingt es in verschiedenen Fällen, mit sehr komplexen WENN DANN Formeln zu arbeiten, aber das ist mir alles in allem zu kompliziert und zu Fehleranfällig. Außerdem will ich die Hintergrunddaten ändern können, ohne alle Formeln etc. ändern zu müssen.

Ich habe kurz eine kleine Beispieldatei beigefügt, anhand der ich gerne das Prinzip erläutert bekommen würde, wie man den Drop Down Positionen Werte aus verschiedenen Quellen etc. zuordnet.

[
Bild bitte so als Datei hochladen: Klick mich!
]

Ich glaube, dass ein Makro hier das richtige wäre, in dem ich die Zellbezüge festlegen kann. So nach dem Motte "Wenn ich Standort B wähle, Dann fülle C14 mit C5, C15 mit D5 usw.", wobei ich bei der Quelle der Daten recht variabel sein möchte. Die Beispieltabelle ist wirklich nur eine stark vereinfachte Darstellung, um das Prinzip zu erläutern.

Ich arbeite übrigens mit Excel 2007 :(

Vielen Dank.

Gruß

Christian
Hallo,

Für solche Fälle eignen sich die Funktionen: SVERWEIS(), INDEX() und VERGLEICH()., auch im Zusammenspiel.

In Deinem Fall würde das gehen:

Arbeitsblatt mit dem Namen 'Tabelle1'
 BCD
13Ergebnistabelle  
14Äpfel22
15Birnen55
16Kiwi66

ZelleFormel
D14=INDEX($C$4:$E$6;$D$11;ZEILE(A1))
D15=INDEX($C$4:$E$6;$D$11;ZEILE(A2))
D16=INDEX($C$4:$E$6;$D$11;ZEILE(A3))
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg
Zunächst danke für die Antwort. Ich würde trotzdem eine Makrolösung bevorzugen, weil ich dann mehr Freiheiten habe und sich im Aufbau der Datenblätter vielleicht noch einige Änderungen ergeben. Ist das irgendwie möglich, ich bräuchte nur einen Anfang, den Rest bekomme ich durch probieren bestimmt irgendwie hin.
Habe das Problem jetzt selber gelöst:

Code für die "DieseArbeitsmappe":


Code:
Private Sub Workbook_Open()
  Worksheets("Tabelle1").ComboBox1.List = _
     Array("A", "B", "C", "Gesamt")
End Sub


Code für die ComboBox:


Code:
Private Sub ComboBox1_Change()
Dim WAN As Long
Dim LAN As Long
Dim WLAN As Long

  Select Case ComboBox1.Text
     Case "A": WAN = Range("C3").Value
     Case "B": WAN = Range("C4").Value
     Case "C": WAN = Range("C5").Value
     Case "Gesamt": WAN = Range("C6").Value
     
  End Select
 
  Select Case ComboBox1.Text
     Case "A": LAN = Range("D3").Value
     Case "B": LAN = Range("D4").Value
     Case "C": LAN = Range("D5").Value
     Case "Gesamt": LAN = Range("D6").Value
     
  End Select
 
  Select Case ComboBox1.Text
     Case "A": WLAN = Range("E3").Value
     Case "B": WLAN = Range("E4").Value
     Case "C": WLAN = Range("E5").Value
     Case "Gesamt": WLAN = Range("E6").Value
     
  End Select

  Range("C11").Value = WAN
  Range("C12").Value = LAN
  Range("C13").Value = WLAN
End Sub

Anbei noch die Excel-Datei.
Hallo,

von mir zwei Beispielcodes:

1.

Code:
Sub schreib()
 Dim strText As String
 Dim x
 strText = ActiveSheet.Shapes("Dropdown 1").ControlFormat.List(ActiveSheet.Shapes("Dropdown 1").ControlFormat)
 x = Application.Match(strText, Range("B4:B6"), 0)
 If IsNumeric(x) Then
   Cells(14, 3) = Cells(x + 3, 3).Value
   Cells(15, 3) = Cells(x + 3, 4).Value
   Cells(16, 3) = Cells(x + 3, 5).Value
 End If
End Sub


folgender Code macht das Gleiche:
2.

Code:
Sub schreib_Schleife()
 Dim i As Long
 Dim strText As String
 Dim x
 strText = ActiveSheet.Shapes("Dropdown 1").ControlFormat.List(ActiveSheet.Shapes("Dropdown 1").ControlFormat)
 x = Application.Match(strText, Range("B4:B6"), 0)
 If IsNumeric(x) Then
   For i = 1 To 3
     Cells(i + 13, 3) = Cells(x + 3, i + 2).Value
   Next i
 End If
End Sub


Du kannst Deinem Dropdown eines der Codes zuweisen.

Unten habe ich das in Deiner Beispielmappe eingearbeit.
Ich habe zwei Dropdowns eingesetzt, und jedem eines der obigen Codes zugewiesen.

[attachment=9038]

Wichtig:
Die Codes gehören in das Codemudul der Tabelle mit den Dropdowns