Suchmaske bei Excel 2019?
Hey...
Ich habe folgende Tabelle in Excel 2019
Name Vorname DG Straße Telefonnummer ...................... etc
Muster Maxi .................................................................. etc
.....................
...................... usw
Nun möchte ich in einem extra Tab (in der gleichen Datei) eine Suchmaske erstellen mit drei Suchfeldern
(Name Vorname DG) und wenn ich das eingebe, soll er mir alle Daten die ich vor eingestellt abfrage ausspucken über die Person.
Es sollen entweder alle drei oder nur eins ausgefüllt werden müssen (oder halt zwei).... Habe es über VBA schon erstellt wie es aussehen soll, aber meine Kenntnisse beschränken sich nur auf (was mir google sagt probiere ich so lange bis es geht).... Anscheinend frage ich aber nicht richtig, auf jeden Fall komme ich aktuell nicht weiter... Kann m mir jemand helfen?
Danke im Voraus
3 Antworten
z.B. so
Verketten von Nach- und Vornamen ist sinnvoll, wenn sich Familiennamen wiederholen
Mit dem *"* kannst Du bei Bedarf die Namenssuche verkürzen

Was spricht denn dagegen einfach die integrierte Filterfunktion von Excel zu benutzen? Der Schritt über ein zusätzliches Tabellenblatt und VBA erscheint mir unnötig aufwändig.
Ich hab mal auf die Schnelle was zusammengezimmert, was du evtl. als Basis für dein Vorhaben benutzen kannst. Die Felder, nach denen gesucht werden soll und die Spalten, die kopiert werden sollen, musst du natürlich dementsprechend anpassen.
Allgemein würde ich aber empfehlen Excel nicht als Datenbank zu verwenden. Mit einem Datenbankprogramm wäre das ganze eine simple Abfrage gewesen.
Sub Suchen()
Dim Suchbereich As Range
Dim Kopierbereich As Range
Dim SucheName As String
Dim SucheVorname As String
Dim SucheDG As String
Dim Datentabelle As Worksheet
Dim Filtertabelle As Worksheet
Set Datentabelle = Sheets(1) ' Falls die Tabelle, in der gesucht werden soll,
' nicht die erste ist, musst du die Zahl entsprechend anpassen
' oder den Namen der Tabelle in Anführungszeichen reinschreiben.
Set Filtertabelle = Sheets(2) ' hier genauso
Set Suchbereich = Datentabelle.UsedRange
Datentabelle.AutoFilter.ShowAllData
SucheName = Filtertabelle.Range("A2").Value ' Hier musst du natürlich auch die richtige Herkunft eintragen
SucheVorname = Filtertabelle.Range("B2").Value
SucheDG = Filtertabelle.Range("C2").Value
If SucheName <> "" Then
Suchbereich.AutoFilter Field:=4, Criteria1:=SucheName ' Hier auch. Bei Field muss halt drinstehen,
' in welcher Spalte des Suchbereichs gesucht werden soll
End If
If SucheVorname <> "" Then
Suchbereich.AutoFilter Field:=8, Criteria1:=SucheVorname
End If
If SucheDG <> "" Then
Suchbereich.AutoFilter Field:=10, Criteria1:=SucheDG
End If
Set Kopierbereich = Intersect(Suchbereich, Datentabelle.Range("A:A, D:D, G:G, P:P"))
' In dem Range musst du halt die Spalten reinschreiben, die kopiert werden sollen.
Application.CutCopyMode = False
Kopierbereich.Copy
Filtertabelle.Select
Filtertabelle.Range("A4").Select
Filtertabelle.Paste
End Sub
Unglaublich lieb! Danke! Ich werde mich sofort dran versuchen, basteln und mein Wissen dadurch erweitern! Danke :*
Kannst du das genauer spezifizieren? Was genau funktioniert nicht richtig? Gibt es irgendwelche Fehlermeldungen, wenn ja, welche? Bei welcher Zeile bleibt der Code hängen? Sind bei dir evtl. Makros komplett deaktiviert? Hast du den Code in ein Modul oder direkt in ein Arbeitsblatt eingefügt?
Ich hab den Code bei mir mit einem echten Dokument getestet. In der ersten Tabelle die Daten und in der zweiten Tabelle die Suchmaske und das Ergebnis. Das hat funktioniert. Je nachdem, wie die Struktur bei dir aufgebaut ist, muss man aber evtl. hier und da was am Code anpassen.
Du kannst filtern oder
Die die Daten per SVerweis anzeigen lassen.
Hab ich auch schon probiert, aber er spuckt mir falsche Werte aus
Wenn die gesuchten Daten eindeutig sind, zeigt Excel das richtige an.
Es sind an die 400 Spalten und ich möchte nur 20 davon wissen, bzw möchte mein Chef nicht alles durchschauen und ich habe nicht die Zeit ihm das jedes Mal rauszusuchen wenn er es schnell braucht