Hogyan lehet kiemelni a duplikált szöveget / szavakat az Excel-cellában?

  • Ossza Meg Ezt
Michael Brown

A bemutató azt mutatja be, hogyan lehet egy cellán belül duplikált szavakat vagy szöveges karakterláncokat kiemelni a VBA segítségével.

Az Excel feltételes formázás lehetővé teszi a duplikátumok kiemelését minden lehetséges módon: 1. előfordulással vagy anélkül, egyetlen oszlopban vagy több oszlopban, egymást követő duplikált cellákban és egész sorokban egy kulcsoszlop azonos értékei alapján. De, mint mindig, van egy "de". A feltételes formázási szabályok cellaszinten működnek, míg a duplikátumok kiemelését lehet, hogyszöveget, nem pedig egész cellákat. Ezt csak makrókkal lehet megtenni. Még ha nincs is tapasztalata a VBA-val, ne siessen bezárni ezt az oldalt. Itt talál kész kódpéldákat és részletes utasításokat arra vonatkozóan, hogyan használhatja ezeket a munkalapjain.

    Kiemeli a duplikált szavakat egy cellában, figyelmen kívül hagyva a szöveg esetét

    Ez a példa azt mutatja, hogyan lehet egy cellán belül a duplikált szavakat vagy szövegrészleteket piros betűszínnel árnyalni az alábbi képen látható módon. Vegye figyelembe, hogy a kis- és nagybetűket azonos karakterként kezeli. Például, narancs , ORANGE és Narancs ugyanazt a szót jelentik.

    A makró kódja a következő:

    Public Sub HighlightDupesCaseInsensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Enter the delimiter that separates values in a cell" , "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 Sub

    Duplikált szöveg kiemelése egy cellában nagy- és kisbetű-érzékenységgel

    A legtöbb helyzetben hajlamosak vagyunk figyelmen kívül hagyni a betűket, amikor szöveges bejegyzésekkel dolgozunk az Excelben. Bizonyos körülmények között azonban a szöveg nagy- és kisbetűi számítanak. Például, ha azonosítókkal, jelszavakkal vagy más ilyen jellegű rekordokkal dolgozunk, az olyan karakterláncok, mint a 1-AA , 1-aa és 1-Aa nem duplikálódnak, és nem kell őket kiemelni:

    Ebben az esetben használja a kód következő változatát:

    Public Sub HighlightDupesCaseSensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Enter the delimiter that separates values in a cell" , "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 Sub

    Hogyan használhatja a makrókat a duplikált szavak kiemelésére az Excelben?

    Ha Ön kezdő a VBA használatában, az alábbi lépésről-lépésre haladó utasítások kényelmesen végigvezetik Önt. A tapasztalt felhasználók csak a letöltési linket választják, a többit pedig kihagyják :)

    Adja hozzá a kódot a munkafüzethez

    Kezdje azzal, hogy beszúrja a makró kódját az Excel munkafüzetébe. Íme, hogyan:

    1. Nyissa meg azt a munkafüzetet, amelyben a duplikációkat szeretné kiemelni.
    2. Nyomja meg az Alt + F11 billentyűkombinációt a Visual Basic szerkesztő megnyitásához.
    3. A bal oldali ablaktáblán kattintson a jobb gombbal a ThisWorkbook és válassza a Beillesztés > Modul a kontextusmenüből.
    4. Illessze be a kódot a Kód ablakba.
    5. A makró későbbi használatához mindenképpen mentse el a munkafüzetet makrókkal támogatott .xlsm fájlként.

    Alternatívaként letöltheti a minta munkafüzetünket, és onnan futtathatja a makrót. A minta munkafüzet a következő makrókat tartalmazza:

    • HighlightDupesCaseInsensitive - árnyalja a duplikátumokat egy cellán belül, figyelmen kívül hagyva a betűket.
    • HighlightDupesCaseSensitive - kiemeli a duplikációkat egy cellában, figyelembe véve a betűhüvelyeket.

    További információért lásd: Hogyan illesszünk be VBA-kódot az Excelbe.

    A makró futtatása

    A saját munkafüzetéhez hozzáadott kóddal vagy a letöltött és megnyitott mintafájlunkkal futtassa a makrót így:

    1. Jelölje ki a munkalapon azokat a cellákat, amelyekben a duplikált szöveget szeretné kiemelni. Ez lehet egy tartomány vagy több nem szomszédos tartomány.
    2. Nyomja meg az Alt + F8 billentyűkombinációt.
    3. Válassza ki a kívánt makrót, és kattintson a Fuss .

    4. A makró megkéri, hogy adja meg a kijelölt cellákban lévő értékeket elválasztó elválasztójelet. Az előre beállított elválasztójel (esetünkben egy vessző és egy szóköz) automatikusan megjelenik a beviteli mezőben. Az igényeitől függően elhagyhatja az alapértelmezett elválasztójelet, vagy beírhat egy másikat, majd kattintson az OK gombra.

    Egy pillanattal később a kijelölt cellákban lévő összes duplikált karakterlánc piros színű lesz (vagy bármilyen betűszínt beállított a kódban).

    Tipp. Gyorsan duplikátumok eltávolítása egy cellán belül, használhatja a Duplikált részláncok eltávolítása eszközt, amely egyike az Ultimate Suite számos időtakarékos eszközének.

    Hogyan igazítsuk a kódot az Ön igényeihez

    Ezekkel a használati megjegyzésekkel és a VBA alapszintű ismereteivel (vagy csak az alábbi utasítások pontos követésével) könnyen módosíthatja a kódokat az igényeinek megfelelően.

    Ugyanarra a modulra helyezni

    Amint azt észreveheti, mindkét makró ( HighlightDupesCaseSensitive és HighlightDupesCaseInsensitive ) hívja a HighlightDupeWordsInCell A különbség a fenti két makró között csak a 3. paraméterben (CaseSensitive) van, amelyet az említett függvénynek adunk át.

    Nagy- és kisbetű-érzékeny keresés esetén TRUE értékre van állítva:

    Call HighlightDupeWordsInCell(Cell, Elhatároló, True)

    Nagy- és kisbetű-érzékeny keresés esetén FALSE értékre van állítva:

    Call HighlightDupeWordsInCell(Cell, Elhatároló, False)

    Ahhoz, hogy a makrók működjenek, a kód a HighlightDupeWordsInCell függvényt ugyanabban a modulban kell elhelyezni, mint a makrókat.

    Határolójel

    A makró futtatásakor a makró megkérdezi, hogy milyen elválasztójelet használjon a kijelölt cellákban lévő szavak/sorok elválasztására. Az alapértelmezett elválasztójel a vessző és a szóköz (", "), és ez előre be van állítva az InputBox-ban:

    Delimiter = InputBox("Adja meg az értékeket a cellában elválasztó elválasztójelet", "Delimiter", ", ")

    A kódban szabadon használhat bármilyen más karaktert vagy karaktereket az előre definiált elválasztójelként.

    Színes

    Alapértelmezés szerint a HighlightDupeWordsInCell függvény a duplikátumokat piros betűszínnel árnyalja. A színt ebben a sorban határozzuk meg:

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

    Itt a vbRed egyfajta VBA színkonstans. Ha a duplikációkat más színben szeretné megjeleníteni, a vbRed helyettesítheti egy másik konstanssal, például vbGreen, vbYellow, vbBlue, stb. T A támogatott színállandók listája itt található.

    Így lehet kiemelni a duplikált szavakat az Excel-cellákban. Köszönöm, hogy elolvastad, és remélem, jövő héten találkozunk a blogon!

    Elérhető letöltések

    Kódpéldák a duplikátumok kiemelésére egy cellában (.xlsm fájl)

    Ultimate Suite 14 napos, teljesen funkcionális verzió (.exe fájl)

    Michael Brown elkötelezett technológiai rajongó, aki szenvedélyesen egyszerűsíti a bonyolult folyamatokat szoftvereszközök segítségével. A technológiai iparban szerzett több mint egy évtizedes tapasztalatával a Microsoft Excel és az Outlook, valamint a Google Táblázatok és a Dokumentumok területén fejlesztette tudását. Michael blogja célja, hogy megossza tudását és szakértelmét másokkal, könnyen követhető tippeket és oktatóanyagokat adva a termelékenység és a hatékonyság javításához. Akár tapasztalt szakember, akár kezdő, Michael blogja értékes betekintést és gyakorlati tanácsokat kínál, amelyek segítségével a legtöbbet hozhatja ki ezekből az alapvető szoftvereszközökből.