Как отфильтровать ячейки, содержащие повторяющиеся текстовые строки (слова)

Как отфильтровать ячейки, содержащие повторяющиеся текстовые строки (слова)

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

Много раз я перевожу его запрос в учебник по Excel на этом сайте, потому что он может быть полезен и другим моим читателям.

Это тоже один из таких уроков.

Мой друг позвонил мне на прошлой неделе со следующими вопросами:

У меня есть адресные данные в столбце Excel, и я хочу идентифицировать/фильтровать ячейки, содержащие повторяющиеся текстовые строки (слова) в адресе.

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

Выявление повторяющихся текстовых строк в Excel — адрес набора данных

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

考慮 一下 :

  • Любая текстовая строка может повторяться в этом наборе данных.Например, это может быть название региона или города, или и то, и другое.
  • Слова разделены пробелами, и нет никакой согласованности в том, следует ли название города после шести или восьми символов.
  • Таких записей тысячи, и нужно отфильтровать те, в которых есть повторяющиеся текстовые строки.

После рассмотрения многих вариантов, таких как текст в столбцы и формулы, я, наконец, решил использовать VBA для выполнения этой работы.

Поэтому я создал пользовательскую функцию VBA («IdDuplicate») для анализа этих ячеек и выдачи мне TRUE, если в текстовой строке есть повторяющиеся слова, и FALSE, если дубликатов нет (как показано ниже):

Выявление повторяющихся текстовых строк в Excel — демонстрация адреса набора данных

Эта пользовательская функция анализирует каждое слово в текстовой строке и проверяет, сколько раз оно встречается в тексте.Возвращает TRUE, если счетчик больше 1;В противном случае вернуть ЛОЖЬ.

Кроме того, он был создан только для подсчета слов, содержащих более трех символов.

Когда у меня есть данные TRUE/FALSE, я могу легко отфильтровать все записи, которые являются TRUE.

Теперь позвольте мне показать вам, как это сделать в Excel.

Код VBA для пользовательской функции

Это делается путем создания пользовательской функции в VBA.Затем эту функцию можно использовать как любую другую функцию рабочего листа в Excel.

связанный вопрос  Обзор CCleaner Professional Edition - новые функции и утилита обновления драйверов

Вот его код VBA:

Функция IdDuplicates(rng As Range) As String Dim StringtoAnalyze As Variant Dim i As Integer Dim j As Integer Const minWordLen As Integer = 4 StringtoAnalyze = Split(UCase(rng.Value), " ") For i = UBound(StringtoAnalyze) To 0 Шаг -1 Если Len(StringtoAnalyze(i)) < minWordLen, то GoTo SkipA For j = 0 To i - 1 Если StringtoAnalyze(j) = StringtoAnalyze(i), тогда IdDuplicates = "TRUE" GoTo SkipB End If Next j SkipA: Next i IdDuplicates = "FALSE" SkipB: Завершить функцию

Как использовать этот код VBA

Теперь, когда у вас есть код VBA, вам нужно поместить его в серверную часть Excel, чтобы он мог работать как обычная функция рабочего листа.

связанный вопрос  Проблема KB5003173 — Лучшее исправление для обновления ошибки 0x800f0922 не удалось

Вот шаги, чтобы поместить код VBA в серверную часть:

  1. Перейдите на вкладку разработчика.Выявление повторяющихся текстовых строк — вкладка «Разработчик» на ленте
  2. Щелкните Visual Basic (также можно использовать сочетание клавиш ALT+F11).Выберите Visual Basic на ленте.
  3. В открытом бэкэнде редактора VB щелкните правой кнопкой мыши любой объект рабочей книги.
  4. Перейдите в «Вставить» и нажмите «Модуль».Это вставит объект модуля книги.Вставить модуль для пользовательского кода VAB
  5. В окне кода модуля скопируйте и вставьте код VBA, упомянутый выше.Код VBA для бэкэнда — определение повторяющихся текстовых строк

Когда у вас есть код VBA в бэкэнде, вы можете использовать функцию «IdDuplicates», как и любую другую обычную функцию рабочего листа.

Эта функция принимает один параметр — ссылку на ячейку, в которой находится текст.

Результат этой функции ИСТИНА (если в ней есть повторяющиеся слова) или ЛОЖЬ (если нет повторяющихся слов).Когда у вас есть этот список ИСТИНА/ЛОЖЬ, вы можете отфильтровать те, у которых есть ИСТИНА, чтобы получить все ячейки, в которых есть повторяющиеся текстовые строки.

Примечание. Код, который я создал, предназначен только для учета слов, длина которых превышает три символа.Это гарантирует, что если в текстовой строке есть слова длиной 1, 2 или 3 символа (например, 12 A, KGM или LDA), эти слова будут игнорироваться при подсчете дубликатов.При необходимости вы можете легко изменить это в коде.

Эта функция доступна только в рабочей книге, в которую вы скопировали код модуля.Если вы хотите, чтобы этот код был доступен и в других книгах, вам нужно скопировать и вставить этот код в эти книги.Кроме того, вы можете создать надстройку (включение которой сделает эту функцию доступной во всех книгах в вашей системе).

Кроме того, не забудьте сохранить эту книгу с расширением .xlsm (поскольку она содержит код макроса).

о, привет 👋Рад встрече.

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

связанный вопрос  Как сортировать по фамилии в Excel (простое руководство)

Оставить комментарий