ich habe ein Problem und komme aktuell nicht weiter. Vielleicht weiß ja jemand Rat:)
Und zwar habe ich eine Tabelle mit sehr vielen Einträgen (mehreren Hundert). Mein Ziel ist es, dass ich über eine separate Zelle die Tabelle nach einer Teilenummer filter.
Beispiel: Ich möchte, dass in der blauen Tabelle die Teilenummer 12345678 gefiltert wird. Dafür trage ich diese Teilenummer in die Zelle B1 ein (gelb markiert) (ohne manuell über die Tabelleüberschrift die Filterfunktion zu nutzen). Ist dies möglich?
18.07.2018, 18:53 (Dieser Beitrag wurde zuletzt bearbeitet: 18.07.2018, 18:54 von Frogger1986.)
Hallo
Das könnte man mit vba! Formatiere den Bereich in eine intelligente Tabelle, benenne die Tabelle in "Artikel" und füge diesen Code in das Codefenster des Tabellenblatt ein! (Rechtsklick auf Tabellenreiter dann Code Anzeigen dann einfügen) Sobald die Zelle geändert wird, wird Gefiltert! Wird alles aus der Zelle gelöscht, wird der Filter zurückgesetzt!
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
18.07.2018, 19:07 (Dieser Beitrag wurde zuletzt bearbeitet: 18.07.2018, 19:10 von WillWissen.
Bearbeitungsgrund: Tippfehler
)
Hi,
ich gehe jetzt mal davon aus, dass Teilenummern mehrfach vorhanden sein können. Dann würde ich, wenn, aus welchem Grund auch immer, die eingebauten Filtermöglichkeiten nicht genutzt werden (dürfen), diese Lösung (Makros dürfen nicht überall eingesetzt werden und zum Anpassen müssten ein paar Kenntnisse vorhanden sein) bevorzugen:
vielen Dank für die Antworten. Die Lösung mit dem VBA Code funktioniert gut! Nur ein "Problem". Und zwar muss der eingegebene Name GENAU der Teilenummer entsprechen. Geht das aber auch, dass die gefilterte Teilenummer die in B1 eingegebenen Zahlen BEINHALTET? Also ich gebe zum Beispiel 123 ein und er filtert mich auch 12345678 raus?
die manuelle Eingabe birgt immer die Gefahr, dass man sich verschreibt und dadurch vielleicht kein oder ein falsches Ergebnis bekommt. Kannst DU nicht mit dem Autofilter arbeiten?
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
nein das geht nicht, da die meines Wissens die Eingabe in die aktive Zelle nicht beim eingeben überwacht werden kann via VBA (ich lasse mich gern eines besseren belehren)
Für alle die mit 123xxx beginnen sollte der Code funktionieren. Wenn 123 in der Nummer irgendwo stehen soll xxx123xx dann entferne in der Zeile „If InStr(1, ArrWerte(n, 1), k, 1) = 1 Then“ das = 1.
Code:
Private Sub Worksheet_Change(ByVal Target As Range) Dim i, k As String Dim ArrWerte As Variant Dim n As Long If Target.Address = "$B$1" Then With ListObjects("Tabelle1") k = Range("B1").Text ArrWerte = .ListColumns(4).DataBodyRange For n = 1 To UBound(ArrWerte, 1) If InStr(1, ArrWerte(n, 1), k, 1) = 1 Then i = i & " " & ArrWerte(n, 1) Next n If i <> "" Then ArrWerte = Split(Mid(i, 2)) ListObjects("Tabelle1").Range.AutoFilter Field:=4, Criteria1:=ArrWerte, Operator:=xlFilterValues End If End With End If End Sub
Gruß Elex
Folgende(r) 1 Nutzer sagt Danke an Elex für diesen Beitrag:1 Nutzer sagt Danke an Elex für diesen Beitrag 28 • ExcelNeuling99