Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Wortteil in Tabelle suchen und Zelle markieren

Wortteil in Tabelle suchen und Zelle markieren
Elmar
Hallo zusammen,
ich bräuchte mal Hilfe... ich krieg´s irgenwie selbst nicht hin.
Ich möchte ein Makro, das mir Suchbegriffe aus einer Liste ausliest (Liste z.B. in Tabelle 2 von A1 bis A10) und damit (mit den Suchbegriffen) eine andere Tabelle dann durchsucht. Wenn der Begriff (das ist nicht immer ein kompletter Zelleninhalt, meist nur Wortteile) dann gefunden ist, soll die ganze Zeile gelb markiert werden. Außerdem muss das Makro auch klarkommen, wenn der Begriff nicht gefunden ist, also soll es einfach weitermachen.
Kann mir jemand helfen?
Alternativ kann ich die Suchbegriffe auch immer als einzelne Makros laufen lassen, aber vielleicht geht es bequemer.
DANKE vorab
Elmar

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Wortteil suchen - 2 Lösungen
17.08.2009 22:44:22
NoNet
Hallo Elmar,
zunächst einmal hier das gesuchte Makro :
Sub WortteilSuchen()
Dim lngZ As Long
Dim rngSuchspalte As Range
Set rngSuchspalte = Sheets("Tabelle1").[A:A] 'In dieser Spalte wird gesucht
With Sheets("Tabelle2") 'in diesem Blatt stehen in Spalte A die Suchbegriffe
For lngZ = 1 To .Cells(Rows.Count, 1).End(xlUp).Row 'bis zum letzten Wert in Spalte A
If .Cells(lngZ, 1)  "" Then 'Nur suchen wenn Zelle nicht leer ist
If Application.CountIf(rngSuchspalte, "*" & .Cells(lngZ, 1) & "*") > 0 Then
rngSuchspalte.Find(.Cells(lngZ, 1), lookat:=xlPart). _
EntireRow.Interior.Color = vbYellow
End If
End If
Next
End With
Set rngSuchspalte = Nothing
End Sub
Davon abgesehen : Das kann man auch sehr elegant ohne VBA lösen :
- Markiere in Blatt "Tabelle2" die Zellen mit den partiellen Suchbegriffen
- Vergib dafür im Namensfeld (oberhalb A1) den Namen "Suchbegriffe" und bestätige mit ENTER
- Markiere nun in "Tabelle1" die zu durchsuchenden Zeilen
- Wähle "Format - Bedingte Formatierung", wähle für "Bedingung1" folgendes aus :
- "Formel ist" (nicht "Zellwert ist" !) - =SUMME(ZÄHLENWENN($A1:$A1;"*"&Suchbegriffe&"*"))
- "Format - Muster - (gelb) - OK - OK"
Jetzt sind die Zeilen, die mind. einen der Suchbegriffe in Spalte A enthalten, gelb eingefärbt !
Gruß, NoNet
Anzeige
AW: Wortteil suchen - 2 Lösungen
17.08.2009 23:02:26
Elmar
Hi,
zunächst mal DANKE...
Das Makro funktioniert irgendwie schon, aber es markiert nur einen kleinen Teil. gesucht werden muss in Spalte D, aber das habe ich angepasst. Hast Du eine Vermutung, weshalb nicht alle Begriffe markiert werden? Die Datei hat allerdings auch 32000 Zeilen und 20 Spalten. Formatiert ist alles gleich.
Danke Elmar
Die Formel probier ich jetzt mal aus!!
WO soll denn gesucht werden ?
17.08.2009 23:08:18
NoNet
Hallo Elmar,
Du hast geschrieben :
Die Datei hat allerdings auch 32000 Zeilen und 20 Spalten.

WO innerhalb dieser Tabelle sollen die Wortteile denn gesucht werden ?
Ich ging davon aus, dass nur in EINER Spalte (in meinem Bsp. Spalte A, gemäß Deiner Korrektur jedoch Spalte D) gesucht werden soll.
Gruß, NoNet
Anzeige
AW: WO soll denn gesucht werden ?
17.08.2009 23:13:14
Elmar
Hallo,
ja das ist schon richtig, gesucht werden soll nur in der ganzen Spalte D, (von D1 bis D 32141) und dann die entsprechende Zeile markieren. Es klappt ja auch "teilweise", komischerweise nicht überall.
Die Formel will auch noch nicht klappen, aber ich muss nochmals checken.
Grüße
Elmar
AW: WO soll denn gesucht werden ?
17.08.2009 23:16:47
Elmar
Hi,
jetzt habe ich das Problem....
Natürlich sind die gesuchten BEgriffe mehrmals da, aber es wird jeder Begriff nur einmal in einer Zeile markiert. KAnn man das erweitern, dass alle Begriffe markiert werden.?
Elmar
Zeilen ALLER gefundenen Wortteile einfärben
17.08.2009 23:42:13
NoNet
Hallo Elmar,
habe den Code nun entsprechend erweitert :
Sub WortteilSuchen()
Dim lngZ As Long, lngZGefunden As Long
Dim rngSuchspalte As Range, rngZelle As Range
Set rngSuchspalte = Sheets("Tabelle1").[D:D] 'In dieser Spalte wird gesucht
With Sheets("Tabelle2") 'in diesem Blatt stehen in Spalte A die Suchbegriffe
For lngZ = 1 To .Cells(Rows.Count, 1).End(xlUp).Row 'bis zum letzten Wert in Spalte A
If .Cells(lngZ, 1)  "" Then 'Nur suchen wenn Zelle nicht leer ist
If Application.CountIf(rngSuchspalte, "*" & .Cells(lngZ, 1) & "*") > 0 Then
If UCase(rngSuchspalte(1, 1)) Like UCase("*" & .Cells(lngZ, 1) & "*") Then
Set rngZelle = rngSuchspalte(1, 1)
'Die nächste Zeile dient dazu, den BUG bei.FINDNEXT zu verhindern :
lngZGefunden = rngSuchspalte.Find(.Cells(lngZ, 1), lookat:=xlPart).Row
Else
Set rngZelle = rngSuchspalte.Find(.Cells(lngZ, 1), lookat:=xlPart)
End If
Do
rngZelle.EntireRow.Interior.Color = vbYellow
lngZGefunden = rngZelle.Row
Set rngZelle = rngSuchspalte.FindNext(after:=rngZelle)
Loop Until rngZelle.Row 
Etwas schneller ginge es bei dieser Datenmenge wohl mit dem Autofilter (per VBA gefüllt), aber das ist mir jetzt gerade zu mühselig, das auch noch zu programmieren ;-)
Gute Nacht,
NoNet
Anzeige
AW: Zeilen ALLER gefundenen Wortteile einfärben
17.08.2009 23:45:28
Elmar
Hallo Du,
super und vielen Dank, inzwischen klappt auch die Formel.... (ich konnte nur nicht lesen!!!)
Hast mir wirklich klasse geholfen
Grüße vom Bodensee und ebenfalls GUTE NACHT
Elmar

107 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige