VBA: поиск в столбце первого экземпляра строки и присвоение новому массиву или строке - PullRequest
0 голосов
/ 07 августа 2020

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

введите описание изображения здесь

1 Ответ

1 голос
/ 07 августа 2020

Используя Excel 365.

С данными в A1 через A11 , в другой ячейке введите:

=UNIQUE(A1:A11)

, чтобы получить:

enter image description here

or:

=TEXTJOIN(",",TRUE,UNIQUE(A1:A11))

to get a comma-separated list:

введите описание изображения здесь

РЕДАКТИРОВАТЬ # 1:

С VBA попробуйте этот UDF:

Public Function unikue(rng As Range)
    Dim arr, c As Collection, r As Range
    Dim nCall As Long, nColl As Long
    Dim i As Long
    Set c = New Collection
    
    nCall = Application.Caller.Count
    
    On Error Resume Next
        For Each r In rng
            c.Add r.Text, CStr(r.Text)
        Next r
    On Error GoTo 0
    nColl = c.Count
    
    
    If nCall > nColl Then
        ReDim arr(1 To nCall, 1 To 1)
        For i = 1 To nCall
            arr(i, 1) = ""
        Next i
    Else
        ReDim arr(1 To nColl, 1 To 1)
    End If
    
    For i = 1 To nColl
        arr(i, 1) = c.Item(i)
    Next i
    
    unikue = arr
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...