Clever-Excel-Forum

Normale Version: Sucheergebnisse anzeigen und alle anderen Zeilen löschen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
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
Seiten: 1 2