VBA zur Suche nach Namen in Excel nutzen
Schritt-für-Schritt-Anleitung
Um in Excel nach Namen zu suchen und die Ergebnisse anzuzeigen, kannst Du den folgenden VBA-Code verwenden. Dieser Code ermöglicht es Dir, einen Namen in Zelle B9 einzugeben und alle Treffer aus dem Sheet "DB" ab Zelle B11 aufzulisten.
- Öffne Deine Excel-Datei und drücke
ALT + F11
, um den VBA-Editor zu öffnen.
- Füge ein neues Modul hinzu, indem Du mit der rechten Maustaste auf "VBAProject" klickst -> "Einfügen" -> "Modul".
- Kopiere den folgenden Code und füge ihn in das Modul ein:
Private Sub but_Suchen_Click()
Dim suchwort As String
Dim zielSpalte, zielZeile, suchZeile, letzteGefundeneZeile As Integer
Dim suche As Boolean
Dim sheetSuche, sheetDB As Worksheet
Set sheetDB = ThisWorkbook.Sheets("DB")
Set sheetSuche = ThisWorkbook.Sheets("Suche")
suchwort = sheetSuche.Range("B9").Value
zielZeile = 11 'erste Zielzeile (B11)
zielSpalte = 2 'Spalte B
sheetDB.Select
sheetDB.Columns("C:C").Select
suche = Selection.Find(What:=suchwort, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
suchZeile = Application.ActiveCell.Row
letzteGefundeneZeile = 0 'erneutes Suchen vom Anfang verhindern
While suche = True And suchZeile > letzteGefundeneZeile
sheetSuche.Select
sheetSuche.Cells(zielZeile, zielSpalte).Value = sheetDB.Cells(suchZeile, 3).Value & " " & _
sheetDB.Cells(suchZeile, 4).Value
zielZeile = zielZeile + 1
sheetDB.Select
letzteGefundeneZeile = suchZeile
Selection.FindNext(After:=ActiveCell).Activate
suchZeile = Application.ActiveCell.Row
Wend
sheetSuche.Select
MsgBox "Suche abgeschlossen", vbOKOnly, "Fertig"
End Sub
- Schließe den VBA-Editor und gehe zurück zu Deinem Arbeitsblatt.
- Füge einen Button hinzu, um die Suche zu starten, und verlinke ihn mit der
but_Suchen_Click
-Prozedur.
Häufige Fehler und Lösungen
-
Fehler: "Objekt nicht gefunden"
- Überprüfe, ob die Sheet-Namen ("DB" und "Suche") korrekt sind.
-
Fehler: Keine Ergebnisse gefunden
- Stelle sicher, dass der eingegebene Name in der richtigen Spalte und im richtigen Format vorliegt.
-
Fehler: Leerzeilen in den Ergebnissen
- Der Code ist so konzipiert, dass er nur Ergebnisse ohne Leerzeilen anzeigt. Überprüfe die Zeilen im "DB"-Sheet.
Alternative Methoden
Wenn Du keinen VBA-Code verwenden möchtest, kannst Du auch die folgenden Excel-Funktionen ausprobieren:
-
FILTER-Funktion (Excel 365)
=FILTER(DB!C:C, ISNUMBER(SEARCH(B9, DB!C:C)), "Keine Treffer")
-
SVERWEIS-Funktion
Verwende SVERWEIS, um nach Namen in einer bestimmten Tabelle zu suchen, aber beachte, dass dies nur für exakte Übereinstimmungen funktioniert.
Praktische Beispiele
Angenommen, Du hast eine Tabelle mit Namen in Spalte C und dazugehörigen Nachnamen in Spalte D. Der VBA-Code sucht nach dem Namen, der in Zelle B9 eingegeben wurde, und listet die Ergebnisse ab Zelle B11 auf.
Wenn Du nach "Max" suchst, zeigt der Code in Zelle B11 alle Einträge, die "Max" enthalten, wie "Max Müller" oder "Maximilian Schmidt".
Tipps für Profis
- Nutze die
xlWhole
-Option in der Find
-Methode, wenn Du eine exakte Übereinstimmung wünschst.
- Du kannst den Code erweitern, um auch nach Nachnamen zu suchen, indem Du die Spalten anpasst.
- Experimentiere mit verschiedenen Suchkriterien, um die Suche nach Namen in Excel zu optimieren.
FAQ: Häufige Fragen
1. Wie kann ich den Code anpassen, um nach Nachnamen zu suchen?
Um nach Nachnamen zu suchen, ändere einfach die Spalte in der Find
-Methode, die nach dem Nachnamen durchsucht wird.
2. Funktioniert dieser Code in allen Excel-Versionen?
Der VBA-Code funktioniert in Excel 2007 und später. Stelle sicher, dass Du Makros aktiviert hast.
3. Was mache ich, wenn ich keine Berechtigung habe, VBA zu verwenden?
Du kannst auch Excel-Formeln oder Filter verwenden, um in der Tabelle nach Namen zu suchen.