Tartalomjegyzék
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 SubDupliká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 SubHogyan 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:
- Nyissa meg azt a munkafüzetet, amelyben a duplikációkat szeretné kiemelni.
- Nyomja meg az Alt + F11 billentyűkombinációt a Visual Basic szerkesztő megnyitásához.
- A bal oldali ablaktáblán kattintson a jobb gombbal a ThisWorkbook és válassza a Beillesztés > Modul a kontextusmenüből.
- Illessze be a kódot a Kód ablakba.
- 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:
- 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.
- Nyomja meg az Alt + F8 billentyűkombinációt.
- Válassza ki a kívánt makrót, és kattintson a Fuss .
- 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)