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

Як видалити повторювані символи або слова в рядку комірки?

Припустимо, що в кожній комірці є повторювані символи або слова, і ви хочете видалити дублікати і залишити лише унікальні символи або слова. Як ви могли вирішити цю проблему в Excel?

Видаліть повторювані символи текстового рядка за допомогою функції користувача

Видаліть повторювані слова, розділені знаками пунктуації, за допомогою функції, визначеної користувачем


стрілка синя права міхур Видаліть повторювані символи текстового рядка за допомогою функції користувача

Якщо у вас є список текстових рядків, то тепер вам потрібно видалити повторювані символи, як показано на наступному знімку екрана. Тут я можу поговорити про код VBA, щоб з ним боротися.

doc-видалення-дублік-символів-1

1. Утримуйте клавішу ALT + F11 ключі, щоб відкрити Вікно Microsoft Visual Basic для програм.

2. Клацання Insert > Модуліта вставте наступний код у Вікно модуля.

Код 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 це комірка даних, з якої потрібно видалити дублікати) у порожню комірку, крім ваших даних, див. знімок екрана:

doc-видалення-дублік-символів-1

4. А потім перетягніть маркер заповнення до комірок діапазону, до яких потрібно застосувати цю формулу, усі повторювані символи негайно видалено з кожної комірки.

doc-видалення-дублік-символів-1


стрілка синя права міхур Видаліть повторювані слова, розділені знаками пунктуації, за допомогою функції, визначеної користувачем

Якщо в комірці є кілька слів, розділених певними розділовими знаками, ви також можете видалити дублікати слів, як завгодно. Будь ласка, виконайте такі дії:

1. Утримуйте клавішу ALT + F11 ключі, щоб відкрити Вікно Microsoft Visual Basic для програм.

2. Клацання Insert > Модуліта вставте наступний код у Вікно модуля.

Код 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, ",") у порожню комірку поруч із вашими даними, див. знімок екрана:

doc-видалення-дублік-символів-1

4. Потім скопіюйте формулу до потрібних комірок, і всі повторювані слова будуть видалені з усіх комірок. Дивіться знімок екрана:

doc-видалення-дублік-символів-1

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


Найкращі інструменти для підвищення продуктивності офісу

Kutools для Excel вирішує більшість ваших проблем і збільшує продуктивність на 80%

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

Вкладка Office забезпечує інтерфейс з вкладками для Office і значно спрощує вашу роботу

  • Увімкніть редагування та читання на вкладках у Word, Excel, PowerPoint, Publisher, Access, Visio та Project.
  • Відкривайте та створюйте кілька документів на нових вкладках того самого вікна, а не в нових вікнах.
  • Збільшує вашу продуктивність на 50% та зменшує сотні клацань миші для вас щодня!
