Talaan ng nilalaman
Ipinapakita ng tutorial kung paano i-highlight ang mga duplicate na salita o mga string ng text sa loob ng isang cell gamit ang VBA.
Ginagawa ng Excel Conditional Formatting na i-highlight ang mga duplicate sa lahat ng posibleng paraan na maiisip mo: mayroon man o wala ang mga unang paglitaw, sa isang column o maramihang column, magkakasunod na duplicate na cell, at buong row batay sa magkaparehong value sa isang key column. Pero, as usual, may "pero". Gumagana ang mga panuntunan sa pag-format ng kondisyon sa antas ng cell habang maaaring gusto mong i-highlight ang duplicate na text sa halip na ang buong mga cell. Magagawa lang ito sa mga macro. Kahit na wala kang anumang karanasan sa VBA, mangyaring huwag magmadali upang isara ang pahinang ito. Dito, makikita mo ang mga halimbawa ng code na handa nang gamitin at ang mga detalyadong tagubilin kung paano gamitin ang mga ito sa iyong mga worksheet.
I-highlight ang mga duplicate na salita sa isang cell na hindi pinapansin ang text case
Ipinapakita ng halimbawang ito kung paano i-shade ang mga duplicate na salita o mga string ng text sa loob ng isang cell sa pulang kulay ng font tulad ng ipinapakita sa larawan sa ibaba. Pakipansin na ang mga maliliit at malalaking titik ay itinuturing bilang parehong mga character. Halimbawa, ang orange , ORANGE at Orange ay itinuturing na parehong salita.
Ang ang code ng macro ay ang mga sumusunod:
Public Sub HighlightDupesCaseInsensitive() Dim Cell As Range Dim Delimiter Bilang String Delimiter = InputBox( "Ipasok ang delimiter na naghihiwalay ng mga value sa isang cell" , "Delimiter" , ", " ) Para sa Bawat Cell InApplication.Selection Call HighlightDupeWordsInCell(Cell, Delimiter, False ) Susunod na End Sub HighlightDupeWordsInCell(Cell Bilang Saklaw, Opsyonal na Delimiter Bilang String = " " , Opsyonal na CaseSensitive Bilang Boolean = True ) Dim text Bilang String Dim salita() Bilang String Dim salita() Bilang String Dim salita String Dim wordIndex, matchCount, positionInText As Integer If CaseSensitive Then words = Split(Cell.Value, Delimiter) Iba pang salita = Split(LCase(Cell.Value), Delimiter) End If For wordIndex = LBound (words) To UBound (words) - 1 salita = salita(wordIndex) matchCount = 0 Para sa nextWordIndex = wordIndex + 1 Upang UBound (mga salita) Kung salita = salita(nextWordIndex) Pagkatapos matchCount = matchCount + 1 End If Next nextWordIndex Kung matchCount > 0 Pagkatapos ay text = "" Para sa Index = LBound (mga salita) Upang UBound (mga salita) 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 SubI-highlight ang duplicate na text sa cell case-sensitive
Sa karamihan ng mga sitwasyon, madalas naming balewalain ang letter case kapag nagtatrabaho sa mga text entry sa Excel. Sa ilalim ng ilang mga pangyayari, gayunpaman, ang kaso ng teksto ay mahalaga. Halimbawa, kung nakikitungo ka sa mga ID, password, o iba pang mga tala ng ganoong uri, ang mga string gaya ng 1-AA , 1-aa at 1-Aa ay hindi mga duplicate at hindi dapat i-highlight:
Sa kasong ito,gamitin ang sumusunod na bersyon ng code:
Public Sub HighlightDupesCaseSensitive() Dim Cell Bilang Range Dim Delimiter Bilang String Delimiter = InputBox( "Ipasok ang delimiter na naghihiwalay ng mga value sa isang cell" , "Delimiter" , ", " ) Para sa Bawat Cell In Application.Selection Call HighlightDupeWordsInCell(Cell, Delimiter, True ) Susunod na End Sub HighlightDupeWordsInCell(Cell As Range, Optional Delimiter Bilang String = " " , Opsyonal na CaseSensitive Bilang Boolean = True ) Dim text Bilang String Dim na salita() Bilang String Dim na salita() Bilang String salita Bilang String Dim wordIndex, matchCount, positionInText Bilang Integer Kung CaseSensitive Then words = Split(Cell.Value, Delimiter) Iba pang salita = Split(LCase(Cell.Value), Delimiter) End If For wordIndex = LBound (words) To UBound ( salita) - 1 salita = salita(wordIndex) matchCount = 0 Para sa nextWordIndex = wordIndex + 1 To UBound (mga salita) Kung salita = salita(nextWordIndex) Pagkatapos matchCount = matchCount + 1 End If Next nextWordIndex Kung matchCount > 0 Pagkatapos ay text = "" Para sa Index = LBound (mga salita) Upang UBound (mga salita) 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 SubPaano gamitin ang mga macro para i-highlight ang mga duplicate na salita sa Excel
Kung ikaw ay baguhan sa paggamit ng VBA, ang mga sunud-sunod na tagubilin sa ibaba ay kumportableng gagabay sa iyo . Maaaring ang mga karanasang gumagamitpiliin lang ang link sa pag-download at laktawan ang iba :)
Idagdag ang code sa iyong workbook
Magsisimula ka sa pagpasok ng code ng macro sa iyong Excel workbook. Ganito:
- Buksan ang workbook kung saan mo gustong i-highlight ang mga dupe.
- Pindutin ang Alt + F11 upang buksan ang Visual Basic Editor.
- Sa kaliwang pane, i-right-click ang ThisWorkbook at piliin ang Insert > Module mula sa context menu.
- I-paste ang code sa Code window.
- Upang panatilihin ang macro para magamit sa hinaharap, tiyaking i-save ang iyong workbook bilang isang macro-enabled na .xlsm file.
Maaari mong i-download ang aming sample na workbook at patakbuhin ang macro mula doon. Ang sample na workbook ay naglalaman ng mga sumusunod na macro:
- HighlightDupesCaseInsensitive - nag-shades ng mga duplicate sa loob ng cell na hindi pinapansin ang letter case.
- HighlightDupesCaseSensitive - mga highlight dupes sa isang cell na isinasaalang-alang ang letter case.
Para sa higit pang impormasyon, pakitingnan ang Paano magpasok ng VBA code sa Excel.
Patakbuhin ang macro
Gamit ang code idinagdag sa iyong sariling workbook o ang aming sample na file na na-download at binuksan, patakbuhin ang macro sa ganitong paraan:
- Sa iyong worksheet, piliin ang mga cell kung saan mo gustong i-highlight ang duplicate na text. Ito ay maaaring isang hanay o maramihang hindi magkatabing hanay.
- Pindutin ang Alt + F8 .
- Piliin ang macro ng interes at i-click ang Run .
- Hihilingin sa iyo ng macro na tukuyin ang delimiterna naghihiwalay sa mga halaga sa mga napiling cell. Ang preset delimiter (isang kuwit at isang puwang sa aming kaso) ay awtomatikong lalabas sa input box. Depende sa iyong mga pangangailangan, maaari mong iwanan ang default na delimiter o mag-type ng iba, at pagkatapos ay i-click ang OK.
Pagkalipas ng ilang sandali, lahat ng duplicate na string sa napiling ang mga cell ay litiman ng pulang kulay (o anumang kulay ng font ang nakatakda sa iyong code).
Tip. Upang mabilis na mag-alis ng mga duplicate sa loob ng isang cell, maaari mong gamitin ang Remove Duplicate Substrings, isa sa maraming mga tool sa pag-save ng beses na kasama sa aming Ultimate Suite.
Paano ayusin ang code para sa iyong mga pangangailangan
Gamit ang mga tala sa paggamit na ito at ang pinakapangunahing kaalaman sa VBA (o malapit lang sa pagsunod sa mga tagubilin sa ibaba), madali mong mababago ang mga code ayon sa iyong mga pangangailangan.
Ilagay sa parehong module
Tulad ng mapapansin mo, ang parehong mga macro ( HighlightDupesCaseSensitive at HighlightDupesCaseInsensitive ) ay tumatawag sa function na HighlightDupeWordsInCell . Ang pagkakaiba sa pagitan ng dalawang macro sa itaas ay nasa 3rd parameter lamang (CaseSensitive) na ipinasa sa nasabing function.
Para sa case-sensitive na paghahanap, nakatakda ito sa TRUE:
Call HighlightDupeWordsInCell(Cell, Delimiter, True)
Para sa case-insensitive na paghahanap, ito ay nakatakda sa FALSE:
Call HighlightDupeWordsInCell(Cell, Delimiter, False)
Para gumana ang mga macro, ang code ng HighlightDupeWordsInCell function ay dapat ilagay sa ang parehong module bilang angmacros.
Delimiter
Kapag tumakbo, hihilingin sa iyo ng macro na tukuyin ang delimiter na naghihiwalay sa mga salita/string sa mga napiling cell. Ang default na delimiter ay isang kuwit at isang puwang (", ") at ito ay naka-preset sa InputBox:
Delimiter = InputBox("Specify the delimiter that separates values in a cell", "Delimiter", ", ")
Sa iyong code, malaya kang gumamit ng anumang (mga) character. bilang ang paunang natukoy na delimiter.
Kulay
Bilang default, ang HighlightDupeWordsInCell function ay nag-shades ng mga duplicate sa pulang kulay ng font. Ang kulay ay tinukoy sa linyang ito:
Cell.Characters(positionInText, Len(word)).Font.Color = vbRed
Dito, ang vbRed ay isang uri ng VBA color constant. Upang magpakita ng mga dupe sa ibang kulay, maaari mong palitan ang vbRed ng isa pang constant gaya ng vbGreen, vbYellow, vbBlue, atbp. T Matatagpuan dito ang listahan ng mga sinusuportahang color constant.
Iyon ay kung paano i-highlight ang mga duplicate na salita sa mga cell ng Excel. Salamat sa pagbabasa at umaasa akong makita ka sa aming blog sa susunod na linggo!
Mga available na download
Mga halimbawa ng code upang i-highlight ang mga duplicate sa isang cell (.xlsm file)
Ultimate Suite 14-araw na ganap na gumaganang bersyon (.exe file)