Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1796to1800
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Einzelne Wörter in Zelle markieren
14.12.2020 12:37:47
HomoFaber
Guten Tag,
Ich brauche bei folgendem Szenario Hilfe:
Ich führe eine bibliometrische Analyse für eine wissenschaftliche Arbeit durch und habe ca. 6000 Artikel aus einer Datenbank ausgeleitet. In einer Spalte befinden sich die jeweiligen Abstracts des Artikels.
Ich möchte nun bestimmte Keywords innerhalb der Abstracts hervorheben (z.B. dick) um besser mit der Datei arbeiten zu können. Mir ist bewusst, dass ich dafür sicherlich einen VBA-Code schreiben muss, allerdings finde ich keine Hilfe dazu.
Liebe Grüße und vielen Dank!

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Einzelne Wörter in Zelle markieren
14.12.2020 12:44:49
SF
Hola,
verlinkst du bitte deine Fragen in den verschiedenen Foren gegenseitig?
Danke.
Gruß,
steve1da
AW: Einzelne Wörter in Zelle markieren
14.12.2020 12:45:50
Nepumuk
Hallo,
welche Spalte welches Keyword?
Gruß
Nepumuk
AW: Einzelne Wörter in Zelle markieren
14.12.2020 13:28:45
Nepumuk
Hallo,
die Spalte und die Startzeile musst du dir selber anpassen:
Option Explicit

Public Sub Test()
    
    Dim objRegEx As Object, objMatch As Object
    Dim objCell As Range
    Dim strText As String
    Dim lngIndex As Long
    
    strText = InputBox("Bitte Keyword eingeben.", "Eingabe")
    
    If StrPtr(strText) <> 0 And Trim$(strText) <> vbNullString Then
        
        strText = Trim$(strText)
        
        Set objRegEx = CreateObject("VBScript.RegExp")
        
        With objRegEx
            
            .Global = True
            .IgnoreCase = True
            .Pattern = strText
            
            For Each objCell In Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp)) 'Spalte 1 ab Zeile 2
                
                objCell.Font.Bold = False
                
                Set objMatch = .Execute(objCell.Text)
                
                For lngIndex = 0 To objMatch.Count - 1
                    
                    With objCell.Characters(objMatch.Item(lngIndex).FirstIndex + 1, _
                            objMatch.Item(lngIndex).Length).Font
                        
                        .Bold = True
                        .Color = vbRed
                        
                    End With
                Next
            Next
        End With
    End If
    
    Set objMatch = Nothing
    Set objRegEx = Nothing
    
End Sub

Gruß
Nepumuk
Anzeige
AW: Einzelne Wörter in Zelle markieren
14.12.2020 15:34:38
HomoFaber
Hallo Nepumuk,
Vielen Dank für den Code - er scheint zu funktionieren, allerdings treffe ich mein Ziel nicht.
Es handelt sich dabei um ca. 20 Keywords, die in Spalte K von Zeile 3 bis Zeile 6000 vorkommen.
1.) Kann ich die Anzahl der Keywords im Code vergrößern ohne dass ich sie manuell eingeben muss? (Auch wenn es mega praktisch ist) :-D
2.) Wie treffe ich meine Spalte K?
Vielen Dank - mega nett!!!
AW: Einzelne Wörter in Zelle markieren
14.12.2020 15:39:33
Nepumuk
Hallo,
stehen die Keywords irgendwo in der Tabelle, oder sollen die im Code hinterlegt werden?
Gruß
Nepumuk
AW: Einzelne Wörter in Zelle markieren
14.12.2020 15:41:38
HomoFaber
Hallo Nepumuk, die Keywords stehen in der Tabelle M2 bis BA2 :-)
Anzeige
AW: Einzelne Wörter in Zelle markieren
14.12.2020 15:54:52
Nepumuk
Hallo,
dann so:
Option Explicit