дно офісної таблиці
Коментарі (66)
Поки немає оцінок. Оцініть першим!
Цей коментар був мінімізований модератором на сайті
Все ще зламаний... насправді нічого не показує. Ось дані моїх клітинок: 27000, Basic, Products, Materials, From, Wood, Stone, Earth, Raw, Materials, 27100, Basic, Forest, Products, General, 27110, Basic, Forest, Products, Sawmill, Products27120,Basic ,Ліс,Продукти,Деревина,Цюлюлоза,27200,Скло Очевидно, що там є якісь обманки. Залишає клітинку порожньою. Думки?
Цей коментар був мінімізований модератором на сайті
Нічого, я тупий. Оскільки я хотів лише витягнути слова, я перейменував модуль RemoveDupes, але не змінив RemoveDupes пізніше в коді. Виправлено, б'ючи молотком....
Цей коментар був мінімізований модератором на сайті
І я поєднав RemoveDupes з ConCat (добро VBA, а не CON(I-SUCK-BECAUSE-I'M-MICROSOFT)CATENATE) у це: =RemoveDupes(ConCat(",",G495:G502),","), тому він затягнув мої клітини, а потім знищив усіх обманщиків. Дякую за RemoveDupes, ось ConCat: функція ConCat(розділювач як варіант, ParamArray CellRanges() як варіант) як рядок Dim Cell як діапазон, область як варіант, якщо відсутня (роздільник) Тоді роздільник = "" для кожної області в CellRanges, якщо тип Name( Area) = "Діапазон" Тоді для кожної клітинки в області Якщо Len(Cell.Value) Тоді ConCat = ConCat & Delimiter & Cell.Value Next Else ConCat = ConCat & Delimiter & Area End Якщо наступний ConCat = Mid(ConCat, Len(Розділитель ) + 1) Функція завершення
Цей коментар був мінімізований модератором на сайті
Я спробував ваше рішення "Видалити повторювані слова, розділені розділовими знаками, за допомогою функції, визначеної користувачем", і воно чудово працює для кількох слів у клітинці, АЛЕ не повністю вирішує мою проблему. У мене є одна клітинка, яка має кілька значень, і я хочу порівняти з іншою клітинкою з кількома значеннями, а потім попросити її видалити дублікати, які існують між двома клітинками. Чи є спосіб це зробити?
Цей коментар був мінімізований модератором на сайті
те ж саме тут, будь ласка, допоможіть
Цей коментар був мінімізований модератором на сайті
ця тема ще жива? Я був би дуже вдячний за розуміння цієї функції VBA.. мої запитання стосуються коду, де, якщо взагалі потрібно, мені потрібно вказати йому знайти конкретну пунктуацію як роздільник.. якби я використовував "@" як розділові знаки?
Цей коментар був мінімізований модератором на сайті
Ваша порада дивовижна! Я відсортував 58,400 2 записів приблизно за 13 хвилини і заощадив один тиждень (або більше) роботи. Моїм дублікатам було трохи важче перетворити цей приклад "V&O Liquid Fuel Lantern 1-2/13in blk паливний ліхтар" в цей "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, потрібно це подобається :- ZERPUR,MAHENDRAGARH, HARYANA-30771237, 8813073653, 123029 Дякую та з повагою Хануман Сінгх 30771237
Цей коментар був мінімізований модератором на сайті
навчи мене як? це теж треба знати..
Цей коментар був мінімізований модератором на сайті
чи можемо ми дізнатися позицію 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
Цей коментар був мінімізований модератором на сайті
Привіт, Кіране,
Чи можете ви навести приклад вашої проблеми? Або ви можете вставити вкладене зображення.
Чекаємо Вашої відповіді!
Цей коментар був мінімізований модератором на сайті
дуже дякую, це мені більше допомагає. Але я хочу трохи більше для мого набору даних.
У мене є дані двох стовпців. Ідентифікатор та інформація. У інформаційній колонці повторюється ідентифікатор проекту для комірки, наприклад "Kant-, Udp-, Akr- тощо". Для мого набору даних project_id більше 15, і це виправлено. Тому я хочу видалити repeated_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)

Зразок зображення додається тут. Чи є якесь рішення для цього.
Цей коментар був мінімізований модератором на сайті
Привіт, Імран,
Вибачте, що не вирішив вашу проблему, якщо хтось має гарну ідею, будь ласка, прокоментуйте тут.
Дякую!
Цей коментар був мінімізований модератором на сайті
У мене є власне рішення. Я використав формулу SUBSTITUTE тут, але вона завелика для моїх даних. тому повторіть це два або три рази, щоб отримати належний результат.

=ЗАМІНИТИ(ЗАМІСТИТИ("Кант-","",2), ("Кант-","",2)
Тут 1-е 2 для другої заміни Канта і для наступного кожного видалення Канта просто додайте ("Кант-","",2) додатково. Це працює для мене. Але я віддаю перевагу хорошим VBA.
Цей коментар був мінімізований модератором на сайті
Дякуємо за код.

Чи можете ви мені допомогти? Я використовую функцію макросу, щоб видалити слова, розділені розділовими знаками клітинки, однак мої дані – це не слова, а фрази. Наприклад, замість «KTE, KTO, KTW, KTO» насправді є короткі описи на кшталт «підготувати рахунок, переглянути мої електронні листи, оновити контракти, переглянути мої листи».

Чи можна було б оновити VBA, щоб видалити повторювані фрази замість слів?

Дуже дякую, це насправді буде дуже корисно.
Цей коментар був мінімізований модератором на сайті
Привіт, Алонсо,
Щоб видалити повторювані фрази, вам може допомогти наведена нижче функція, яку визначає користувач. Спробуйте.

Функція RemoveDuplicateValue(xStr як рядок, xDelim як рядок) як рядок
Dim xValue
Якщо (Len(xDelim) > 0) і (Len(Trim(xStr)) > 0), то
За допомогою CreateObject("Scripting.Dictionary")
Для кожного xValue In Split(xStr, xDelim)
Якщо Trim(xValue) <> "" And Not .exists(Trim(xValue)) then .Add Trim(xValue), Nothing
Далі
Якщо .Count > 0, то RemoveDuplicateValue = Join(.keys, xDelim)
Кінець з
Ще
RemoveDuplicateValue = xStr
End If
End Function

Потім застосуйте цю формулу: =RemoveDuplicateValue(A2,","), змініть роздільник на свій власний.
Цей коментар був мінімізований модератором на сайті
Привіт Скайян,



Я сподіваюся отримати допомогу з такою клітинкою:

ПР-ПУЕРТО-РІКО; США-США; США-США

Мені потрібно видалити дублікат США-США, оскільки мій інструмент завантаження не дозволить дублікати.



Я використав наведений вище VBA і замінив роздільник формули на ";". Чи є проблема через дефіс? Він повертає #NAME? щоразу, коли я запускаю формулу. Я новачок у роботі з макросами/VBA, але я переконався, що файл збережено як файл із підтримкою макросів. Я дійсно намагався слідувати цим до T.


Дякую за всю цю і без того чудову інформацію, оскільки вона допомогла з іншим проектом, який я також мав завершити, і будь-що додаткове дуже цінується.
Цей коментар був мінімізований модератором на сайті
Привіт, Михайло,
Ви маєте на увазі видалити всі повторювані фрази з клітинки і залишити лише унікальні?
Чекаємо на вашу відповідь!
Цей коментар був мінімізований модератором на сайті
Ось результат, який я шукаю:

Поточний: PR-PUERTO RICO; США-США; США-США
Бажано: PR-PUERTO RICO; США-США

Сподіваюся, це має сенс, і дуже дякую за швидку відповідь.
Цей коментар був мінімізований модератором на сайті
Привіт, Михайло,
Вам просто потрібно застосувати наведений нижче код, а потім використати цю формулу: =RemoveDuplicateValue(A2,";"). Будь ласка, спробуйте, сподіваюся, це допоможе вам!

Функція RemoveDuplicateValue(xStr як рядок, xDelim як рядок) як рядок
Dim xValue
Якщо (Len(xDelim) > 0) і (Len(Trim(xStr)) > 0), то
За допомогою CreateObject("Scripting.Dictionary")
Для кожного xValue In Split(xStr, xDelim)
Якщо Trim(xValue) <> "" And Not .exists(Trim(xValue)) then .Add Trim(xValue), Nothing
Далі
Якщо .Count > 0, то RemoveDuplicateValue = Join(.keys, xDelim)
Кінець з
Ще
RemoveDuplicateValue = xStr
End If
End Function
Цей коментар був мінімізований модератором на сайті
Щиро дякую. Ваша відповідь була більш приємною, ніж моя чашка кави!
Цей коментар був мінімізований модератором на сайті
Привіт, це дійсно корисно
Але я хочу видалити цілі слова після "НІ:"

наприклад: НІ: [C11bx1]

НІ: [C11bx3] ось так
There are no comments posted here yet
Load More
Залишайте свої коментарі
Публікація як гість
×
Оцініть цю публікацію:
0   Персонажі
Рекомендовані місця

Слідуй за нами

Copyright © 2009 - WWW.extendoffice.com. | Всі права захищені. На основі ExtendOffice. | Карта сайту
Microsoft та логотип Office є товарними знаками або зареєстрованими товарними знаками Microsoft Corporation у США та / або інших країнах.
Захищений Sectigo SSL