Зміст
Урок показує, як за допомогою VBA виділити повторювані слова або текстові рядки в комірці.
Умовне форматування в Excel дозволяє виділяти дублікати всіма можливими способами, які тільки можна придумати: з 1-м входженням або без нього, в одному стовпці або декількох стовпцях, послідовно повторювані комірки і цілі рядки на основі ідентичних значень в ключовому стовпці. Але, як завжди, є "але". Правила умовного форматування працюють на рівні комірок, в той час як ви можете захотіти виділити дублікатиЦе можна зробити тільки за допомогою макросів. Навіть якщо у вас немає досвіду роботи з VBA, не поспішайте закривати цю сторінку. Тут ви знайдете готові приклади коду і докладні інструкції по їх використанню в ваших робочих аркушах.
Виділення слів, що повторюються в комірці, без урахування регістру тексту
У цьому прикладі показано, як заштрихувати повторювані слова або рядки тексту в комірці червоним кольором шрифту, як показано на зображенні нижче. Зверніть увагу, що малі та великі літери вважаються однаковими символами. Наприклад, апельсин , ОРАНЖЕВА і Помаранчевий вважаються одним і тим же словом.
Код макросу наступний:
Public Sub HighlightDupesCaseInsensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Введіть роздільник, який розділяє значення в комірці" , "Роздільник" , ", " ) 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's Value, Delimiter) Else words = Split(LCase(Cell's 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 = wordwords(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Виділення тексту, що повторюється в комірці, з урахуванням регістру
У більшості ситуацій при роботі з текстовими записами в Excel ми ігноруємо регістр букв. Однак за певних обставин регістр тексту має значення. Наприклад, якщо ви маєте справу з ідентифікаторами, паролями або іншими записами подібного роду, то рядки типу 1-АА , 1-а і 1-Аа не дублюються і не повинні виділятися:
У цьому випадку використовуйте наступну версію коду:
Public Sub HighlightDupesCaseSensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Введіть роздільник, який розділяє значення в комірці" , "Роздільник" , ", " ) For Each Cell In Application.Selection Call HighlightDupleWordsInCell(Cell, Delimiter, True ) Next End Sub Sub HighlightDupleWordsInCell(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's Value, Delimiter) Else words = Split(LCase(Cell's 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 = wordwords(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Як використовувати макроси для виділення слів, що повторюються в Excel
Якщо ви новачок у використанні VBA, то наведені нижче покрокові інструкції допоможуть вам розібратися. Досвідчені користувачі можуть просто натиснути на посилання для завантаження і пропустити решту :)
Додайте код до свого робочого зошита
Починати потрібно з вставки коду макросу в книгу Excel. Ось як це робиться:
- Відкрийте книгу, в якій потрібно виділити дублікати.
- Натисніть Alt + F11, щоб відкрити редактор Visual Basic.
- На лівій панелі натисніть правою кнопкою миші ThisWorkbook та оберіть Вставка > Модуль з контекстного меню.
- Вставте код у вікні Код.
- Щоб зберегти макрос для подальшого використання, обов'язково збережіть робочу книгу як файл .xlsm з підтримкою макросів.
Крім того, ви можете завантажити наш зразок робочого зошита і запустити макрос звідти. Зразок робочого зошита містить наступні макроси:
- Виділити дублікати без урахування регістру - зафарбовує дублікати в комірці без урахування регістру літер.
- ВиділитиДублікатиЗ урахуванням регістру - підсвічує дублі в комірці з урахуванням регістру літер.
Для отримання додаткової інформації див. статтю Як вставити код VBA в Excel.
Запустити макрос
Після додавання коду до власної робочої книги або завантаження та відкриття нашого файлу-зразка, запустіть макрос таким чином:
- На робочому аркуші виділіть клітинки, в яких ви хочете виділити текст, що повторюється. Це може бути один діапазон або декілька несуміжних діапазонів.
- Натисніть Alt + F8 .
- Виберіть макрос, що цікавить, і натисніть Біжи .
- Макрос попросить вказати роздільник, який розділяє значення у виділених комірках. У полі введення автоматично з'явиться встановлений роздільник (у нашому випадку кома і пробіл). Залежно від ваших потреб, ви можете залишити роздільник за замовчуванням або ввести інший, а потім натиснути кнопку ОК.
Через мить всі рядки, що повторюються у виділених комірках, будуть зафарбовані червоним кольором (або будь-яким іншим кольором шрифту, встановленим у вашому коді).
Порада. Щоб швидко видалити дублікати У комірці можна використовувати функцію Видалити дублікати підрядків, один з багатьох інструментів, що заощаджують час, включених до нашого пакету Ultimate Suite.
Як налаштувати код під свої потреби
За допомогою цих приміток та базових знань VBA (або просто уважно дотримуючись наведених нижче інструкцій), ви можете легко модифікувати коди у точній відповідності до ваших потреб.
Розміщення на одному модулі
Як можна помітити, обидва макроси ( ВиділитиДублікатиЗ урахуванням регістру і Виділити дублікати без урахування регістру ) зателефонувати до Виділити повторювані слова в комірці Різниця між двома наведеними вище макросами полягає лише у 3-му параметрі (CaseSensitive), що передається у зазначену функцію.
Для пошуку з урахуванням регістру встановлено значення TRUE:
Виклик ВиділитиДвійніСловаВКомірці(Комірка, Розділювач, Істина)
Для пошуку без урахування регістру встановлено значення FALSE:
Викликати функцію ВиділенняДвійникаСлівВКомірці(Комірка, Розділювач, Ложність)
Для того, щоб макроси працювали, необхідно вказати код Виділити повторювані слова в комірці повинна бути розміщена в тому ж модулі, що і макроси.
Розмежувач
При запуску макросу буде запропоновано вказати роздільник, що розділяє слова/рядки у виділених комірках. За замовчуванням роздільником є кома та пробіл (", "), і він задається у полі введення InputBox:
Delimiter = InputBox("Вкажіть роздільник, що розділяє значення в комірці", "Delimiter", ", ")
У своєму коді ви можете використовувати будь-який інший символ (символи) в якості попередньо визначеного роздільника.
Колір
За замовчуванням, у вікні Виділити повторювані слова в комірці функція відтінків дублюється червоним кольором шрифту, колір якого задається в цьому рядку:
Cell.Characters(positionInText, Len(word)).Font.Color = vbRed
Тут vbRed - це свого роду константа кольору VBA. Для відображення дублікатів іншим кольором можна замінити vbRed на іншу константу, наприклад, vbGreen, vbYellow, vbBlue та ін. T Перелік підтримуваних колірних констант можна знайти тут.
Ось так можна виділити слова, що повторюються в комірках Excel. Дякую за увагу і сподіваюся побачити вас на нашому блозі наступного тижня!
Доступні для завантаження
Приклади коду для виділення дублікатів в комірці (файл .xlsm)
Ultimate Suite 14-денна повнофункціональна версія (файл .exe)