Inhaltsverzeichnis
Das Tutorial zeigt, wie Sie mit VBA doppelte Wörter oder Textstrings in einer Zelle hervorheben können.
Mit der bedingten Formatierung von Excel können Sie Duplikate auf jede erdenkliche Art und Weise hervorheben: mit oder ohne 1. Vorkommen, in einer einzelnen Spalte oder in mehreren Spalten, aufeinanderfolgende doppelte Zellen und ganze Zeilen auf der Grundlage identischer Werte in einer Schlüsselspalte. Aber, wie üblich, gibt es ein "aber". Die bedingten Formatierungsregeln funktionieren auf Zellebene, während Sie vielleicht doppelteDies ist nur mit Makros möglich. Auch wenn Sie noch keine Erfahrung mit VBA haben, sollten Sie diese Seite nicht überstürzt schließen. Hier finden Sie fertige Code-Beispiele und eine ausführliche Anleitung, wie Sie diese in Ihren Arbeitsblättern verwenden können.
Hervorheben doppelter Wörter in einer Zelle ohne Berücksichtigung der Groß- und Kleinschreibung
Dieses Beispiel zeigt, wie doppelte Wörter oder Textstrings innerhalb einer Zelle in roter Schriftfarbe schattiert werden können, wie in der folgenden Abbildung gezeigt. Bitte beachten Sie, dass Klein- und Großbuchstaben als gleiche Zeichen behandelt werden. Beispiel, orange , ORANGE und Orange werden als dasselbe Wort angesehen.
Der Code des Makros lautet wie folgt:
Public Sub HighlightDupesCaseInsensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Geben Sie das Trennzeichen ein, das Werte in einer Zelle trennt" , "Delimiter" , ", " ) For Each Cell In Application.Selection Call HighlightDupeWordsInCell(Cell, Delimiter, False ) Next End Sub Sub HighlightDupeWordsInCell(Cell As Range, Optional Delimiter As String = " " , Optional CaseSensitive AsBoolean = True ) Dim text As String Dim words() As String Dim word As String Dim wordIndex, matchCount, positionInText As Integer If CaseSensitive Then words = Split(Cell.Value, Delimiter) Else words = Split(LCase(Cell.Value), Delimiter) End If For wordIndex = LBound (words) To UBound (words) - 1 word = words(wordIndex) matchCount = 0 For nextWordIndex = wordIndex + 1 To UBound (words) If word =words(nextWordIndex) Then matchCount = matchCount + 1 End If Next nextWordIndex If matchCount> 0 Then text = "" For Index = LBound (words) To UBound (words) text = text & words(Index) If (words(Index) = word) Then Cell.Characters(Len(text) - Len(word) + 1, Len(word)).Font.Color = vbRed End If text = text & Delimiter Next End If Next wordIndex End SubMarkieren von doppeltem Text in einer Zelle unter Berücksichtigung der Groß-/Kleinschreibung
In den meisten Fällen ignorieren wir die Groß- und Kleinschreibung, wenn wir mit Texteinträgen in Excel arbeiten. Unter bestimmten Umständen spielt die Groß- und Kleinschreibung jedoch eine Rolle. Wenn Sie zum Beispiel mit IDs, Kennwörtern oder anderen Datensätzen dieser Art arbeiten, sind die Zeichenfolgen wie 1-AA , 1-aa und 1-Aa sind keine Duplikate und sollten nicht hervorgehoben werden:
Verwenden Sie in diesem Fall die folgende Version des Codes:
Public Sub HighlightDupesCaseSensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Geben Sie das Trennzeichen ein, das Werte in einer Zelle trennt" , "Delimiter" , ", " ) For Each Cell In Application.Selection Call HighlightDupeWordsInCell(Cell, Delimiter, True ) Next End Sub Sub HighlightDupeWordsInCell(Cell As Range, Optional Delimiter As String = " " , Optional CaseSensitive AsBoolean = True ) Dim text As String Dim words() As String Dim word As String Dim wordIndex, matchCount, positionInText As Integer If CaseSensitive Then words = Split(Cell.Value, Delimiter) Else words = Split(LCase(Cell.Value), Delimiter) End If For wordIndex = LBound (words) To UBound (words) - 1 word = words(wordIndex) matchCount = 0 For nextWordIndex = wordIndex + 1 To UBound (words) If word =words(nextWordIndex) Then matchCount = matchCount + 1 End If Next nextWordIndex If matchCount> 0 Then text = "" For Index = LBound (words) To UBound (words) text = text & words(Index) If (words(Index) = word) Then Cell.Characters(Len(text) - Len(word) + 1, Len(word)).Font.Color = vbRed End If text = text & Delimiter Next End If Next wordIndex End SubVerwendung von Makros zum Hervorheben doppelter Wörter in Excel
Wenn Sie ein Anfänger in der Verwendung von VBA sind, wird die folgende Schritt-für-Schritt-Anleitung Sie bequem durch den Vorgang führen. Erfahrene Benutzer können einfach den Download-Link auswählen und den Rest überspringen :)
Fügen Sie den Code zu Ihrer Arbeitsmappe hinzu
Sie beginnen damit, den Code des Makros in Ihre Excel-Arbeitsmappe einzufügen, und zwar folgendermaßen
- Öffnen Sie die Arbeitsmappe, in der Sie Duplikate markieren möchten.
- Drücken Sie Alt + F11, um den Visual Basic Editor zu öffnen.
- Klicken Sie im linken Fensterbereich mit der rechten Maustaste auf DiesesArbeitsbuch und wählen Sie einfügen. > Modul aus dem Kontextmenü.
- Fügen Sie den Code in das Codefenster ein.
- Um das Makro für die spätere Verwendung aufzubewahren, müssen Sie Ihre Arbeitsmappe als makroaktivierte .xlsm-Datei speichern.
Alternativ können Sie auch unsere Beispiel-Arbeitsmappe herunterladen und das Makro von dort aus ausführen. Die Beispiel-Arbeitsmappe enthält die folgenden Makros:
- HighlightDupesCaseInsensitive - schattiert Duplikate innerhalb einer Zelle ohne Berücksichtigung der Groß- und Kleinschreibung.
- HighlightDupesCaseSensitive - hebt Duplikate in einer Zelle unter Berücksichtigung der Groß- und Kleinschreibung hervor.
Weitere Informationen finden Sie unter Wie man VBA-Code in Excel einfügt.
Das Makro ausführen
Wenn Sie den Code in Ihre eigene Arbeitsmappe eingefügt oder unsere Beispieldatei heruntergeladen und geöffnet haben, führen Sie das Makro auf diese Weise aus:
- Wählen Sie in Ihrem Arbeitsblatt die Zellen aus, in denen Sie den doppelten Text hervorheben möchten. Dies kann ein Bereich oder mehrere nicht benachbarte Bereiche sein.
- Drücken Sie Alt + F8 .
- Wählen Sie das gewünschte Makro und klicken Sie auf ausführen. .
- Das Makro fordert Sie auf, das Trennzeichen anzugeben, das die Werte in den ausgewählten Zellen trennt. Das voreingestellte Trennzeichen (in unserem Fall ein Komma und ein Leerzeichen) erscheint automatisch im Eingabefeld. Je nach Bedarf können Sie das voreingestellte Trennzeichen belassen oder ein anderes eingeben und dann auf OK klicken.
Einen Moment später werden alle doppelten Zeichenfolgen in den ausgewählten Zellen rot schattiert (oder in der Schriftfarbe, die in Ihrem Code eingestellt ist).
Tipp: Um schnell Duplikate entfernen Innerhalb einer Zelle können Sie die Funktion Doppelte Teilstrings entfernen verwenden, eines der vielen zeitsparenden Tools, die in unserer Ultimate Suite enthalten sind.
Wie Sie den Code an Ihre Bedürfnisse anpassen
Mit diesen Verwendungshinweisen und den grundlegenden VBA-Kenntnissen (oder wenn Sie die nachstehenden Anweisungen genau befolgen) können Sie die Codes leicht an Ihre Bedürfnisse anpassen.
Auf das gleiche Modul setzen
Wie Sie vielleicht bemerken, sind beide Makros ( HighlightDupesCaseSensitive und HighlightDupesCaseInsensitive ) rufen die HighlightDupeWordsInCell Der Unterschied zwischen den beiden oben genannten Makros besteht nur im dritten Parameter (CaseSensitive), der an die genannte Funktion übergeben wird.
Bei der Suche nach Groß- und Kleinschreibung wird sie auf TRUE gesetzt:
Aufruf HighlightDupeWordsInCell(Cell, Delimiter, True)
Für die Suche ohne Berücksichtigung der Groß- und Kleinschreibung wird sie auf FALSE gesetzt:
Aufruf HighlightDupeWordsInCell(Cell, Delimiter, False)
Damit die Makros funktionieren, muss der Code der Datei HighlightDupeWordsInCell Funktion muss in demselben Modul wie die Makros platziert werden.
Begrenzungszeichen
Bei der Ausführung des Makros werden Sie aufgefordert, das Trennzeichen anzugeben, das die Wörter/Zeichenfolgen in den ausgewählten Zellen trennt. Das Standardtrennzeichen ist ein Komma und ein Leerzeichen (", ") und ist in der InputBox voreingestellt:
Delimiter = InputBox("Geben Sie das Trennzeichen an, das die Werte in einer Zelle trennt", "Delimiter", ", ")
In Ihrem Code können Sie beliebige andere Zeichen als vordefinierte Begrenzungszeichen verwenden.
Farbe
Standardmäßig wird die HighlightDupeWordsInCell schattiert Duplikate in roter Schriftfarbe. Die Farbe wird in dieser Zeile definiert:
Cell.Characters(positionInText, Len(Wort)).Font.Color = vbRed
Hier ist vbRed eine Art VBA-Farbkonstante. Um Duplikate in einer anderen Farbe anzuzeigen, können Sie vbRed durch eine andere Konstante wie vbGreen oder vbYellow ersetzen, vbBlue, usw. T ie Liste der unterstützten Farbkonstanten finden Sie hier.
So markieren Sie doppelte Wörter in Excel-Zellen. Ich danke Ihnen für die Lektüre und hoffe, Sie nächste Woche in unserem Blog begrüßen zu dürfen!
Verfügbare Downloads
Code-Beispiele zum Hervorheben von Duplikaten in einer Zelle (.xlsm-Datei)
Ultimate Suite 14 Tage voll funktionsfähige Version (.exe-Datei)