Заказать макрос
Разрабатываем макросы на заказ. Любой сложности. Быстро и качественно.
Подробнее...
Готовые решения » Надстройка VBA-Excel » Сцепить диапазон

Формула СЦЕПИТЬДИАПАЗОН

Формула сцепляет все ячейки указанного диапазона. В отличие от стандартной функции СЦЕПИТЬ не требует перечисления ячеек (указывать ссылку на каждую ячейку отдельно)

Описание функции

Функция =СЦЕПИТЬДИАПАЗОН(ДИАПАЗОН, [РАЗДЕЛИТЕЛЬ]) имеет два аргумента:

  • - ДИАПАЗОН - диапазон ячеек, которые необходимо сцепить.
  • - [РАЗДЕЛИТЕЛЬ] - символ-разделитель, который будет вставляться между значениями ячеек. Данный аргумент является не обязательным.

Аналогичная функция появилась только в Excel 2016. Если у Вас Excel ранней версии, то надстройка полностью исправляет это упущение разработчиков.

Далее привожу множество примеров использования данной функции.

Пример 1

Просто сцепить все ячейки диапазона, вставив между ними пробел.

Этот пример можно сделать также с помощью стандартной функции СЦЕПИТЬ, однако для этого придется перечислить все ячейки диапазона. Если их две-три, то это не проблема, а вот если их гораздо больше, то выбор в пользу функции СЦЕПИТЬДИАПАЗОН думаю очевиден.

Пример 1 функции СЦЕПИТЬДИАПАЗОН

Пример 2

Перечислить все фамилии через запятую.

Обратите внимание, что в качестве разделителя указана запятая с пробелом (", "). Если не указать пробел, то все ячейки "сольются".

Пример 2 функции СЦЕПИТЬДИАПАЗОН

Пример 3

Можно сцепить более одного столбца. При этом сцепление ячеек происходит построчно.

Пример 3 функции СЦЕПИТЬДИАПАЗОН

Пример 4

Используя промежуточные вычисления можно добиться нужного решения значительно проще и быстрее. Следующий пример демонстрирует как перечислить фамилии и инициалы, ставя запятую только после инициалов.

Пример 4 функции СЦЕПИТЬДИАПАЗОН

Код на VBA

Код короткий, но весьма полезный!

Public Function СЦЕПИТЬДИАПАЗОН(ByRef ДИАПАЗОН As Excel.Range, Optional ByVal РАЗДЕЛИТЕЛЬ As String = "") As String
 
    Dim rCell As Range
    Dim MergeText As String
 
    For Each rCell In ДИАПАЗОН
        If rCell.Text <> "" Then
            MergeText = MergeText & РАЗДЕЛИТЕЛЬ & rCell.Text
        End If
    Next
 
    MergeText = Mid(MergeText, Len(РАЗДЕЛИТЕЛЬ) + 1)
    СЦЕПИТЬДИАПАЗОН = MergeText
End Function
Надстройка
VBA-Excel
Надстройка для Excel содержит большой набор полезных функций, с помощью которых вы значительно сократите время и увеличите скорость работы с программой.

Комментарии:

comments powered by Disqus