Как удалить дубликаты внутри ячейки в Excel
Есть три способа найти и удалить дубликаты в ячейке Excel. Просто выберите тот, который лучше всего подходит для вас.
Когда дело касается удаления повторяющихся значений или строк, Microsoft Excel предлагает множество различных вариантов. Но когда дело доходит до удаления идентичного текста в данной ячейке, Excel… ничего не дает. Никаких инструментов, никаких функций, никаких формул, ничего. Помешает ли это нам достичь нашей цели? Ни в коем случае. Если в Excel нет нужной нам функции, давайте напишем свою 🙂
Как удалить повторяющиеся слова в ячейке Excel
Проблема: у вас есть одинаковые слова или текстовые строки в ячейке, и вы хотите удалить второй и все последующие повторы.
Решение: пользовательская функция или макрос VBA.
Пользовательская функция для удаления дубликатов в ячейке
Чтобы устранить повторяющийся текст в ячейке, вы можете использовать следующую определяемую пользователем функцию (UDF) с именем УдалитьДупеВордс:
Функция RemoveDupeWords(текст как строка, необязательный разделитель) как строка = ” “) как строка Dim словарь как объект Dim x, часть Установить словарь = CreateObject(“Scripting.Dictionary”) Dictionary.CompareMode = vbTextCompare For Each x In Split(текст, разделитель ) часть = Обрезать(х) Если часть <> “” И Не словарь.Существует(часть) Тогда словарь.Добавить часть, Ничего Конец Если Далее Если словарь.Счетчик > 0 Тогда УдалитьДупеСлов = Присоединить(словарь.ключи, разделитель) Иначе УдалитьДупеСлова = “” Конец, если установить словарь = ничего Конец функции
Как вставить код функции в книгу
Чтобы добавить приведенный выше код в свой Excel, вам нужно сделать следующее:
- Нажмите Alt + F11, чтобы открыть редактор Visual Basic.
- На левой панели щелкните правой кнопкой мыши Эта рабочая тетрадь и выберите Вставлять > Модуль.
- Вставьте приведенный выше код в Код окно.
Дополнительные сведения см. в разделе Как вставить код VBA в Excel.
Синтаксис функции RemoveDupeWords
Наша недавно созданная функция для удаления повторяющегося текста в ячейке имеет следующий синтаксис:
RemoveDupeWords(текст, [delimiter])
Где:
- Текст (обязательно) — строка или ячейка, из которой вы хотите удалить повторяющийся текст.
- Разделитель (необязательно) – разделитель, которым отделяется повторяющийся текст. Если опущено, в качестве разделителя используется пробел.
Функция не чувствительна к регистру, что означает, что строчные и прописные буквы обрабатываются как одни и те же символы.
Как использовать функцию RemoveDupeWords
Как только код функции будет добавлен в книгу, вы сможете использовать его в своих формулах так же, как вы используете встроенные функции Excel.
Просто начните вводить имя функции после знака равенства, и оно появится в формуле intellisense. Дважды щелкните функцию, и она будет вставлена в ячейку. Определите аргументы, введите закрывающую скобку, нажмите Enter, и ваша формула будет завершена.
Например, чтобы удалить повторяющиеся слова, разделенные запятой и пробелом, из A2, введите приведенную ниже формулу в B2, а затем перетащите ее вниз через столько ячеек, сколько необходимо:
= Удалить повторяющиеся слова (A2, “,”)
В результате у вас будет список уникальных слов или подстрок, разделенных запятой и пробелом:
Если вы хотите получить список, разделенный запятыми, используйте только запятую для разделителя:
= Удалить повторяющиеся слова (A2, “,”)
Если ваши исходные данные разделены пробелом, второй аргумент должен быть ” ” или опущен:
= Удалить повторяющиеся слова (A2)
Как и любая другая функция Excel, наша UDF автоматически пересчитывает данные при изменении исходных данных, поэтому ваши результаты всегда будут актуальными.
Макрос VBA для удаления повторяющегося текста из нескольких ячеек одновременно
Если вы хотите удалить повторяющийся текст из нескольких ячеек за один раз, вы можете вызвать УдалитьДупеВордс функция внутри макроса. В этом случае разделитель жестко запрограммирован, и вам придется обновлять код макроса каждый раз при изменении разделителя. Кроме того, вы можете написать несколько вариантов кода для наиболее распространенных разделителей, скажем, пробела, запятой или запятой и пробела, и дать своим макросам осмысленные имена, например RemoveDupesDelimSpace.
Код макроса следующий:
Public Sub RemoveDupeWords2() Затемнение ячейки как диапазона для каждой ячейки в Application.Selection cell.Value = RemoveDupeWords(cell.Value, “,”) Next End Sub
В приведенном выше коде разделителем является запятая и пробел. Чтобы использовать другой разделитель, замените «,» другим символом (символами) в этой строке кода:
cell.Value = RemoveDupeWords(cell.Value, “,”)
Примечание. Чтобы макрос работал, его код и Код функции RemoveDupeWords должны быть размещены на одном модуле.
Как использовать макрос
Вставьте код макроса в свою книгу или откройте нашу образец рабочей тетради с кодом, а затем выполните следующие шаги, чтобы запустить макрос.
- Выберите диапазон ячеек, из которых вы хотите удалить повторяющийся текст.
- Нажмите Alt + F8, чтобы открыть макрос диалоговое окно.
- В списке макросов выберите УдалитьДупеВордс2.
- Нажмите Бежать.
Дополнительные сведения см. в разделе Как запустить макрос в Excel.
Примечание. Поскольку действие макроса нельзя отменить, мы настоятельно рекомендуем сохранить книгу непосредственно перед использованием макроса. Таким образом, если что-то пойдет не так, вы можете просто закрыть и снова открыть книгу, и вы вернетесь к тому же месту, где и были. Или вы можете просто сделать копию рабочего листа (листов), на который может повлиять макрос.
Как удалить повторяющиеся символы в ячейке
Проблема: у вас есть несколько вхождений одного и того же символа в ячейке, в то время как каждая ячейка должна содержать только одно вхождение данного символа.
Решение: пользовательская функция или макрос VBA.
Пользовательская функция для удаления повторяющихся символов
Чтобы удалить повторяющиеся символы в ячейке, оставив только первые вхождения, вы можете использовать следующую определяемую пользователем функцию с именем УдалитьDupeChars:
Функция RemoveDupeChars(текст как строка) Как строка Затемнить словарь как объект Затемнить символ как строку Затемнить результат как строку Установить словарь = CreateObject(“Scripting.Dictionary”) For i = 1 To Len(text) char = Mid(text, i, 1) ) Если не словарь.Существует(символ), то словарь.Добавить символ, Ничего результата = результат & char End If Next RemoveDupeChars = result Set Dictionary = Nothing End Function
Чтобы вставить код функции в книгу, шаги точно такие же, как и в предыдущем примере.
Синтаксис функции RemoveDupeChars
Синтаксис этой пользовательской функции максимально прост — требуется только один аргумент:
RemoveDupeChars(текст)
Где текст — это строка или ячейка, из которой вы хотите удалить повторяющиеся символы.
Функция чувствительна к регистру и обрабатывает строчные и прописные буквы как разные символы.
Как использовать функцию RemoveDupeChars
Все, что мы говорили о использование RemoveDupeWords верно для УдалитьDupeChars. Итак, не вдаваясь слишком в теорию, давайте сразу перейдем к примеру.
Чтобы удалить повторяющиеся символы из столбца A, начиная с A2, введите эту формулу в B2 и скопируйте ее вниз:
= Удалить повторяющиеся символы (A2)
Как вы можете видеть на изображении ниже, функция успешно обрабатывает различные типы символов, включая буквы, цифры и специальные символы:
Кончик. Если ваши символы отделены друг от друга каким-либо разделителем, таким как пробел, запятая или дефис, используйте УдалитьДупеВордс работать, как показано в предыдущем примере.
Макрос VBA для удаления одинаковых символов из ячейки
Нравиться УдалитьДупеВордс, УдалитьDupeChars Функция также может быть вызвана из макроса:
Public Sub RemoveDupeChars2() Затемните ячейку как диапазон для каждой ячейки в Application.Selection cell.Value = RemoveDupeChars(cell.Value) Next End Sub
Поскольку в этой пользовательской функции не используются разделители, вам не придется вносить какие-либо коррективы в код.
Примечание. Для работы макроса его код и код Пользовательская функция RemoveDupeChars должны быть помещены в тот же модуль в редакторе VBA.
Как использовать макрос
Предполагая, что вы уже вставили код макроса в свою книгу или открыли наш образец рабочей тетради содержащий код, запустите макрос таким образом.
- Выберите диапазон ячеек, из которых вы хотите удалить повторяющиеся символы.
- Нажмите Alt + F8, чтобы открыть макрос диалоговое окно.
- В списке макросов выберите УдалитьDupeChars2.
- Нажмите Бежать.
Удалите повторяющиеся подстроки с помощью Ultimate Suite
В начале этого руководства упоминалось, что Microsoft Excel не имеет встроенной функции для удаления дубликатов в ячейке. Но наш Ultimate Suite делает это!
Вы можете найти его в Удаление дубликатов выпадающее меню на Данные об аблебитах вкладка, в Дедупликация группа. Если параметр «Удалить повторяющиеся подстроки» не отображается в вашем Excel, убедитесь, что у вас установлена последняя версия Ultimate Suite (бесплатную пробную версию можно скачать здесь).
Чтобы удалить повторяющиеся слова или текст из нескольких ячеек за 5 секунд (по секунде за шаг :), вам нужно сделать следующее:
- Выберите исходные данные и запустите Удалить повторяющиеся подстроки инструмент.
- Укажите разделитель.
- Определите, следует ли рассматривать последовательные разделители как один (по умолчанию).
- Выберите, следует ли выполнять поиск с учетом или без учета регистра.
- Щелкните Удалить.
Сделанный! Никакой возни с VBA или формулами, только быстрые и точные результаты.
Чтобы узнать больше об этой замечательной надстройке, посетите ее домашнюю страницу. Или, что еще лучше, загрузите ознакомительную версию ниже и попробуйте!
Вот как удалить повторяющийся текст в ячейке. Я благодарю вас за чтение и надеюсь увидеть вас в нашем блоге на следующей неделе!
Доступные загрузки
Примеры удаления дубликатов в ячейке (файл .xlsm)
Ultimate Suite 14-дневная полнофункциональная версия (файл .exe)