Public Sub SetFontColorKeywordcells()
    
    Dim objRegEx As Object, objMatch As Object
    Dim objValueCell As Range, objKeywordCell As Range
    Dim lngIndex As Long
    
    With Range(Cells(2, 11), Cells(Rows.Count, 11).End(xlUp)).Font
        
        .Bold = False
        .Color = vbBlack
        
    End With
    
    Set objRegEx = CreateObject("VBScript.RegExp")
    
    With objRegEx
        
        .Global = True
        .IgnoreCase = True
        
        For Each objKeywordCell In Range(Cells(2, 13), Cells(2, Columns.Count).End(xlToLeft))
            
            .Pattern = objKeywordCell.Text
            
            For Each objValueCell In Range(Cells(2, 11), Cells(Rows.Count, 11).End(xlUp))
                
                Set objMatch = .Execute(objValueCell.Text)
                
                For lngIndex = 0 To objMatch.Count - 1
                    
                    With objValueCell.Characters(objMatch.Item(lngIndex).FirstIndex + 1, _
                            objMatch.Item(lngIndex).Length).Font
                        
                        .Bold = True
                        .Color = vbRed
                        
                    End With
                Next
            Next
        Next
    End With
    
    Set objMatch = Nothing
    Set objRegEx = Nothing
    
End Sub

Eine Erweiterung der Keyword-Liste wird automatisch verarbeitet wenn du das Makro aufrufst.
Gruß
Nepumuk
Anzeige
AW: Einzelne Wörter in Zelle markieren
14.12.2020 16:24:02
HomoFaber
Lieber Nepumuk,
Ich würde sagen - das ist wahre Magie!
Vielen Dank für deine Hilfe - das hat meinen Tag um einiges schöner gemacht!!!
Besten Gruß!!
AW: Beispiledatei
14.12.2020 12:46:07
Fennek
Hallo,
eine Beispieldatei sollte in Blatt 1 einige (wenige) Abstracts, in Blatt 2 Spalte A die Liste der Keywords enthalten. Es ist viel einfacher in Blatt 1, Spalte B die keywords auszugeben, die in Spalte A gefunden wurden, als die keywords farblich oder mit Formaten anzuzeigen.
mfg
(es könnte auch mit einer Matrix-Formel zu bearbeiten sein)
AW: Einzelne Wörter in Zelle markieren
14.12.2020 13:15:20
JoWE
Hi,
vllt. so:
(wenn der Text "dick" z.B.in einer Zelle oder mehrerer Zellen der Spalte A1 - A99 enthalten wäre)
Sub test()
sb = "dick"
l = Len(sb)
For ze = 2 To 99
t = InStr(1, Cells(ze, 1), "dick")
With Cells(ze, 1).Characters(Start:=t, Length:=l).Font
.FontStyle = "Bold"
.Color = RGB(255, 0, 0)
.Color = vbRed
End With
Next
End Sub

Gruß
Jochen
Anzeige
AW: Einzelne Wörter in Zelle markieren
14.12.2020 14:54:26
HomoFaber
Hallo Jochen,
Vielen Dank für deine Antwort.
Wenn sich der Text entsprechend in Spalte 11 und von Zeile 2 bis Zeile 600 befinden würde - wie müsste ich das dann anpassen?
Ich kann die Formel leider nicht lesen...
Vielen dDank!
AW: Einzelne Wörter in Zelle markieren
14.12.2020 15:12:02
JoWE

Sub test()
sb = "dick"
l = Len(sb)
For ze = 2 To 600
t = InStr(1, Cells(ze, 11), "dick")
With Cells(ze, 1).Characters(Start:=t, Length:=l).Font
.FontStyle = "Bold"
'.Color = RGB(255, 0, 0)
.Color = vbRed
End With
Next
End Sub

AW: Einzelne Wörter in Zelle markieren
14.12.2020 15:21:17
HomoFaber
Hallo Jochen,
Damit werden die ersten 11 Ziffern in Spalte A jeweils dick und rot geschrieben, aber das nicht die Spalte 11 in den Zeilen 2 bis 600 nach entsprechenden Keyword durchsucht...
Anzeige
AW: Einzelne Wörter in Zelle markieren
14.12.2020 15:53:24
JoWE
ja stimmt, kleiner Fehler:
Sub test()
sb = "dick"
l = Len(sb)
For ze = 2 To 600
t = InStr(1, Cells(ze, 11), "dick")
With Cells(ze, 11).Characters(Start:=t, Length:=l).Font
.FontStyle = "Bold"
'.Color = RGB(255, 0, 0)
.Color = vbRed
End With
Next
End Sub
Sorry
Jochen
AW: Einzelne Wörter in Zelle markieren
14.12.2020 14:55:11
HomoFaber
Hallo Jochen,
Vielen Dank für deine Antwort.
Wenn sich der Text entsprechend in Spalte 11 und von Zeile 2 bis Zeile 600 befinden würde - wie müsste ich das dann anpassen?
Ich kann die Formel leider nicht lesen...
Vielen dDank!

123 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige