Note: The other languages of the website are Google-translated. Back to English

Как удалить повторяющиеся символы или слова в строке ячейки?

Предположим, что в каждой ячейке есть повторяющиеся символы или слова, и вы хотите удалить дубликаты и оставить только уникальные символы или слова. Как бы вы могли решить эту проблему в Excel?

Удалите повторяющиеся символы текстовой строки с помощью функции, определяемой пользователем

Удалите повторяющиеся слова, разделенные знаками препинания, с помощью функции, определяемой пользователем


стрелка синий правый пузырь Удалите повторяющиеся символы текстовой строки с помощью функции, определяемой пользователем

Если у вас есть список текстовой строки, теперь вам нужно удалить повторяющиеся символы, как показано на следующем снимке экрана. Здесь я могу поговорить о коде VBA для решения этой проблемы.

документ-удалить-дубликат-символы-1

1. Удерживайте ALT + F11 , чтобы открыть Окно Microsoft Visual Basic для приложений.

2. Нажмите Вставить > Модулии вставьте следующий код в Окно модуля.

Код VBA: удалить повторяющиеся символы текстовой строки в ячейке

Function RemoveDupes1(pWorkRng As Range) As String
'Updateby Extendoffice
Dim xValue As String
Dim xChar As String
Dim xOutValue As String
Set xDic = CreateObject("Scripting.Dictionary")
xValue = pWorkRng.Value
For i = 1 To VBA.Len(xValue)
    xChar = VBA.Mid(xValue, i, 1)
    If xDic.Exists(xChar) Then
    Else
        xDic(xChar) = ""
        xOutValue = xOutValue & xChar
    End If
Next
RemoveDupes1 = xOutValue
End Function

3. Затем сохраните и закройте этот код, вернитесь на рабочий лист и введите эту формулу = removedupes1 (A2) (A2 это ячейка данных, из которой вы хотите удалить дубликаты) в пустую ячейку помимо ваших данных, см. снимок экрана:

документ-удалить-дубликат-символы-1

4. Затем перетащите дескриптор заполнения к ячейкам диапазона, к которым вы хотите применить эту формулу, все повторяющиеся символы будут немедленно удалены из каждой ячейки.

документ-удалить-дубликат-символы-1


стрелка синий правый пузырь Удалите повторяющиеся слова, разделенные знаками препинания, с помощью функции, определяемой пользователем

Если в ячейке есть слова, разделенные определенными знаками препинания, вы также можете удалить повторяющиеся слова по своему усмотрению. Пожалуйста, выполните следующие действия:

1. Удерживая нажатой ALT + F11 , чтобы открыть Окно Microsoft Visual Basic для приложений.

2. Нажмите Вставить > Модулии вставьте следующий код в Окно модуля.

Код VBA: удалить повторяющиеся слова, разделенные знаками препинания в ячейке

Function RemoveDupes2(txt As String, Optional delim As String = " ") As String
    Dim x
    'Updateby Extendoffice
    With CreateObject("Scripting.Dictionary")
        .CompareMode = vbTextCompare
        For Each x In Split(txt, delim)
            If Trim(x) <> "" And Not .exists(Trim(x)) Then .Add Trim(x), Nothing
        Next
        If .Count > 0 Then RemoveDupes2 = Join(.keys, delim)
    End With
End Function

3. Затем сохраните и закройте этот код, вернитесь на рабочий лист и введите эту формулу = RemoveDupes2 (A2; ",") в пустую ячейку рядом с вашими данными, см. снимок экрана:

документ-удалить-дубликат-символы-1

4. Затем скопируйте формулу в нужные ячейки, и все повторяющиеся слова будут удалены из всех ячеек. Смотрите скриншот:

документ-удалить-дубликат-символы-1

Внимание: В приведенной выше формуле A2 указывает ячейку, которую вы хотите использовать, а запятая (,) обозначает знак препинания, разделяющий слова в ячейке, вы можете изменить его на любые другие знаки препинания по своему усмотрению.


Лучшие инструменты для работы в офисе

Kutools for Excel решает большинство ваших проблем и увеличивает вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма ...
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон...
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы... Предотвращение дублирования ячеек; Сравнить диапазоны...
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор ...
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое ...
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии...
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом ...
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF...
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
вкладка kte 201905

Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
офисный дно
Сортировать комментарии по
Комментарии (66)
Оценок пока нет. Оцените первым!
Этот комментарий был сведен к минимуму модератором на сайте
Все еще сломан ... на самом деле ничего не показывает. Вот данные моей ячейки: 27000, Basic, Products, Materials, From, Wood, Stone, Earthen, Raw, Materials, 27100, Basic, Forest, Products, General, 27110, Basic, Forest, Products, Sawmill, Products, 27120, Basic ,Forest,Products,Wood,Pulp,27200,Glass Очевидно, что там есть какие-то дубликаты. Оставляет ячейку пустой. Мысли?
Этот комментарий был сведен к минимуму модератором на сайте
Ничего себе, я тупой. Поскольку я хотел, чтобы извлекались только слова, я переименовал модуль RemoveDupes, но не изменил RemoveDupes позже в коде. Исправлено, бить себя молотком....
Этот комментарий был сведен к минимуму модератором на сайте
И я объединил RemoveDupes с ConCat (преимущество VBA, а не CON(I-SUCK-BECAUSE-I'M-MICROSOFT)CATENATE) в это: =RemoveDupes(ConCat(",",G495:G502),",") так он втянул мои клетки, а затем уничтожил все обманы. Спасибо за RemoveDupes, вот ConCat: функция ConCat (разделитель как вариант, ParamArray CellRanges () как вариант) как строка Dim Cell как диапазон, область как вариант, если IsMissing (разделитель), тогда разделитель = «» для каждой области в CellRanges, если TypeName ( Area) = "Range" Затем для каждой ячейки в области. Если Len(Cell.Value) Then ConCat = ConCat & Delimiter & Cell.Value Next Else ConCat = ConCat & Delimiter & Area End If Next ConCat = Mid(ConCat, Len(Delimiter) ) + 1) Конечная функция
Этот комментарий был сведен к минимуму модератором на сайте
Я попробовал ваше решение «Удалить повторяющиеся слова, разделенные знаками препинания с помощью определяемой пользователем функции», и оно отлично работает для нескольких слов в ячейке, НО не полностью решает мою проблему. У меня есть одна ячейка с несколькими значениями, и я хочу сравнить ее с другой ячейкой с несколькими значениями, а затем удалить дубликаты, существующие между двумя ячейками. Есть ли способ сделать это?
Этот комментарий был сведен к минимуму модератором на сайте
то же самое, пожалуйста, помогите
Этот комментарий был сведен к минимуму модератором на сайте
эта ветка еще жива? Я был бы очень признателен за некоторое понимание этой функции VBA.. мои вопросы связаны с кодом, где, если мне вообще нужно указать ему, чтобы найти конкретную пунктуацию в качестве разделителя.. если бы я использовал "@" как пунктуация?
Этот комментарий был сведен к минимуму модератором на сайте
Ваш совет потрясающий! Я отсортировал 58,400 2 записей примерно за 13 минуты и сэкономил неделю (или больше) работы. Моим дубликатам было немного сложнее превратить этот пример «V&O Liquid Fuel Lantern 1-2/13in blk Fuel Lantern» в этот «V&O Liquid Fuel Lantern 1-2/XNUMXin blk» спасибо.
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте, пожалуйста, мне нужна ваша помощь, я попробовал ваш код, но он не сработал, может быть, потому что у меня есть номера У меня есть повторяющиеся номера телефонов, разделенные запятыми Пожалуйста, скажите мне, что делать Спасибо
Этот комментарий был сведен к минимуму модератором на сайте
то же самое, пожалуйста, помогите
Этот комментарий был сведен к минимуму модератором на сайте
БЛЕСТЯЩЕЕ спасибо! спасибо! спасибо!
Этот комментарий был сведен к минимуму модератором на сайте
Круто, спасибо!.....
Этот комментарий был сведен к минимуму модератором на сайте
Привет, чувак, мне нужна твоя помощь. Что мне делать, если я хочу извлечь дубликат? В A1 (asdfghjiklkk) Итак, k повторяется. Я хочу A2 (k), что мне делать?
Этот комментарий был сведен к минимуму модератором на сайте
Можно ли настроить функцию, если есть определенное слово, которое я хочу сохранить дублированным, а остальные не дублируются?
Этот комментарий был сведен к минимуму модератором на сайте
Просто хотел бы сохранить большое спасибо за это руководство, сэкономил мне много работы! :)
Этот комментарий был сведен к минимуму модератором на сайте
Это очень полезно. Я попробовал это, и это работает для меня как исключение. Превосходно !!!!
Этот комментарий был сведен к минимуму модератором на сайте
Это отличное и простое решение для поиска повторяющихся фраз в одной ячейке, намного проще, чем некоторые из многословных макросов, которые я нашел, когда искал ответ на свою проблему, спасибо!
Этот комментарий был сведен к минимуму модератором на сайте
Спасибо за этот код - он сэкономил мне кучу времени.
Этот комментарий был сведен к минимуму модератором на сайте
У меня есть такие данные, как 1. Показать ниже в одной ячейке, и я хочу поставить лайк 2. 1. ZERPUR,MAHENDRAGARH, HARYANA-123029, 30771237, 8813073653, ZERPUR(16),MAHENDRAGARH, HARYANA-123029, 30771237, 8813073653 Мне нужно это например: - ZERPUR, MAHENDRAGARH, HARYANA-123029, 30771237, 8813073653 Спасибо и с уважением Хануман Сингх 9034509168
Этот комментарий был сведен к минимуму модератором на сайте
научите меня как? это тоже надо знать..
Этот комментарий был сведен к минимуму модератором на сайте
можем ли мы узнать положение 1-й строчной буквы


Экзамен - RAMSHsJHSAhsjDDD ------хочу узнать позицию 1й строчной буквы по формуле =s
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Мехарбан,
Вы можете применить следующую формулу массива, чтобы получить позицию первой строчной буквы:
=MATCH(1,IF(ABS(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))-109.5)<=12.5,1),0)
Не забудьте одновременно нажать клавиши Ctrl + Shift + Enter.


