Оглавление
В Excel существует три способа поиска и удаления дубликатов в ячейке. Просто выберите тот, который подходит вам больше всего.
Когда речь идет об удалении дубликатов значений или строк, Microsoft Excel предлагает множество различных вариантов. Но когда дело доходит до удаления идентичного текста в данной ячейке, Excel не предоставляет... ничего. Ни инструментов, ни функций, ни формул, ничего. Остановит ли это нас в достижении нашей цели? Ни в коем случае. Если в Excel нет нужной нам функции, давайте напишем свою собственную :)
Как удалить повторяющиеся слова в ячейке Excel
Проблема : У вас есть одинаковые слова или строки текста в ячейке, и вы хотите удалить второе и все последующие повторения.
Решение : пользовательская функция или макрос VBA.
Определяемая пользователем функция для удаления дубликатов в ячейке
Для удаления дублирующегося текста в ячейке можно использовать следующую функцию, определяемую пользователем (UDF), под названием RemoveDupeWords :
Function RemoveDupeWords(text As String , Optional delimiter As String = " " ) As String Dim dictionary As Object Dim x, part Set dictionary = CreateObject ("Scripting.Dictionary" ) dictionary.CompareMode = vbTextCompare For Each x In Split(text, delimiter) part = Trim(x) If part "" And Not dictionary.Exists(part) Then dictionary.Add part, Nothing End If Next If dictionary.Count> 0 ThenRemoveDupeWords = Join(dictionary.keys, delimiter) Else RemoveDupeWords = "" End If Set dictionary = Nothing End FunctionКак вставить код функции в рабочую книгу
Чтобы добавить приведенный выше код в Excel, нужно сделать следующее:
- Нажмите Alt + F11, чтобы открыть редактор Visual Basic.
- На левой панели щелкните правой кнопкой мыши ThisWorkbook и выберите Вставка > Модуль .
- Вставьте приведенный выше код в Код окно.
Для получения дополнительной информации см. раздел Как вставить код VBA в Excel.
Синтаксис функции RemoveDupeWords
Созданная нами функция для удаления дублирующегося текста в ячейке имеет следующий синтаксис:
RemoveDupeWords(text, [delimiter])Где:
- Текст (обязательно) - строка или ячейка, из которой нужно удалить повторяющийся текст.
- Разделитель (необязательно) - разделитель, которым отделяется повторяющийся текст. Если он опущен, то в качестве разделителя используется пробел.
Функция не чувствительный к регистру Это означает, что строчные и прописные буквы рассматриваются как одинаковые символы.
Как использовать функцию RemoveDupeWords
После добавления кода функции в рабочую книгу вы можете использовать ее в формулах так же, как и встроенные функции Excel.
Просто начните вводить имя функции после знака равенства, и оно появится в интеллисенсе формул. Дважды щелкните на функции, и она будет вставлена в ячейку. Определите аргументы, введите закрывающую скобку, нажмите Enter , и ваша формула завершена.
Например, чтобы удалить дубликаты слов, разделенных запятой и пробелом, из A2, введите приведенную ниже формулу в B2, а затем перетащите ее вниз через необходимое количество ячеек:
=RemoveDupeWords(A2, ", ")
В результате вы получите список уникальных слов или подстрок, разделенных символом запятая и пробел :
Если вы предпочитаете получить список, разделенный запятыми, то используйте только запятая для разделителя:
=RemoveDupeWords(A2, ",")
Если ваши исходные данные разделены пространство , второй аргумент должен быть " " или опущен:
=RemoveDupeWords(A2)
Как и любая другая функция Excel, наша UDF автоматически пересчитывается при изменении исходных данных, поэтому ваши результаты всегда будут актуальными.
Макрос VBA для удаления дублирующегося текста из нескольких ячеек одновременно
Если вам нужно удалить повторяющийся текст из нескольких ячеек за один раз, то вы можете вызвать функцию RemoveDupeWords В этом случае разделитель будет жестко закодирован, и вам придется обновлять код макроса при каждом изменении разделителя. В качестве альтернативы вы можете написать несколько вариантов кода для наиболее распространенных разделителей, например, пробел, запятая или запятая и пробел, и дать своим макросам осмысленные имена, например. RemoveDupesDelimSpace .
Код макроса выглядит следующим образом:
Public Sub RemoveDupeWords2() Dim cell As Range For Each cell In Application.Selection cell.Value = RemoveDupeWords(cell.Value, ", " ) Next End SubВ приведенном выше коде разделителем является символ запятая и пробел Чтобы использовать другой разделитель, замените ", " на другой символ(ы) в этой строке кода:
cell.Value = RemoveDupeWords(cell.Value, ", ")
Примечание. Чтобы макрос работал, его код и код функции RemoveDupeWords должны быть размещены в одном модуле.
Как использовать макрос
Вставьте код макроса в собственную рабочую книгу или откройте наш образец рабочей книги с кодом, а затем выполните следующие действия для запуска макроса.
- Выберите диапазон ячеек, из которых нужно удалить повторяющийся текст.
- Нажмите Alt + F8, чтобы открыть Макро диалоговое окно.
- В списке макросов выберите RemoveDupeWords2 .
- Нажмите Запускайте .
Более подробную информацию см. в разделе Как запустить макрос в Excel.
Примечание. Поскольку действие макроса нельзя отменить Мы настоятельно рекомендуем сохранить рабочую книгу непосредственно перед использованием макроса. Таким образом, если что-то пойдет не так, вы можете просто закрыть и снова открыть рабочую книгу, и вы вернетесь к тому, на чем остановились. Или вы можете просто сделать копию рабочего листа (листов), на которые может повлиять макрос.
Как удалить дублирующиеся символы в ячейке
Проблема : У вас есть несколько вхождений одного и того же символа в ячейку, в то время как каждая ячейка должна содержать только одно вхождение данного символа.
Решение : пользовательская функция или макрос VBA.
Пользовательская функция для удаления повторяющихся символов
Чтобы удалить дублирующиеся символы в ячейке, сохраняя только первые вхождения, можно использовать следующую пользовательскую функцию, названную RemoveDupeChars :
Function RemoveDupeChars(text As String ) As String Dim dictionary As Object Dim char As String Dim result As String Set dictionary = CreateObject ("Scripting.Dictionary" ) For i = 1 To Len(text) char = Mid(text, i, 1) If Not dictionary.Exists(char) Then dictionary.Add char, Nothing result = result & char End If Next RemoveDupeChars = result Set dictionary = Nothing End FunctionЧтобы вставить код функции в рабочую книгу, действия точно такие же, как и в предыдущем примере.
Синтаксис функции RemoveDupeChars
Синтаксис этой пользовательской функции настолько прост, насколько это вообще возможно - требуется только один аргумент:
RemoveDupeChars(text)Где текст это строка или ячейка, из которой необходимо удалить дубликаты символов.
Функция с учетом регистра и рассматривает строчные и прописные буквы как разные символы.
Как использовать функцию RemoveDupeChars
Все, что мы говорили об использовании RemoveDupeWords, справедливо и для RemoveDupeChars Итак, не углубляясь в теорию, перейдем сразу к примеру.
Чтобы удалить дубликаты символов из столбца A, начиная с A2, введите эту формулу в B2 и скопируйте ее вниз:
=RemoveDupeChars(A2)
Как видно на изображении ниже, функция успешно обрабатывает различные типы символов, включая буквы, цифры и специальные символы:
Совет. Если ваши персонажи отделены друг от друга каким-то разделитель например, пробел, запятая или дефис, то используйте RemoveDupeWords функцию, как показано в предыдущем примере.
Макрос VBA для удаления одинаковых символов из ячейки
Например, RemoveDupeWords , the RemoveDupeChars функция также может быть вызвана из макроса:
Public Sub RemoveDupeChars2() Dim cell As Range For Each cell In Application.Selection cell.Value = RemoveDupeChars(cell.Value) Next End SubПоскольку в этом UDF не используется разделитель, вам не придется вносить какие-либо изменения в код.
Примечание. Чтобы макрос работал, его код и код UDF RemoveDupeChars должны быть помещены в один и тот же модуль в редакторе VBA.
Как использовать макрос
Если вы уже вставили код макроса в рабочую книгу или открыли наш образец рабочей книги с кодом, запустите макрос следующим образом.
- Выберите диапазон ячеек, из которых необходимо удалить повторяющиеся символы.
- Нажмите Alt + F8, чтобы открыть Макро диалоговое окно.
- В списке макросов выберите RemoveDupeChars2 .
- Нажмите Запускайте .
Удаление дублирующихся подстрок с помощью Ultimate Suite
В начале этого руководства упоминалось, что в Microsoft Excel нет встроенной функции для удаления дубликатов в ячейке. Но в нашем пакете Ultimate Suite она есть!
Вы можете найти его в Удаление дубликатов выпадающее меню на Ablebits Data во вкладке Dedupe группа. Если Удаление дублирующихся подстрок опция не отображается в Excel, убедитесь, что у вас установлена последняя версия Ultimate Suite (бесплатную пробную версию можно загрузить здесь).
Чтобы удалить повторяющиеся слова или текст из нескольких ячеек за 5 секунд (секунда на шаг :), вот что вам нужно сделать:
- Выберите исходные данные и запустите Удаление дублирующихся подстрок инструмент.
- Укажите разделитель .
- Определите, нужно ли лечить последовательные разделители как единицу (по умолчанию).
- Выберите, нужно ли выполнять с учетом регистра или без учета регистра поиск.
- Нажмите Удалить .
Готово! Никакой возни с VBA или формулами, только быстрые и точные результаты.
Чтобы узнать больше об этом замечательном дополнении, посетите его домашнюю страницу. А еще лучше загрузите ознакомительную версию ниже и попробуйте!
Вот как удалить дублированный текст в ячейке. Я благодарю вас за чтение и надеюсь увидеть вас в нашем блоге на следующей неделе!
Доступные загрузки
Примеры удаления дубликатов в ячейке (файл.xlsm)
Ultimate Suite 14-дневная полнофункциональная версия (файл .exe)