Как удалить повторяющиеся слова в ячейке? - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь удалить повторяющиеся слова в ячейке.Например, в ячейке А1 у меня есть следующее:

"BOX TIL Rank Fifth TIL Over 01"

Я пытаюсь выяснить, как Excel будет смотреть в эту ячейку и удалит вторую "TIL", чтобы она выглядела следующим образом:

"BOX TIL Rank Fifth Over 01"

Я пытаюсь сделать это не только в одном, но и во всем столбце клеток.Другая проблема заключается в том, что некоторые ячейки имеют более длинные строки, например, одна может выглядеть так, как указано выше, а другая может выглядеть так:

"BOX TIL Seventeen TIL COMM 03"

Любая помощь будет принята с благодарностью!

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Выберите ячейки, которые вы хотите обработать, и запустите этот короткий макрос VBA:

Sub RemoveDups()
    Dim r As Range, s As String, arr
    Dim c As Collection

    For Each r In Selection
        Set c = New Collection
        arr = Split(r.Value, " ")
        For i = LBound(arr) To UBound(arr)
            On Error Resume Next
                c.Add arr(i), CStr(arr(i))
            On Error GoTo 0
        Next i

        s = ""
        For i = 1 To c.Count
            s = s & " " & c.Item(i)
        Next i
        If Left(s, 1) = " " Then s = Mid(s, 2)
        r.Value = s
    Next r
End Sub

До:

enter image description here

ипосле:

enter image description here

0 голосов
/ 28 февраля 2019

Вам нужно пройтись по ячейкам и использовать следующую функцию для удаления повторяющихся слов.

Public Function RemoveDuplicateWords(InputString As String) As String
    Dim InputArray() As String
    InputArray = Split(InputString, " ")

    Dim DictUnique As Object
    Set DictUnique = CreateObject("Scripting.Dictionary")

    Dim OutputString As String

    Dim Word As Variant
    For Each Word In InputArray
        If Not DictUnique.Exists(Word) Then
            DictUnique.Add Word, 1
            OutputString = OutputString & " " & Word
        End If
    Next Word

    RemoveDuplicateWords = Trim$(OutputString)
End Function

Как работает функция?

  • Она разбивает строку на пробелы в массив
  • . Использует словарь, чтобы проверить, являются ли слова уникальными
  • Если слово еще не в словаре, оно добавляется в OutputString,повторяющиеся слова не добавляются в OutputString.

Вы даже можете использовать его как формулу

=RemoveDuplicateWords(A1)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...