Надеюсь, это поможет вам, спасибо!
Этот комментарий был сведен к минимуму модератором на сайте
привет скайян

работает исправно.....
на самом деле я хотел того же..

огромное спасибо !!


Мехарбан Сингх приятель
Этот комментарий был сведен к минимуму модератором на сайте
Как удалить дубликаты совпадающих строк... подскажите пожалуйста


С Уважением,
Kiran
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Киран,
Можете ли вы привести пример вашей проблемы? Или вы можете вставить изображение вложения.
Ждем Вашего ответа!
Этот комментарий был сведен к минимуму модератором на сайте
большое спасибо, это помогает мне больше. Но я хочу больше конкретики для моего набора данных.
У меня есть данные двух столбцов. ID и информация. В информационном столбце для каждой ячейки повторяются идентификаторы проекта, такие как «Кант-, Удп-, Акр- и т. Д.». Для моего набора данных project_id больше 15, и он исправлен. Итак, я хочу удалить Repeat_id из ячейки, но сохранить первый.
Пример: Кант-526 (0.0287),Кант-527 (0.0113),Кант-528 (0.0262) /// Кант-526 (0.0287),527 (0.0113),528 (0.0262),
Кант-543 (0.0685),Кант-544 (0.0685),Удп-097 (0.0141) /// Кант-543 (0.0685),544 (0.0685),Удп-097 (0.0141)

Образец изображения прилагается здесь. Есть ли какое-нибудь решение для этого.
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Имран,
Извините, что не решил вашу проблему, если у кого-то есть хорошая идея, пожалуйста, прокомментируйте здесь.
Спасибо!
Этот комментарий был сведен к минимуму модератором на сайте
У меня есть собственное решение. Я использовал здесь формулу ПОДСТАВИТЬ, но она слишком велика для моих данных. так что повторите это два или три раза для получения надлежащего результата.

