Clever-Excel-Forum

Normale Version: Tabelle über Suchfeld filtern
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo zusammen,

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?

Vielen Dank!
Hi,

kommen die Teilenummern öfters vor oder sind das jeweils Unikate?
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)

   If Target.Address = "$B$1" Then
   
       If Range("B1") = "" Then
       
       ActiveSheet.ListObjects("Artikel").Range.AutoFilter Field:=4
       
       Else
       
       ActiveSheet.ListObjects("Artikel").Range.AutoFilter Field:=4, Criteria1:=ActiveSheet.Range("B1")
       
       End If
   
   End If

End Sub
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:

Arbeitsblatt mit dem Namen 'Tabelle1'
ABCDEFGHIJKLMNO
1Nach Teilenummer suchen:12345679
2
3BezeichnungLieferantLieferantennummerTeilenummerMengePreisHSBezeichnungLieferantLieferantennummerTeilenummerMengePreis
4Bauteil 1Lieferant A14412345678755135,34Bauteil 2Lieferant A144123456793533313,6
5Bauteil 2Lieferant A144123456793533313,65Bauteil 2Lieferant A144123456793533313,6
6Bauteil ABCLieferant B1559876543254661,98
7Bauteil 2Lieferant A144123456793533313,67

ZelleFormel
H4=WENN(D4=$B$1;ZEILE();"")
J4=WENNFEHLER(INDEX(A:A;KKLEINSTE($H$4:$H$10;ZEILE(A1)));"")
Verwendete Systemkomponenten: [Windows (32-bit) NT 10.00] MS Excel 2016
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg

Die Hilfsspalte kann irgendwo eingesetzt und bei Bedarf ausgeblendet werden.
Hallo,

mit dem Spezialfilter --> Unter Daten --> Filter --> Erweitert --> Liste an gleicher Stelle filtern

Achtung der KriterienBereich braucht die gleiche SpaltenÜberschrift -> Teilenummer
Hallo,

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?

Danke!
Hallo,

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?
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)
Hi

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
Genial! Vielen Dank!
Seiten: 1 2