Jak podświetlić zduplikowany tekst / słowa w komórce programu Excel

  • Udostępnij To
Michael Brown

Samouczek pokazuje, jak podświetlić zduplikowane słowa lub ciągi tekstowe wewnątrz komórki za pomocą VBA.

Formatowanie warunkowe w Excelu umożliwia wyróżnianie duplikatów w każdy możliwy sposób: z pierwszym wystąpieniem lub bez, w jednej kolumnie lub wielu kolumnach, kolejnych zduplikowanych komórkach oraz całych wierszach na podstawie identycznych wartości w kluczowej kolumnie. Ale, jak zwykle, jest pewne "ale". Reguły formatowania warunkowego działają na poziomie komórki, podczas gdy możesz chcieć wyróżnić duplikatytekstu, a nie całych komórek. Można to zrobić tylko za pomocą makr. Nawet jeśli nie masz doświadczenia z VBA, nie spiesz się z zamknięciem tej strony. Znajdziesz tu gotowe przykłady kodów i szczegółowe instrukcje, jak je wykorzystać w swoich arkuszach.

    Podświetlanie zduplikowanych słów w komórce, ignorując wielkość liter w tekście

    Ten przykład pokazuje, jak zacieniować zduplikowane słowa lub ciągi tekstowe w obrębie komórki czerwonym kolorem czcionki, jak pokazano na poniższym obrazku. Proszę zauważyć, że małe i duże litery są traktowane jako te same znaki. Na przykład, pomarańczowy , ORANGE oraz Orange są uważane za to samo słowo.

    Kod makra wygląda następująco:

    Public Sub HighlightDupesCaseInsensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Wprowadź delimiter oddzielający wartości w komórce" , "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 As.Boolean = 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 Sub

    Podkreślanie zduplikowanego tekstu w komórce z uwzględnieniem wielkości liter

    W większości sytuacji mamy tendencję do ignorowania wielkości liter podczas pracy z wpisami tekstowymi w Excelu. W pewnych okolicznościach jednak wielkość liter w tekście ma znaczenie. Na przykład, jeśli masz do czynienia z identyfikatorami, hasłami lub innymi rekordami tego typu, ciągi takie jak np. 1-AA , 1-aa oraz 1-Aa nie są duplikatami i nie powinny być wyróżnione:

    W takim przypadku należy użyć następującej wersji kodu:

    Public Sub HighlightDupesCaseSensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Wprowadź delimiter oddzielający wartości w komórce" , "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 As.Boolean = 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 Sub

    Jak używać makr do podświetlania zduplikowanych słów w Excelu

    Jeśli jesteś początkującym użytkownikiem VBA, poniższe instrukcje krok po kroku wygodnie poprowadzą Cię przez ten proces. Doświadczeni użytkownicy mogą po prostu wybrać link do pobrania i pominąć resztę :)

    Dodaj kod do swojego skoroszytu

    Zaczynasz od wstawienia kodu makra do swojego skoroszytu Excela, oto jak:

    1. Otwórz skoroszyt, w którym chcesz zaznaczyć duplikaty.
    2. Naciśnij Alt + F11, aby otworzyć edytor Visual Basic.
    3. W lewym panelu kliknij prawym przyciskiem myszy ThisWorkbook i wybrać Wkładka > Moduł z menu kontekstowego.
    4. Wklejenie kodu w oknie Code.
    5. Aby zachować makro do przyszłego użytku, pamiętaj, aby zapisać swój skoroszyt jako plik .xlsm z obsługą makr.

    Alternatywnie można pobrać nasz przykładowy skoroszyt i z niego uruchomić makro. Przykładowy skoroszyt zawiera następujące makra:

    • HighlightDupesCaseInsensitive - wyłuskuje duplikaty wewnątrz komórki ignorując wielkość liter.
    • HighlightDupesCaseSensitive - podświetla duplikaty w komórce z uwzględnieniem wielkości liter.

    Więcej informacji znajdziesz w rozdziale Jak wstawić kod VBA w programie Excel.

    Uruchom makro

    Mając dodany kod do własnego skoroszytu lub pobrany i otwarty nasz przykładowy plik, uruchom makro w ten sposób:

    1. W swoim arkuszu wybierz komórki, w których chcesz podświetlić zduplikowany tekst. Może to być jeden zakres lub wiele niesąsiadujących zakresów.
    2. Naciśnij Alt + F8 .
    3. Wybierz interesujące Cię makro i kliknij Uruchom .

    4. Makro poprosi Cię o określenie delimitera oddzielającego wartości w wybranych komórkach. Wstępnie ustawiony delimiter (w naszym przypadku przecinek i spacja) pojawi się w polu wejściowym automatycznie. W zależności od potrzeb możesz pozostawić domyślny delimiter lub wpisać inny, a następnie kliknąć OK.

    Chwilę później wszystkie zduplikowane ciągi znaków w wybranych komórkach zostaną zacieniowane czerwonym kolorem (lub jakimkolwiek kolorem czcionki ustawionym w Twoim kodzie).

    Wskazówka. Aby szybko usuwać duplikaty w obrębie komórki, można skorzystać z funkcji Remove Duplicate Substrings, jednego z wielu narzędzi oszczędzających czas, zawartych w naszym pakiecie Ultimate Suite.

    Jak dostosować kod do swoich potrzeb

    Mając te uwagi i podstawową znajomość VBA (lub po prostu ściśle przestrzegając poniższych instrukcji), możesz łatwo zmodyfikować kody dokładnie według swoich potrzeb.

    Umieścić na tym samym module

    Jak można zauważyć, oba makra ( HighlightDupesCaseSensitive oraz HighlightDupesCaseInsensitive ) wywołują. HighlightDupeWordsInCell Różnica między dwoma powyższymi makrami polega jedynie na 3. parametrze (CaseSensitive) przekazywanym do wspomnianej funkcji.

    W przypadku wyszukiwania z uwzględnieniem wielkości liter jest ustawiona na TRUE:

    Wywołaj HighlightDupeWordsInCell(Cell, Delimiter, True)

    Dla wyszukiwania bez rozróżniania wielkości liter jest ustawiona na FALSE:

    Call HighlightDupeWordsInCell(Cell, Delimiter, False)

    Aby makra działały, kod z HighlightDupeWordsInCell Funkcja musi być umieszczona w tym samym module co makra.

    Delimiter

    Po uruchomieniu makro poprosi o podanie separatora oddzielającego słowa/ciągi w wybranych komórkach. Domyślnym separatorem jest przecinek i spacja (", ") i jest on wstępnie ustawiony w InputBox:

    Delimiter = InputBox("Podaj delimiter oddzielający wartości w komórce", "Delimiter", ", ")

    W swoim kodzie możesz swobodnie używać dowolnego innego znaku (znaków) jako predefiniowanego ogranicznika.

    Kolor

    Domyślnie HighlightDupeWordsInCell Funkcja cieniuje duplikaty czerwonym kolorem czcionki. Kolor jest zdefiniowany w tej linii:

    Cell.Characters(positionInText, Len(word)).Font.Color = vbRed

    Tutaj vbRed jest rodzajem stałej koloru VBA. Aby wyświetlić duplikaty w innym kolorze, można zastąpić vbRed inną stałą, np. vbGreen, vbYellow, vbBlue, itd. T Lista obsługiwanych stałych kolorów znajduje się tutaj.

    Oto jak podświetlić zduplikowane słowa w komórkach Excela. Dziękuję za przeczytanie i mam nadzieję, że zobaczymy się na naszym blogu za tydzień!

    Dostępne pliki do pobrania

    Przykłady kodu do podświetlania duplikatów w komórce (plik .xlsm)

    Ultimate Suite 14-dniowa w pełni funkcjonalna wersja (plik .exe)

    Michael Brown jest oddanym entuzjastą technologii z pasją do upraszczania złożonych procesów za pomocą narzędzi programowych. Dzięki ponad dziesięcioletniemu doświadczeniu w branży technologicznej doskonalił swoje umiejętności w programach Microsoft Excel i Outlook, a także w Arkuszach i Dokumentach Google. Blog Michaela jest poświęcony dzieleniu się swoją wiedzą i doświadczeniem z innymi, dostarczając łatwych do zastosowania wskazówek i samouczków w celu poprawy produktywności i wydajności. Niezależnie od tego, czy jesteś doświadczonym profesjonalistą, czy początkującym, blog Michaela oferuje cenne spostrzeżenia i praktyczne porady dotyczące maksymalnego wykorzystania tych niezbędnych narzędzi programowych.