Excel Suchfunktion für Spalte
Hallo an alle,
ich arbeite zur Zeit an einer Excel-Tabelle und benötige etwas Hilfe bei einer integrierten Suchfunktion.
Die Tabelle ist recht groß - das einzige, das mich allerdings interessiert ist Spalte B, in der inzwischen mehrere hundert Wortkürzel stehen (z.B. ABS, TPP, KVP).
Um es benutzerfreundlicher zu machen möchte ich ein Suchfeld integrieren, mit dem ich die Spalte B nach Wörtern durchsuchen kann. Hier mal kurz die Eckdaten, wie ich mir das ganze Vorstelle:
-
Einzelnes Suchfeld, in das ein Wort eingegeben werden kann
-
Programm springt nach Eingabe zur Position des Kürzels
-
Suche soll genau das eingegebene Wort suchen und nicht alle Wörter, in denen diese Textkombination enthalten ist. Wenn ich nach PA suchen würde, würde er mir sonst wahrscheinlich 300 Wörter markieren!
Wunschanforderung wäre, dass Excel mir einfach alle Wörter markiert (z.B. rot umrandet), da manche Kürzel auch mehrfach in der Tabelle stehen.
Ich habe zwar schon eine Formel aber die benötigt 2 Felder und das findet mein AG nicht genial genug :D
Bestens wäre natürlich ein VBA-Code, die kann ich aber leider nicht selbst programmieren und finde kein Tutorial dafür, noch einen geeigneten Code im Internet.
Falls jemand bereit wäre mir dabei zu helfen, schreibe ich natürlich gerne mehr Informationen zur Tabelle. Ansonsten Danke für alle (Verbesserungs-)Vorschläge und konstruktiven Kommentare ;)
LG
4 Antworten
Hier mal auf die schnelle ein ganz einfaches Makro, das in der Sp B das Vorkommen (auch mehrfaches) des Wertes in Zelle C1 mit roter Füllfarbe markiert:
Sub suchen1()
such = Cells(1, 3) 'Suchwort aus C1
letzteZ = Range("B65536").End(xlUp).Row
For i = 2 To letzteZ
If Cells(i, 2) = such Then
Cells(i, 2).Select
Selection.Interior.Color = 255 'rot
End If
Next
End Sub
Um die Markierungen wieder zu löschen:
Sub Markierung_weg()
Range("B2:B2000").Select
Selection.Interior.Pattern = xlNone
Range("c1").Select
End Sub
Weiterer "Firlefanz" wie "geben Sie Ihr Suchwort in C1 ein" oder "Groß/Kleinschreibung beachten" kann und sollte in Deiner Tabelle von Dir selbst ohne Schwierigkeiten machbar sein, oder ?
Gruß aus Berlin
Inzwischen habe ich zwar schon eine andere Lösung aber der Code, den du geschickt hast gefällt mir auch ziemlich gut!
Jetzt hab ich schon zwei Varianten und bin mit beiden mehr als nur zufrieden.
Auch in Zukunft wird mir deine Antwort (Code) wahrscheinlich noch oft behilflich sein.
lG und besten Dank
Warum nimmst du nicht den SVERWEIS dafür? z.B. auf ein neues Tabellenblatt die Abfrage geben und daneben dann die dazugehörigen Daten (weitere Felder) anzeigen. Das kannst du auch mit mehreren Treffern so einrichten :-)
Es gibt natürlich noch die Möglichkeit, dass ich einfach zu dumm dafür bin :D
Vielleicht würde das schon gehen.
Ich kenn es halt so, dass mir der SVERWEIS irgendwo ein Ergebnis hinspuckt und das wäre in dem Fall eher nicht wünschenswert.
Der Benutzer soll, wenn möglich, auf dem Tabellenblatt bleiben und dann nach der Eingabe seiner "Suchkriterien" zum Wort "geleitet" werden.
Excel sollte also beim Suchbegriff "´KVP" im Feld B6 anfgangen. Steht dort kein KVP geht es weiter auf B7. Danach auf B8. Wenn KVP dann irgendwann gefunden wird soll es einfach markiert und angezeigt werden, d.h. wenn dann bei B466 das gewünschte Wort steht, sollte Excel direkt dort hinspringen.
Würde das der SVERWEIS schaffen? :/ wüsste nicht wie, aber ich bin auch nicht gerade der Excel-Held :D
Wünschenswerter wäre es noch, dass Excel beim finden von KVP einfach eine bestimmte Umrandung macht und dann weiter sucht, bis alle Wörter markiert und die Tabelle in Spalte B am Ende ist.
Am einfachsten ist es, wenn du auf Spalte B einen Filter anwendest. In das Suchfeld des Filters gibst du die Anfangsbuchstaben ein (oder mit * auch die Mitte einer Zeichenkette), und schon werden alle nicht zutreffenden Ergebnisse ausgeblendet.
Alternativ über die Bedingte Formatierung. Neue Regel, Nur Zellen formatieren, die enthalten... Dort wählst du aus "Bestimmter Text" und verweist auf eine Zelle, die du als Suchfeld verwendest. Dann werden die Zellen zwar farblich markiert, allerdings springt der Cursor nicht dahin.
Danke an alle, die mir Antworten geschickt haben.
Besonderen Dank an Britzcontrol, die Lösung ist schon ziemlich edel.
Inzwischen bin ich noch auf einen weiteren Code im Internet gestoßen, der gewisse Spalten durchsucht. Muss eben individuell im Code angepasst werden. Könnte aber durchaus weitere Leser interessieren, die ein ähnliches Problem haben.
Sub ZellinhaltSuchen()
Dim rngZelle As Range
Dim strSuchbegriff As String
Dim strStart As String
Dim bytWeiter As Byte
Dim lngLetzte As Long
strSuchbegriff = InputBox("Suchbegriff:")
If strSuchbegriff <> "" Then
lngLetzte = IIf(IsEmpty(Cells(Rows.Count, 2)), Cells(Rows.Count, 2).End(xlUp).Row, Rows.Count)
With Range(Cells(3, 2), Cells(lngLetzte, 2))
Set rngZelle = .Find(strSuchbegriff, lookat:=xlWhole, LookIn:=xlValues)
If Not rngZelle Is Nothing Then
strStart = rngZelle.Address
Do
Application.Goto reference:=rngZelle, scroll:=True
bytWeiter = MsgBox("Weiter suchen?", vbOKCancel)
If bytWeiter = 2 Then Exit Do
Set rngZelle = .FindNext(rngZelle)
Loop While Not rngZelle Is Nothing And rngZelle.Address <> strStart
Else
If rngZelle Is Nothing Then MsgBox "Suchbegriff nicht gefunden"
End If
Set rngZelle = Nothing
End With
End If
End Sub