Змест
Падручнік паказвае, як выдзяляць дублікаты слоў ці тэкставых радкоў у ячэйцы з дапамогай VBA.
Умоўнае фарматаванне Excel дазваляе вылучаць дублікаты любымі магчымымі спосабамі: з або без першага ўваходжання, у адным слупку або некалькіх слупках, паслядоўныя дублікаты вочак і цэлыя радкі на аснове аднолькавых значэнняў у ключавым слупку. Але, як звычайна, ёсць сваё «але». Правілы ўмоўнага фарматавання працуюць на ўзроўні ячэйкі, у той час як вы можаце вылучыць дублікат тэксту, а не цэлыя ячэйкі. Гэта можна зрабіць толькі з дапамогай макрасаў. Нават калі ў вас няма досведу працы з VBA, не спяшайцеся закрываць гэтую старонку. Тут вы знойдзеце гатовыя да выкарыстання прыклады кода і падрабязныя інструкцыі па іх выкарыстанні ў вашых працоўных аркушах.
Вылучайце паўтаральныя словы ў ячэйцы, ігнаруючы рэгістр тэксту
Гэты прыклад паказвае, як зацяняць дублікаты слоў або тэкставых радкоў у ячэйцы чырвоным колерам шрыфта, як паказана на малюнку ніжэй. Звярніце ўвагу, што малыя і вялікія літары разглядаюцца як аднолькавыя сімвалы. Напрыклад, апельсін , АМАРАНС і Апельсін лічацца адным і тым жа словам.
код макраса выглядае наступным чынам:
Public Sub HighlightDupesCaseInsensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Увядзіце падзельнік, які падзяляе значэнні ў ячэйцы" , "Delimiter" , ", " ) Для кожнай ячэйкі ўВыклік Application.Selection 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 Радок 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 (словы) To UBound (словы) - 1 слова = words(wordIndex) matchCount = 0 For nextWordIndex = wordIndex + 1 To UBound (словы) If word = words(nextWordIndex) Then matchCount = matchCount + 1 End If Next nextWordIndex If matchCount > 0 Затым тэкст = "" Для Index = LBound (словы) To UBound (словы) 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 & Раздзяляльнік Next End If Next wordIndex End SubВылучыць дублікат тэксту ў ячэйцы з улікам рэгістра
У большасці сітуацый мы схільныя ігнараваць рэгістр літар пры працы з тэкставымі запісамі ў Excel. Аднак пры пэўных абставінах рэгістр тэксту мае значэнне. Напрыклад, калі вы маеце справу з ідэнтыфікатарамі, паролямі або іншымі запісамі такога роду, такія радкі, як 1-AA , 1-aa і 1-Aa не з'яўляюцца дублікатамі і не павінны вылучацца:
У гэтым выпадку,выкарыстоўвайце наступную версію кода:
Public Sub HighlightDupesCaseSensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Увядзіце падзельнік, які падзяляе значэнні ў ячэйцы" , "Delimiter" , ", " ) Для кожнага 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 слова 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 (словы) To UBound ( словы) - 1 слова = словы(wordIndex) matchCount = 0 For nextWordIndex = wordIndex + 1 To UBound (словы) If word = words(nextWordIndex) Then matchCount = matchCount + 1 End If Next nextWordIndex If matchCount > 0 Затым тэкст = "" Для Index = LBound (словы) To UBound (словы) 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 & Раздзяляльнік Next End If Next wordIndex End SubЯк выкарыстоўваць макрасы для вылучэння дублікатаў слоў у Excel
Калі вы пачатковец у выкарыстанні VBA, прыведзеныя ніжэй пакрокавыя інструкцыі дапамогуць вам у гэтым. . Дасведчаныя карыстальнікі могуцьпроста выберыце спасылку для загрузкі і прапусціце астатняе :)
Дадайце код у вашу кнігу
Вы пачынаеце з устаўкі кода макраса ў вашу кнігу Excel. Вось як:
- Адкрыйце працоўную кнігу, дзе вы хочаце вылучыць падманы.
- Націсніце Alt + F11, каб адкрыць рэдактар Visual Basic.
- На левай панэлі пстрыкніце правай кнопкай мышы ThisWorkbook і абярыце Insert > Module з кантэкстнага меню.
- Устаўце код у акно Code.
- Каб захаваць макрас для выкарыстання ў будучыні, не забудзьцеся захаваць вашу працоўную кнігу як файл .xlsm з падтрымкай макрасаў.
Або вы можаце загрузіць наш узор працоўнай кнігі і запусціць макрас адтуль. Прыклад кнігі змяшчае наступныя макрасы:
- HighlightDupesCaseInsensitive - зацяняе дублікаты ў ячэйцы, ігнаруючы рэгістр літар.
- HighlightDupesCaseSensitive - вылучае. падманвае ў ячэйцы з улікам рэгістра літар.
Для атрымання дадатковай інфармацыі глядзіце, як уставіць код VBA ў Excel.
Запусціце макрас
З кодам дададзены ў вашу ўласную працоўную кнігу або наш узор файла, спампаваны і адкрыты, запусціце макрас такім чынам:
- На вашым працоўным аркушы выберыце ячэйкі, у якіх вы хочаце вылучыць паўтаральны тэкст. Гэта можа быць адзін дыяпазон або некалькі несумежных дыяпазонаў.
- Націсніце Alt + F8 .
- Абярыце цікавы макрас і націсніце Выканаць .
- Макрас папросіць вас указаць падзельнікякі падзяляе значэнні ў выбраных вочках. Зададзены раздзяляльнік (у нашым выпадку коска і прабел) з'явіцца ў полі ўводу аўтаматычна. У залежнасці ад вашых патрэбаў, вы можаце пакінуць падзельнік па змаўчанні або ўвесці іншы, а затым націснуць ОК.
Праз імгненне ўсе дублікаты радкоў у выбраным ячэйкі будуць зафарбаваны чырвоным колерам (або любым колерам шрыфта, усталяваным у вашым кодзе).
Савет. Каб хутка выдаліць дублікаты ў ячэйцы, вы можаце выкарыстаць Remove Duplicate Substrings, адзін з многіх інструментаў эканоміі часу, уключаных у наш Ultimate Suite.
Як наладзіць код для вашых патрэб
Выкарыстоўваючы гэтыя заўвагі па выкарыстанні і вельмі базавыя веды VBA (або проста ўважліва прытрымліваючыся прыведзеных ніжэй інструкцый), вы можаце лёгка змяніць коды ў дакладнай адпаведнасці з вашымі патрэбамі.
Размясціць у тым жа модулі
Як вы можаце заўважыць, абодва макрасы ( HighlightDupesCaseSensitive і HighlightDupesCaseInsensitive ) выклікаюць функцыю HighlightDupeWordsInCell . Розніца паміж двума макрасамі, прыведзенымі вышэй, заключаецца толькі ў 3-м параметры (CaseSensitive), перададзеным у згаданую функцыю.
Для пошуку з улікам рэгістра, ён усталяваны ў TRUE:
Call HighlightDupeWordsInCell(Cell, Delimiter, True)
Для пошуку без уліку рэгістра ўстаноўлена FALSE:
Call HighlightDupeWordsInCell(Cell, Delimiter, False)
Каб макрасы працавалі, код функцыі HighlightDupeWordsInCell павінен быць размешчаны на той жа модуль, што імакрасы.
Раздзяляльнік
Пры запуску макрас папросіць вас указаць раздзяляльнік, які падзяляе словы/радкі ў выбраных ячэйках. Раздзяляльнікам па змаўчанні з'яўляецца коска і прабел (", "), і ён прадусталяваны ў полі ўводу:
Delimiter = InputBox("Specify the delimiter that separates values in a cell", "Delimiter", ", ")
У вашым кодзе вы можаце выкарыстоўваць любыя іншыя сімвалы у якасці загадзя вызначанага раздзяляльніка.
Колер
Па змаўчанні функцыя HighlightDupeWordsInCell зацяняе дублікаты чырвоным колерам шрыфта. Колер вызначаецца ў гэтым радку:
Cell.Characters(positionInText, Len(word)).Font.Color = vbRed
Тут vbRed з'яўляецца свайго роду канстантай колеру VBA. Каб адлюстраваць падманы ў іншым колеры, вы можаце замяніць vbRed іншай канстантай, напрыклад vbGreen, vbYellow, vbBlue і г.д. T спіс падтрымоўваных каляровых канстант можна знайсці тут.
Гэта як вылучыць паўтаральныя словы ў вочках Excel. Я дзякую вам за чытанне і спадзяюся ўбачыць вас у нашым блогу на наступным тыдні!
Даступныя спампоўкі
Прыклады кода для вылучэння дублікатаў у ячэйцы (.xlsm файл)
Ultimate Поўнафункцыянальная версія пакета на 14 дзён (файл .exe)