Clever-Excel-Forum

Normale Version: Wörter aus Zelle hervorheben
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
Hallo zusammen,

ich möchte das alle Wörter die in Zelle A stehen in Zelle B farbig hervorgehoben werden. 

Beispieldatei: [attachment=34393]

Gibt es die Möglichkeit das mit einer Formatierung zu lösen ohne dass alle Wörter in eigene Zellen aufgeteilt werden müssen? Es ist wichtig das zumindest die aneinander gereihten Wörter in einer Zelle stehen. Eventuell mit der Such-Funktion? Ich muss dies für mehr als 2000 Produkte machen, darum wäre es sehr aufwendig das für alle Produkte einzeln zu machen. 

Ich bin für jede Hilfe dankbar.

LG
Laura
Hola,

bitte eine Exceldatei an Stelle von Bildchen hochladen.

Gruß,
steve1da
Hallo Steve,

danke für die Info. Ich habe die Datei eingefügt.

Gruß,
Laura
Hallo,

sieh mal ein paar Zeilen weiter unten

https://www.clever-excel-forum.de/Thread...Einfaerben

dem post #3

mfg
Hallo,
vielen Dank für die Antwort.

Ich habe jetzt folgendes Makro angewendet:

Code:
Sub Test()

Dim Suche As String
Dim Laenge As Integer

Laenge = Len(Worksheets("Sheet2").Cells(1, 1))

Suche = InStr(1, Worksheets("Sheet2").Cells(1, 2), Worksheets("Sheet2").Cells(10, 1))

Worksheets("Sheet2").Cells(1, 2).Characters(Suche, Laenge).Font.ColorIndex = 3

End Sub

Die Datei sieht nun folgendermaßen aus: [attachment=34396]
Leider markiert er jetzt bloß soweit wie die Länge aus A1. Ich möchte jedoch, dass er explizit nach den Wörtern sucht. Gibt es die Möglichkeit, dass ein Wort mit Leerzeichen als ein "Suchwort" angesehen wird? Ich bin leider absoluter Anfänger was Makros angeht.


Gruß,
Laura
Hallo Laura,

Du könntest die Leerzeichen in A2 eintragen oder im Code die Leerzeichen drumherum bauen

Suche = InStr(1, " " & Worksheets("Sheet2").Cells(1, 2) & " ", Worksheets("Sheet2").Cells(10, 1))

Allerdings gäbe es da ein Problem. Das würde das Wort am Anfang oder Ende nicht finden. Da würden zusätzlich zu der vorhandenen Suche noch diese Zeilen helfen:

if Suche = 0 then
'Suche am Anfang
Suche = InStr(1, Worksheets("Sheet2").Cells(1, 2) & " ", Worksheets("Sheet2").Cells(10, 1))
end if
if Suche = 0 then
'Suche am Ende
Suche = InStr(1, " " & Worksheets("Sheet2").Cells(1, 2), Worksheets("Sheet2").Cells(10, 1))
end if

Sollte es das Wort mehrmals geben, müsste man das auch in einer Schleife verarbeiten, ansonsten wird nur der erste Treffer gefärbt
Sollte das Wort am Anfang stehen und z.B. ein Satzzeichen folgen, würde es nicht gefunden, z.B. Suche nach "Morgens" in diesem Satz
Morgens, wenn die Sonne aufgeht ...
Hallo,

die Datenstruktur, insbesondere wenn Suchbegriffe Worteile sind ("in" und "Kinder") ist kompliziert.

Hier ein Vorschlag:

Code:
Sub F_en()

For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
    sw = Split(Cells(i, 1))
    Tx = Replace(Cells(i, 2), Chr(10), Chr(32))
    mx = Split(Tx)
    For b = LBound(sw) To UBound(sw)
        Debug.Assert sw(b) <> "in"
        anz = Filter(mx, sw(b))
        If UBound(anz) = -1 Then GoTo NN
        rep = UBound(anz) + 1
        st = 1
        pp = 0
        Do
        rep = rep - 1
        If Len(sw(b)) = Len(anz(pp)) Then
            pos = InStr(st, Cells(i, 2), sw(b), vbTextCompare)
            st = pos + 1
            If pos > 0 Then
                Debug.Print sw(b), pos, UBound(anz), rep
                Cells(i, 3).Characters(pos, Len(sw(b))).Font.Color = vbRed
            End If
        Else: pp = pp + 1
        End If
        Loop Until rep <= 0
NN:
    Next b
Next i
End Sub

Zum Testen habe ich B1 in C1 kopiert.

mfg
@Fennek,

wenn in b1 aus kinder dann blackinderpoint gemacht wird, wird der Schwarze Punkt auf dem Inder auch gefunden Sad

der Pullover mit blaubeeren statt blau übrigens nicht Smile
Hallo,

der Code ist besser:

Code:
Sub F_en2()

For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
    sw = Split(Cells(i, 1))
    Tx = Replace(Cells(i, 2), Chr(10), Chr(32))
    mx = Split(Tx)
    For b = LBound(sw) To UBound(sw)
        For m = LBound(mx) To UBound(mx)
            If sw(b) = mx(m) Then
            Debug.Print mx(m)
            p = 1
            Do
                pos = InStr(p, Cells(i, 2), mx(m), vbTextCompare)
                Cells(i, 2).Characters(pos, Len(sw(b))).Font.Color = vbRed
                p = pos + 1
            Loop While pos > 0
            Exit For
            End If
        Next m
    Next b
Next i
End Sub

mfg
Hallo,
vielen Dank für die Mühe!

Ich habe nun versucht das Makro anzuwenden. Leider funktioniert das noch nicht so richtig.

Siehe folgende Datei: [attachment=34410]

Hier erkennt er das Wort "Glue" zum Beispiel nicht. Hat jemand eine Idee?

LG
Laura
Seiten: 1 2 3