Объединение ячеек при удалении дубликатов (удалите первую запятую) - PullRequest
0 голосов
/ 31 января 2019

Итак, я смог найти, как объединить строку / столбец ячеек при удалении дубликатов.

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

", a, b, c, d, e" вместо просто "a, b, c, d, e"

Public Function MakeList(myRange As Range)
    Application.Volatile
    Dim c As Range

    With CreateObject("Scripting.Dictionary")
        For Each c In myRange
            If Rows(c.Row).Hidden = False Then .Item(c.Value) = c.Value
        Next c
        MakeList = Join(.keys, " ,")
    End With
End Function

Я надеюсь, что смогу получитьизбавиться от этой первой запятой, если это возможно.Спасибо.

1 Ответ

0 голосов
/ 31 января 2019

Вы не должны получать ведущий разделитель, если не начинаете с пустой ячейки.

Public Function MakeList(myRange As Range)
    Application.Volatile
    Dim c As Range

    With CreateObject("Scripting.Dictionary")
        For Each c In myRange
            If not c.parent.Rows(c.Row).Hidden and trim(c.value) <> "" Then .Item(c.Value) = c.Value
        Next c
        MakeList = Join(.keys, " ,")
    End With
End Function

При желании вы можете удалить ведущий разделитель перед возвратом объединенной строки.

Public Function MakeList(myRange As Range, _
                         optional d as string = " ,")
    Application.Volatile
    Dim c As Range

    With CreateObject("Scripting.Dictionary")
        For Each c In myRange
            If c.parent.Rows(c.Row).Hidden = False Then .Item(c.Value) = c.Value
        Next c
        MakeList = Join(.keys, d)
        if left(makelist, len(d) = d then makelist = mid(makelist, len(d)+1)
    End With
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...