=ПОДСТАВИТЬ(ПОДСТАВИТЬ("Кант-","",2), ("Кант-","",2)
Здесь 1-й 2 для второго Канта- замена и для следующего каждого Канта-удаление просто добавить ("Кант-","",2) доп. Это работает для меня. Но я предпочитаю хороший VBA.
Этот комментарий был сведен к минимуму модератором на сайте
Спасибо за код.

Не могли бы вы мне помочь? Я использую функцию макроса для удаления слов, разделенных пунктуацией ячейки, однако мои данные не слова, а на самом деле фразы. Например, вместо «KTE, KTO, KTW, KTO» на самом деле короткие описания, такие как «подготовить счет, просмотреть мои электронные письма, обновить контракты, просмотреть мои электронные письма».

Можно ли обновить VBA, чтобы удалить повторяющиеся фразы вместо слов?

Большое спасибо, это будет действительно очень полезно.
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Алонсо,
Чтобы удалить повторяющуюся фразу, вам может помочь следующая определяемая пользователем функция, попробуйте ее.

Функция RemoveDuplicateValue (xStr как строка, xDelim как строка) как строка
Размерность xValue
Если (Len(xDelim) > 0) И (Len(Trim(xStr)) > 0), то
С CreateObject("Scripting.Dictionary")
Для каждого xValue в Split(xStr, xDelim)
Если Trim(xValue) <> "" And Not .exists(Trim(xValue)) Then .Add Trim(xValue), ничего
Далее
Если .Count > 0, то RemoveDuplicateValue = Join(.keys, xDelim)
Конец с
Еще
RemoveDuplicateValue = xStr
End If
End Function

Затем примените эту формулу: =RemoveDuplicateValue(A2,","), измените разделитель на свой собственный.
Этот комментарий был сведен к минимуму модератором на сайте
Привет Скайян,



Я надеюсь получить некоторую помощь со следующей ячейкой:

ПР-ПУЭРТО-РИКО; США-СОЕДИНЕННЫЕ ШТАТЫ; США-СОЕДИНЕННЫЕ ШТАТЫ

Мне нужно удалить дубликаты США-СОЕДИНЕННЫЕ ШТАТЫ, так как мой инструмент загрузки не допускает дубликатов.



Я использовал вышеуказанный VBA и заменил разделитель формул на «;». Является ли дефис причиной проблемы? Он возвращает #ИМЯ? всякий раз, когда я запускаю формулу. Я новичок в макросах/VBA, но я убедился, что файл был сохранен как файл с поддержкой макросов. Я действительно пытался следовать за ними до Т.


Спасибо за всю эту и без того замечательную информацию, так как она помогла с другим проектом, который мне также пришлось завершить, и я очень ценю все дополнительные.
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Майкл,
Вы имеете в виду удалить все повторяющиеся фразы из ячейки и оставить только уникальные?
С нетерпением ждем вашего ответа!
Этот комментарий был сведен к минимуму модератором на сайте
Это результат, который я ищу:

Текущий: PR-ПУЭРТО-РИКО; США-СОЕДИНЕННЫЕ ШТАТЫ; США-СОЕДИНЕННЫЕ ШТАТЫ
Желаемый: PR-PUERTO RICO; США-СОЕДИНЕННЫЕ ШТАТЫ

Надеюсь, это имеет смысл, и большое спасибо за быстрый ответ.
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Майкл,
Вам просто нужно применить приведенный ниже код, а затем использовать эту формулу: =RemoveDuplicateValue(A2,";"). Пожалуйста, попробуйте, надеюсь, это поможет вам!

Функция RemoveDuplicateValue (xStr как строка, xDelim как строка) как строка
Размерность xValue
Если (Len(xDelim) > 0) И (Len(Trim(xStr)) > 0), то
С CreateObject("Scripting.Dictionary")
Для каждого xValue в Split(xStr, xDelim)
Если Trim(xValue) <> "" And Not .exists(Trim(xValue)) Then .Add Trim(xValue), ничего
Далее
Если .Count > 0, то RemoveDuplicateValue = Join(.keys, xDelim)
Конец с
Еще
RemoveDuplicateValue = xStr
End If
End Function
Этот комментарий был сведен к минимуму модератором на сайте
Огромное спасибо. Ваш ответ был более желанным, чем моя чашка кофе!
Этот комментарий был сведен к минимуму модератором на сайте
Привет, это действительно полезно
Но я хочу удалить целые слова после "NO TO:"

например: НЕТ ДЛЯ: [C11bx1]

НЕТ: [C11bx3] вот так
Здесь еще нет комментариев
Загрузить ещё
Оставляйте свои комментарии
Публикация как гость
×
Оценить этот пост:
0   Характеристики
Предлагаемые места

Подписывайтесь на Нас

Copyright © 2009 - www.extendoffice.ком. | Все права защищены. Питаться от ExtendOffice, | Карта сайта
Microsoft и логотип Office являются товарными знаками или зарегистрированными товарными знаками Microsoft Corporation в США и / или других странах.
Защищено Sectigo SSL