Найти повторяющиеся значения в случайном порядке через запятую значения в Excel? - PullRequest
0 голосов
/ 02 июня 2019

У меня есть столбец с запятыми отдельными значениями:

enter image description here

      A
1 abc,cbd,cdb
2 abc,cdd
3 abc,cdb,cbd
4 cdd,cbd,cdb

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

Это фактические данные, из которых с 75 тыс. Записей это немного усложнило.

Ответы [ 2 ]

0 голосов
/ 06 июня 2019

ЭЙ ПОЛУЧИЛ ОТВЕТ, ЧТОБЫ УСТАНОВИТЬ ИХ АЛБАБЕТИЧЕСКИ ТАК НА ДУБЛИРОВАНИЕ ФИЛЬТРА ИЛИ УНИКАЛЬНУЮ ИДЕНТИФИКАЦИЮ СТАТЬ ЛЕГКО


Sub SortString()
    Dim MyArray As Variant, varSwap As Variant
    Dim i As Long, min As Long, max As Long, LastRow As Long
    Dim str As String
    Dim MyRange As Range
    Dim IsSwapped As Boolean

    LastRow = Cells(Rows.Count, "A").End(xlUp).Row

    Set MyRange = Range("A2:A" & LastRow)
    For Each cell In MyRange
        MyArray = Split(cell.Value, ",")

        min = LBound(MyArray)
        max = UBound(MyArray) - 1
        Do
            IsSwapped = False
            For i = min To max
                If Trim(MyArray(i)) > Trim(MyArray(i + 1)) Then
                    varSwap = MyArray(i)
                    MyArray(i) = MyArray(i + 1)
                    MyArray(i + 1) = varSwap
                    IsSwapped = True
                End If
            Next
            max = max - 1
        Loop Until Not IsSwapped

        For i = LBound(MyArray) To UBound(MyArray)
            Debug.Print MyArray(i)
            If str = "" Then
                str = Trim(MyArray(i))
            Else
                str = str & ", " & Trim(MyArray(i))
            End If
        Next i
        cell.Offset(0, 1).Value = str
        str = ""
    Next cell
End Sub

0 голосов
/ 02 июня 2019

Попробуйте в B1:

=TRIM(MID(SUBSTITUTE(TEXTJOIN(",",TRUE,$A$1:$A$4),",",REPT(" ",LEN(TEXTJOIN(",",TRUE,$A$1:$A$4)))),(ROW()-1)*LEN(TEXTJOIN(",",TRUE,$A$1:$A$4))+1,LEN(TEXTJOIN(",",TRUE,$A$1:$A$4))))

Перетащите вниз.

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

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