Schönen guten Abend,
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?
Liebe Grüße
Andi
Hallo Andi
Du könntest auch einfach den Filter benutzen (Beginnt mit...).
Hallöchen,
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.
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?
Hi Andi,
(05.11.2015, 12: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.
Hallo Andi,
hier wird der Autofilter Spalte D über die Zelle D1 gesteuert.
Der Code kommt in das schon vorhandene VBA-Modul des entsprechenden Tabellenblattes.
Private Sub 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
End If
End If
End With
End Sub
Gruß Uwe
(05.11.2015, 14:35)Kuwer schrieb: [ -> ]Hallo Andi,
hier wird der Autofilter Spalte D über die Zelle D1 gesteuert.
Der Code kommt in das schon vorhandene VBA-Modul des entsprechenden Tabellenblattes.
Private Sub 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
End If
End If
End With
End Sub
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
Hallo Andi,
für Deine rudimentäre "Beispieldatei" müsste es so aussehen:
Private Sub 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
End If
End If
End With
End Sub
Gruß Uwe
(05.11.2015, 15:49)Kuwer schrieb: [ -> ]Hallo Andi,
für Deine rudimentäre "Beispieldatei" müsste es so aussehen:
Private Sub 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
End If
End If
End With
End Sub
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, 16: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