1.8k Aufrufe
Gefragt in Tabellenkalkulation von mirko-ka Einsteiger_in (3 Punkte)
Hallo,

ich habe eine Tabelle und in den Spalten stehen Preise verschiedener Anbieter (insg. ca. 50). Die Artikel stehen in den Zeilen.

Nun möchte ich in einem Feld den Namen eines Anbieters (oder per dropdown) angeben und dann soll die Spalte gesucht werden und alle nichtleeren Zeilen (per Autofilter) angezeigt werden.
Kann mir jemand helfen?

Beispiel mit Artikel 1-3 und Anbieter a-c

Artikel Anbieter a - Anbieter b - Anbieter c
1 10 15 20
2 11 16
3 12 17 22

Beispiel :
1)Anbieter c auswählen
2)Nur die Zeilen 1 und 3 sollen angezeigt werden, nicht Zeile 2.


Gruß,
Mirko.ka

4 Antworten

0 Punkte
Beantwortet von kjg17 Profi (34.4k Punkte)
Hallo Mirko.ka,

ich wüsste jetzt nicht, wie man über ein Drop-Down-Feld einen Autofilter aktivieren und dann natürlich auch wieder zurücksetzen könnte, da müssen vermutlich die Excel-+VBA-Spezies ran.

Nicht ganz so wie von dir gewünscht, aber in ein paar Sekunden erledigt:

In der Überschriftszeile die Anbieter 1 bis xx markieren, dann je nach Excel-Version auf Menü > Daten > Filter > Autofilter bzw. einfach nur Daten > Filtern (2007, 2010).

Jede Spalte hat nun ihren eigenen Filter, einfach nur bei dem entsprechenden Anbieter aufklappen und den Haken bei (Leere) rausnehmen und OK, dann erfolgt die Anzeige so wie von dir gewünscht.

Bei 50 Spalten ist das leider nicht so komfortabel, wie von dir gewünscht.

Gruß
Kalle
0 Punkte
Beantwortet von kjg17 Profi (34.4k Punkte)
Ups, hattest ja selber von einem Makro gesprochen. Entschuldigung und vergiss das o.a.
0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo Kalle,


Bei einer Lösung im Sinne der Anfrage kann ich keinen praktischen Nutzen erkennen, zumal es egal ist, ob der Fragesteller es so macht wie Du es vorgeschlagen hast oder über eine Eingabe des Anbieters in einem separaten Feld, der einzige Unterschied ist, dass er bei Deiner Variante den Anbieter vorher und bei der gewünschten Lösung den Anbieter (aus ca. 50) nachher suchen muss.

Habe versucht den beschriebenen Lösungswunsch mittels Makrorecorder (relativer Verweis) auf die Reihe zu kriegen, ist mir aber nicht gelungen.

Ein speziell erstelltes Makro (mit neuen Ideen) wäre auch nach meinem Dafürhalten am effektivsten, aber das sollte nach Absprache mit dem Fragesteller erfolgen.


schönen Tag noch
mit Gruß

Paul1
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Mirko,

es ließe sich mit folgendem Code im Codemodul des Tabellenblattes lösen:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngZelle As Range
Dim rngFilterbereich As Range
If Target.Address = "$A$1" Then '<== Zelle mit dem DropDown-Listenfeld
Set rngFilterbereich = Range(Cells(1, ActiveSheet.AutoFilter.Range(1).Column), _
Cells(1, ActiveSheet.AutoFilter.Range(1).Column + ActiveSheet.AutoFilter.Filters.Count - 1))
If Target <> "" Then
Set rngZelle = rngFilterbereich.Find(Target, lookat:=xlWhole)
rngFilterbereich.AutoFilter
rngFilterbereich.AutoFilter
ActiveSheet.AutoFilter.Range.AutoFilter Field:=rngZelle.Column - rngFilterbereich.Cells(1).Column + 1, Criteria1:="<>"
Else
rngFilterbereich.AutoFilter
rngFilterbereich.AutoFilter
End If
End If
Set rngFilterbereich = Nothing
Set rngZelle = Nothing
End Sub

Die Zelladresse für dein DropDown-Listenfeld aus der Gültigkeitsprüfung musst du natürlich anpassen. Außerdem musst du vorher für die zu filternden Spalten den Autofilter einrichten.

Bis später,
Karin
...