У меня есть эта функция

Public Function CONCATENATESPECIAL(rng As Range) As String
Dim rng1 As Range

CONCATENATESPECIAL = ""

For Each rng1 In rng
    If (Not Rows(rng1.Row).Hidden) And (rng1.Value <> "") Then
    CONCATENATESPECIAL = CONCATENATESPECIAL & rng1.Text & "|"
    End If
Next rng1

End Function

Это в основном объединяет значения в некотором диапазоне с "|".

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

заранее спасибо

1 ответ1

1

Я бы, наверное, пошел по этому пути. Я бы добавил все в коллекцию и установил ключ равным значению диапазона. Следующий бит on error resume next остановит его от ошибки, когда он попытается поместить дубликат в коллекцию. Мне нужно немного больше проверки, но по большей части этого должно быть достаточно.

Public Function concatenatespecial(rng As Range) As String

Dim col As New Collection
Dim rng1 As Range
Dim str As String
Dim itm As Variant

On Error Resume Next
For Each rng1 In rng
    If rng1 <> "" Then
        col.Add rng1.Value, rng1.Value
    End If
Next rng1
On Error GoTo 0

For Each itm In col
    str = str & "|" & itm
Next itm

concatenatespecial = str

End Function

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .