habe noch eine weiter Frage und hoffe, dass ich dieses super Forum nicht überstrapaziere :17:
Ich möchte in einer 300 Zeilen Tabelle in Spalte D nach einem bestimmten Suchbegriff suchen, in der auch eine Suchanfrage mit * möglich ist. Also wenn ich Auto* eingebe, das alle Ergebnisse aus Spalte D die mit Auto anfangen angezeigt werden wie z.B. Autoblech/Autostoßstange usw.
Zudem sollen alle anderen Zeilen, in dem nicht in Spalte C der gewünschte Suchbegriff verfügbar ist ausgeblendet werden. Ich denke sowas geht wohl nur über VBA, oder? Kennt jemand vielleicht rein zufällig so eine VBA-Musterprogrammierung??
Nach der Suche soll wieder alles Zeilen für die nächste Suche verfügbar sein. Oh je, ich glaube dies ist wohl zu kompliziert, oder?
den Filter findest Du im Reiter Daten. Wenn Du ihn aktivierst, kommt über der ( den) Spalte(n) ein Aufklappbutton. Dort bekommst Du im Menüpunkt "Textfilter" verschiedene Möglichkeiten, neben "Beginnt mit" auch "Enthält", "Endet.." und andere. Beim benutzerdefinierten Filter kann man dann noch Bedingungen kombinieren.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Danke für die Tipps. Ich suche allerdings eher eine Art eingabefeld, in dem ich den Suchbegriff eingebe und dann nach Enter alle relevanten Zeilen übrig bleiben. Kann man diesen Textfilter irgendwie einer Zelle zuordnen, die dann als Eingabefeld dienen soll?
(05.11.2015, 13:53)Andi1965 schrieb: Danke für die Tipps. Ich suche allerdings eher eine Art eingabefeld, in dem ich den Suchbegriff eingebe und dann nach Enter alle relevanten Zeilen übrig bleiben. Kann man diesen Textfilter irgendwie einer Zelle zuordnen, die dann als Eingabefeld dienen soll?
dafür würde ich ein Makro verwenden.
Dazu einfach die Makro-Aufzeichnung starten, die Aktion des Filterns ein Mal ausführen, dann die Aufzeichnung beenden.
Das Makro hier posten und die Zelle angeben, die als Eingabefeld dienen soll. Dann können die Helfer das Makro um Überflüssiges bereinigen und es verallgemeinern.
hier wird der Autofilter Spalte D über die Zelle D1 gesteuert. Der Code kommt in das schon vorhandene VBA-Modul des entsprechenden Tabellenblattes.
PrivateSub Worksheet_Change(ByVal Target As Range) With Target If .Address(0, 0) = "D1"Then'entsprechende Zelladresse angeben .Activate If Len(.Value) Then'Wenn Zelle D1 nicht leer ist 'Autofilterkriterium wird aus Wert von D1 erzeugt Me.Cells.AutoFilter Field:=4, Criteria1:="=" & .Value & "*" Else'Wenn Zelle D1 leer ist 'Autofilter dieser Spalte wird auf "Alle" gesetzt Me.Cells.AutoFilter Field:=4 EndIf EndIf EndWith EndSub
hier wird der Autofilter Spalte D über die Zelle D1 gesteuert. Der Code kommt in das schon vorhandene VBA-Modul des entsprechenden Tabellenblattes.
PrivateSub Worksheet_Change(ByVal Target As Range) With Target If .Address(0, 0) = "D1"Then'entsprechende Zelladresse angeben .Activate If Len(.Value) Then'Wenn Zelle D1 nicht leer ist 'Autofilterkriterium wird aus Wert von D1 erzeugt Me.Cells.AutoFilter Field:=4, Criteria1:="=" & .Value & "*" Else'Wenn Zelle D1 leer ist 'Autofilter dieser Spalte wird auf "Alle" gesetzt Me.Cells.AutoFilter Field:=4 EndIf EndIf EndWith EndSub
Gruß Uwe
Hallo Uwe,
wow, herzlichen Dank für den VBA Codetext. habe es gleich ausprobiert, aber es kommt immer ein laufzeitfehler. Anhänged ist meine Testdatei. Vielleicht wärst Du so freundlich nochmal kurz drüberzuschauen? vg Andi
für Deine rudimentäre "Beispieldatei" müsste es so aussehen:
PrivateSub Worksheet_Change(ByVal Target As Range) With Target If .Address(0, 0) = "D1"Then'entsprechende Zelladresse angeben .Activate If Len(.Value) Then'Wenn Zelle D1 nicht leer ist 'Autofilterkriterium wird aus Wert von D1 erzeugt .EntireColumn.AutoFilter Field:=1, Criteria1:="=" & .Value & "*" Else'Wenn Zelle D1 leer ist 'Autofilter dieser Spalte wird auf "Alle" gesetzt .EntireColumn.AutoFilter Field:=1 EndIf EndIf EndWith EndSub
für Deine rudimentäre "Beispieldatei" müsste es so aussehen:
PrivateSub Worksheet_Change(ByVal Target As Range) With Target If .Address(0, 0) = "D1"Then'entsprechende Zelladresse angeben .Activate If Len(.Value) Then'Wenn Zelle D1 nicht leer ist 'Autofilterkriterium wird aus Wert von D1 erzeugt .EntireColumn.AutoFilter Field:=1, Criteria1:="=" & .Value & "*" Else'Wenn Zelle D1 leer ist 'Autofilter dieser Spalte wird auf "Alle" gesetzt .EntireColumn.AutoFilter Field:=1 EndIf EndIf EndWith EndSub
Gruß Uwe
vielen, vielen Dank jetzt klappt es. super, dass dann beim löschen der Zelle auch der Filter rausgeschlöscht wird und alle Zellen wieder erscheinen. Super :19: :19: :19:
(05.11.2015, 17:26)Andi1965 schrieb: vielen, vielen Dank jetzt klappt es. super, dass dann beim löschen der Zelle auch der Filter rausgeschlöscht wird und alle Zellen wieder erscheinen. Super :19: :19: :19:
Hallo Uwe,
jetzt dacht ich, ich kann den Code auch einfach für andere Spalten im gleichen Tabellenblatt einbauen dann statt "D1" in z.B. Spalte "E1" ändern, aber so simple ist es wohl nciht, weil es funktioniert nicht. Ich wage es kaum zu fragen, aber wenn es dir keine umstände macht, wäre über eine Tipp sehr dankbar. vg Andi