Enhavtabelo
La lernilo montras kiel reliefigi duplikatajn vortojn aŭ tekstajn ŝnurojn ene de ĉelo uzante VBA.
Excel Kondiĉa Formatado ebligas reliefigi duplikatojn laŭ ĉiuj manieroj, kiujn vi povas pensi: kun aŭ sen unuaj okazoj, en unuopa kolumno aŭ pluraj kolumnoj, sinsekvaj duplikataj ĉeloj kaj tutaj vicoj bazitaj sur identaj valoroj en ŝlosila kolumno. Sed, kiel kutime, ekzistas "sed". Kondiĉaj formatreguloj funkcias ĉe ĉela nivelo dum vi eble volas reliefigi duplikatan tekston anstataŭ tutajn ĉelojn. Ĉi tio povas esti farita nur per makrooj. Eĉ se vi ne havas sperton pri VBA, bonvolu ne rapidi fermi ĉi tiun paĝon. Ĉi tie, vi trovos uzeblajn kod-ekzemplojn kaj la detalajn instrukciojn pri kiel uzi ilin en viaj laborfolioj.
Elstarigu duplikatajn vortojn en ĉelo ignorante tekston
Ĉi tiu ekzemplo montras kiel ombrigi duplikatajn vortojn aŭ tekstajn ŝnurojn ene de ĉelo en ruĝa tiparo kiel montrite en la bildo sube. Bonvolu rimarki, ke minuskloj kaj majusklaj literoj estas traktataj kiel la samaj signoj. Ekzemple, oranĝa , ORANGA kaj Oranĝa estas konsiderataj kiel la sama vorto.
La La kodo de makroo estas jena:
Public Sub HighlightDupesCaseInsensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Enigu la limigilon kiu apartigas valorojn en ĉelo" , "Limigilo" , ", " ) Por Ĉiu Ĉelo EnApliko.Selektado Voko HighlightDupeWordsInCell (Ĉelo, Limigilo, False ) Sekva Fino Sub Sub HighlightDupeWordsInCell (Ĉelo Kiel Gamo, Laŭvola Limilo As String = " " , Optional CaseSensitive As Bulea = True ) Malklara teksto As String Malklara vorto () Kiel Ŝnuro Dim vorto String Dim wordIndex, matchCount, positionInText As Integer If CaseSensitive Tiam vortoj = Split(Cell.Value, Limiter) Alie vortoj = Split(LCase(Cell.Value), Limiter) End If For wordIndex = LBound (vortoj) Al UBound (vortoj) - 1 vorto = vortoj (vortoIndekso) matchCount = 0 For nextWordIndex = wordIndex + 1 Al UBound (vortoj) Se vorto = vortoj (nextWordIndex) Tiam matchCount = matchCount + 1 End If Next nextWordIndex If matchCount > 0 Then text = "" For Index = LBound (vortoj) To UBound (words) text = teksto & vortoj (Indekso) Se (vortoj (Indekso) = vorto) Tiam Ĉelo.Carakteroj (Len(teksto) - Len(vorto) + 1, Len(vorto)).Tiparo.Koloro = vbRuĝa Fino Se teksto = teksto & Limigilo Sekva Fino Se Sekva vortoIndekso Fino SubElstarigu duplikatan tekston en ĉelo majuskle-distinta
En la plej multaj situacioj, ni emas ignori la literan majuskon kiam oni laboras kun tekstaj eniroj en Excel. En certaj cirkonstancoj, tamen, la teksta kazo ja gravas. Ekzemple, se vi traktas identigilojn, pasvortojn aŭ aliajn rekordojn de tiu speco, la ĉenoj kiel 1-AA , 1-aa kaj 1-Aa ne estas duplikatoj kaj ne devus esti emfazitaj:
En ĉi tiu kazo,uzu la sekvan version de la kodo:
Public Sub HighlightDupesCaseSensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Enigu la limigilon kiu apartigas valorojn en ĉelo" , "Limigilo" , ", " ) Por Ĉiu Ĉelo En Apliko.Selektado Voko HighlightDupeWordsInCell (Ĉelo, Limigilo, Vera ) Sekva Fino Sub Sub HighlightDupeWordsInCell (Ĉelo Kiel Gamo, Laŭvola Limilo As String = " " , Optional CaseSensitive As Bulea = True ) Malklara teksto As String Dim vortoj () Kiel String vorto As String Dim wordIndex, matchCount, positionInText As Integer If CaseSensitive Tiam vortoj = Split(Cell.Value, Limiter) Alie vortoj = Split(LCase(Cell.Value), Limiter) End If For wordIndex = LBound (vortoj) Al UBound ( vortoj) - 1 vorto = vortoj (vortoIndekso) matchCount = 0 Por sekvaVortIndekso = wordIndex + 1 Al UBound (vortoj) Se vorto = vortoj (nextWordIndex) Tiam matchCount = matchCount + 1 End If Sekva sekvaWordIndex Se matchCount > 0 Then text = "" For Index = LBound (vortoj) To UBound (words) text = teksto & vortoj (Indekso) Se (vortoj (Indekso) = vorto) Tiam Ĉelo.Carakteroj (Len(teksto) - Len(vorto) + 1, Len(vorto)).Tiparo.Koloro = vbRuĝa Fino Se teksto = teksto & Limigilo Sekva Fino Se Sekva vortoIndekso Fino SubKiel uzi la makroojn por reliefigi duplikatajn vortojn en Excel
Se vi estas komencanto en uzado de VBA, la subaj paŝo post paŝo instrukcioj komforte gvidos vin tra . Spertaj uzantoj povassimple elektu la elŝutan ligilon kaj preterlasu la reston :)
Aldonu la kodon al via laborlibro
Vi komencas enmeti la kodon de la makroo en vian Excel-libron. Jen kiel:
- Malfermu la laborlibron kie vi volas reliefigi dupojn.
- Premu Alt + F11 por malfermi la Visual Basic Editor.
- Sur la maldekstra panelo, dekstre alklaku ThisWorkbook kaj elektu Enmeti > Modulo el la kunteksta menuo.
- Algluu la kodon en la Kodo-fenestro.
- Por konservi la makroon por estonta uzo, nepre konservu vian laborlibron kiel makro-ebligita .xlsm-dosiero.
Alternative, vi povas elŝuti nian ekzemplan laborlibron kaj ruli la makroon de tie. La ekzempla laborlibro enhavas la jenajn makroojn:
- HighlightDupesCaseSensitive - ombroj duplikataj ene de ĉelo ignorante la literon.
- HighlightDupesCaseSensitive - elstaraĵoj dupoj en ĉelo konsiderante la majuskon.
Por pliaj informoj, bonvolu vidi Kiel enmeti VBA-kodon en Excel.
Ruli la makroon
Kun la kodo aldonita al via propra laborlibro aŭ nia specimena dosiero elŝutita kaj malfermita, rulu la makroon tiamaniere:
- En via laborfolio, elektu la ĉelojn, kie vi volas reliefigi duplikatan tekston. Ĉi tio povas esti unu intervalo aŭ pluraj ne apudaj intervaloj.
- Premu Alt + F8 .
- Elektu la interesan makroon kaj alklaku Run .
- La makroo petos vin specifi la limigilonkiu apartigas la valorojn en la elektitaj ĉeloj. La antaŭfiksita limigilo (komo kaj spaco en nia kazo) aperos aŭtomate en la eniga skatolo. Depende de viaj bezonoj, vi povas lasi la defaŭltan limigilon aŭ tajpi alian, kaj poste alklaki OK.
Momenton poste, ĉiuj duobligitaj ĉenoj en la elektita. ĉeloj estos ombritaj en ruĝa koloro (aŭ kia ajn tiparokoloro estas agordita en via kodo).
Konsileto. Por rapide forigi duplikatojn ene de ĉelo, vi povas uzi Forigi Duplikatajn Subŝnurojn, unu el multaj tempoŝparaj iloj inkluzivitaj en nia Ultimate Suite.
Kiel ĝustigi la kodon laŭ viaj bezonoj
Per ĉi tiuj uznotoj kaj la tre baza scio pri VBA (aŭ simple sekvante la subajn instrukciojn), vi povas facile modifi la kodojn laŭ viaj bezonoj.
Metu sur la saman modulon
Kiel vi povas rimarki, ambaŭ makrooj ( HighlightDupesCaseSensitive kaj HighlightDupesCaseInsensitive ) nomas la HighlightDupeWordsInCell funkcion. La diferenco inter la du supraj makrooj estas nur en la 3-a parametro (Usklesentema) transdonita al la menciita funkcio.
Por uskle-distinga serĉo, ĝi estas agordita al VERA:
Call HighlightDupeWordsInCell(Cell, Delimiter, True)
Por majusksentema serĉo, ĝi estas agordita al FALSA:
Call HighlightDupeWordsInCell(Cell, Delimiter, False)
Por ke la makrooj funkciu, la kodo de la funkcio HighlightDupeWordsInCell devas esti metita sur la sama modulo kiel lamakrooj.
Limigilo
Kiam ruliĝas, la makroo petos vin specifi la limigilon, kiu apartigas vortojn/ŝnurojn en la elektitaj ĉeloj. La defaŭlta limigilo estas komo kaj spaco (", ") kaj ĝi estas antaŭfiksita en la Enigkesto:
Delimiter = InputBox("Specify the delimiter that separates values in a cell", "Delimiter", ", ")
En via kodo, vi rajtas uzi ajnan alian(j)n signojn. kiel la antaŭdifinita limigilo.
Koloro
Defaŭlte, la funkcio HighlightDupeWordsInCell ombrigas duobliĝas en ruĝa tiparo. La koloro estas difinita en ĉi tiu linio:
Cell.Characters(positionInText, Len(word)).Font.Color = vbRed
Ĉi tie, vbRed estas speco de VBA-kolorkonstanto. Por montri dupojn en malsama koloro, vi povas anstataŭigi vbRed per alia konstanto kiel vbGreen, vbYellow, vbBlue, ktp. T la listo de subtenataj kolorkonstantoj troviĝas ĉi tie.
Tio estas. kiel reliefigi duobligitajn vortojn en Excel-ĉeloj. Mi dankas vin pro legado kaj esperas vidi vin en nia blogo venontsemajne!
Haveblaj elŝutoj
Kodoekzemploj por reliefigi duplikatojn en ĉelo (.xlsm-dosiero)
Pinfina Suite 14-taga plenfunkcia versio (.exe dosiero)