Как сцепить диапазон ячеек в excel
Перейти к содержимому

Как сцепить диапазон ячеек в excel

  • автор:

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

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

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

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

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

Пример 1

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

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

Пример 2

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

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

Пример 3

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

Пример 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 содержит большой набор полезных функций, с помощью которых вы значительно сократите время и увеличите скорость работы с программой.

Сцепить_МН

Функция сцепляет данные из указанных ячеек в одну строку. Чем отличается от стандартной функции СЦЕПИТЬ()? Тем, что в качестве ячеек для сцепки указывается не каждая из ячеек по очереди, а сразу весь диапазон и в дополнение к этому Вы можете указать какой символ(или группа символов, или целое слово) будет использован в качестве разделителя между значениями каждой ячейки. На мой взгляд это несколько удобней, чем стандартная функция СЦЕПИТЬ(). Ладно если надо сцепить две-три ячейки, а если их 50? Согласитесь, слегка напрягает перебирать 50 ячеек(да еще с указанием разделителя!) в стандартной функции.

Вызов команды через стандартный диалог:

Мастер функцийКатегория «MulTEx»Сцепить_МН

Вызов с панели MulTEx:

Сумма/Поиск/ФункцииТекстовыеСцепить_МН

Синтаксис:
=Сцепить_МН(«, «; C2:C5 ;»привет»;»7″; B4 )

Разделитель — символ(или группа символов как в примере — «, » — запятая и пробел) который будет использован в качестве разделителя данных каждой ячейки. Если не указан — значения объединяются без разделителя.

Диапазон( до 254 различных диапазонов/значений ) — указывается диапазон ячеек со значениями для сцепления, либо непосредственно значения. Т.е. можно указать диапазон ( C2:C5 ), затем просто текст «привет» , затем цифру «7» , затем еще диапазон или ячейку ( B4 ) и т.д. Все это будет объединено в одну строку с указанным разделителем. Если в каких-либо ячейках содержатся пустые значения, то они будут проигнорированы.

Расскажи друзьям, если статья оказалась полезной:

Видеоинструкции по использованию надстройки MulTEx

Поделитесь своим мнением

Комментарии, не имеющие отношения к комментируемой статье, могут быть удалены без уведомления и объяснения причин. Если есть вопрос по личной проблеме — добро пожаловать на Форум

3 способа склеить текст из нескольких ячеек

Надпись на заборе: «Катя + Миша + Семён + Юра + Дмитрий Васильевич +
товарищ Никитин + рыжий сантехник + Витенька + телемастер Жора +
сволочь Редулов + не вспомнить имени, длинноволосый такой +
ещё 19 мужиков + муж = любовь!»

Способ 1. Функции СЦЕПИТЬ, СЦЕП и ОБЪЕДИНИТЬ

В категории Текстовые есть функция СЦЕПИТЬ (CONCATENATE) , которая соединяет содержимое нескольких ячеек (до 255) в одно целое, позволяя комбинировать их с произвольным текстом. Например, вот так: Склейка текста функцией СЦЕПИТЬ
Нюанс: не забудьте о пробелах между словами — их надо прописывать как отдельные аргументы и заключать в скобки, ибо текст. Очевидно, что если нужно собрать много фрагментов, то использовать эту функцию уже не очень удобно, т.к. придется прописывать ссылки на каждую ячейку-фрагмент по отдельности. Поэтому, начиная с 2016 версии Excel, на замену функции СЦЕПИТЬ пришла ее более совершенная версия с похожим названием и тем же синтаксисом — функция СЦЕП (CONCAT) . Ее принципиальное отличие в том, что теперь в качестве аргументов можно задавать не одиночные ячейки, а целые диапазоны — текст из всех ячеек всех диапазонов будет объединен в одно целое: Склейка функцией СЦЕП
Для массового объединения также удобно использовать новую функцию ОБЪЕДИНИТЬ (TEXTJOIN) , появившуюся начиная с Excel 2016. У нее следующий синтаксис: =ОБЪЕДИНИТЬ( Разделитель ; Пропускать_ли_пустые_ячейки ; Диапазон1 ; Диапазон2 . ) где

  • Разделитель — символ, который будет вставлен между фрагментами
  • Второй аргумент отвечает за то, нужно ли игнорировать пустые ячейки (ИСТИНА или ЛОЖЬ)
  • Диапазон 1, 2, 3 . — диапазоны ячеек, содержимое которых хотим склеить

Например:

Склейка текста функцией ОБЪЕДИНИТЬ

Способ 2. Символ для склеивания текста (&)

Это универсальный и компактный способ сцепки, работающий абсолютно во всех версиях Excel.

Для суммирования содержимого нескольких ячеек используют знак плюс «+«, а для склеивания содержимого ячеек используют знак «&» (расположен на большинстве клавиатур на цифре «7»). При его использовании необходимо помнить, что:

  • Этот символ надо ставить в каждой точке соединения, т.е. на всех «стыках» текстовых строк также, как вы ставите несколько плюсов при сложении нескольких чисел (2+8+6+4+8)
  • Если нужно приклеить произвольный текст (даже если это всего лишь точка или пробел, не говоря уж о целом слове), то этот текст надо заключать в кавычки. В предыдущем примере с функцией СЦЕПИТЬ о кавычках заботится сам Excel — в этом же случае их надо ставить вручную.

Вот, например, как можно собрать ФИО в одну ячейку из трех с добавлением пробелов:

Сцепка текста амперсандом

Если сочетать это с функцией извлечения из текста первых букв — ЛЕВСИМВ (LEFT) , то можно получить фамилию с инициалами одной формулой:

Склейка ФИО

Способ 3. Макрос для объединения ячеек без потери текста.

Имеем текст в нескольких ячейках и желание — объединить эти ячейки в одну, слив туда же их текст. Проблема в одном — кнопка Объединить и поместить в центре (Merge and Center) в Excel объединять-то ячейки умеет, а вот с текстом сложность — в живых остается только текст из верхней левой ячейки.

Чтобы объединение ячеек происходило с объединением текста (как в таблицах Word) придется использовать макрос. Для этого откройте редактор Visual Basic на вкладке Разработчик — Visual Basic (Developer — Visual Basic) или сочетанием клавиш Alt + F11 , вставим в нашу книгу новый программный модуль (меню Insert — Module) и скопируем туда текст такого простого макроса:

Sub MergeToOneCell() Const sDELIM As String = " " 'символ-разделитель Dim rCell As Range Dim sMergeStr As String If TypeName(Selection) <> "Range" Then Exit Sub 'если выделены не ячейки - выходим With Selection For Each rCell In .Cells sMergeStr = sMergeStr & sDELIM & rCell.Text 'собираем текст из ячеек Next rCell Application.DisplayAlerts = False 'отключаем стандартное предупреждение о потере текста .Merge Across:=False 'объединяем ячейки Application.DisplayAlerts = True .Item(1).Value = Mid(sMergeStr, 1 + Len(sDELIM)) 'добавляем к объед.ячейке суммарный текст End With End Sub

Теперь, если выделить несколько ячеек и запустить этот макрос с помощью сочетания клавиш Alt + F8 или кнопкой Макросы на вкладке Разработчик (Developer — Macros) , то Excel объединит выделенные ячейки в одну, слив туда же и текст через пробелы.

Ссылки по теме

  • Делим текст на куски
  • Объединение нескольких ячеек в одну с сохранением текста с помощью надстройки PLEX
  • Что такое макросы, как их использовать, куда вставлять код макроса на VBA

3 способа склеить текст из нескольких ячеек

Надпись на заборе: «Катя + Миша + Семён + Юра + Дмитрий Васильевич +
товарищ Никитин + рыжий сантехник + Витенька + телемастер Жора +
сволочь Редулов + не вспомнить имени, длинноволосый такой +
ещё 19 мужиков + муж = любовь!»

Способ 1. Функции СЦЕПИТЬ, СЦЕП и ОБЪЕДИНИТЬ

В категории Текстовые есть функция СЦЕПИТЬ (CONCATENATE) , которая соединяет содержимое нескольких ячеек (до 255) в одно целое, позволяя комбинировать их с произвольным текстом. Например, вот так: Склейка текста функцией СЦЕПИТЬ
Нюанс: не забудьте о пробелах между словами — их надо прописывать как отдельные аргументы и заключать в скобки, ибо текст. Очевидно, что если нужно собрать много фрагментов, то использовать эту функцию уже не очень удобно, т.к. придется прописывать ссылки на каждую ячейку-фрагмент по отдельности. Поэтому, начиная с 2016 версии Excel, на замену функции СЦЕПИТЬ пришла ее более совершенная версия с похожим названием и тем же синтаксисом — функция СЦЕП (CONCAT) . Ее принципиальное отличие в том, что теперь в качестве аргументов можно задавать не одиночные ячейки, а целые диапазоны — текст из всех ячеек всех диапазонов будет объединен в одно целое: Склейка функцией СЦЕП
Для массового объединения также удобно использовать новую функцию ОБЪЕДИНИТЬ (TEXTJOIN) , появившуюся начиная с Excel 2016. У нее следующий синтаксис: =ОБЪЕДИНИТЬ( Разделитель ; Пропускать_ли_пустые_ячейки ; Диапазон1 ; Диапазон2 . ) где

  • Разделитель — символ, который будет вставлен между фрагментами
  • Второй аргумент отвечает за то, нужно ли игнорировать пустые ячейки (ИСТИНА или ЛОЖЬ)
  • Диапазон 1, 2, 3 . — диапазоны ячеек, содержимое которых хотим склеить

Например:

Склейка текста функцией ОБЪЕДИНИТЬ

Способ 2. Символ для склеивания текста (&)

Это универсальный и компактный способ сцепки, работающий абсолютно во всех версиях Excel.

Для суммирования содержимого нескольких ячеек используют знак плюс «+«, а для склеивания содержимого ячеек используют знак «&» (расположен на большинстве клавиатур на цифре «7»). При его использовании необходимо помнить, что:

  • Этот символ надо ставить в каждой точке соединения, т.е. на всех «стыках» текстовых строк также, как вы ставите несколько плюсов при сложении нескольких чисел (2+8+6+4+8)
  • Если нужно приклеить произвольный текст (даже если это всего лишь точка или пробел, не говоря уж о целом слове), то этот текст надо заключать в кавычки. В предыдущем примере с функцией СЦЕПИТЬ о кавычках заботится сам Excel — в этом же случае их надо ставить вручную.

Вот, например, как можно собрать ФИО в одну ячейку из трех с добавлением пробелов:

Сцепка текста амперсандом

Если сочетать это с функцией извлечения из текста первых букв — ЛЕВСИМВ (LEFT) , то можно получить фамилию с инициалами одной формулой:

Склейка ФИО

Способ 3. Макрос для объединения ячеек без потери текста.

Имеем текст в нескольких ячейках и желание — объединить эти ячейки в одну, слив туда же их текст. Проблема в одном — кнопка Объединить и поместить в центре (Merge and Center) в Excel объединять-то ячейки умеет, а вот с текстом сложность — в живых остается только текст из верхней левой ячейки.

Чтобы объединение ячеек происходило с объединением текста (как в таблицах Word) придется использовать макрос. Для этого откройте редактор Visual Basic на вкладке Разработчик — Visual Basic (Developer — Visual Basic) или сочетанием клавиш Alt + F11 , вставим в нашу книгу новый программный модуль (меню Insert — Module) и скопируем туда текст такого простого макроса:

Sub MergeToOneCell() Const sDELIM As String = " " 'символ-разделитель Dim rCell As Range Dim sMergeStr As String If TypeName(Selection) <> "Range" Then Exit Sub 'если выделены не ячейки - выходим With Selection For Each rCell In .Cells sMergeStr = sMergeStr & sDELIM & rCell.Text 'собираем текст из ячеек Next rCell Application.DisplayAlerts = False 'отключаем стандартное предупреждение о потере текста .Merge Across:=False 'объединяем ячейки Application.DisplayAlerts = True .Item(1).Value = Mid(sMergeStr, 1 + Len(sDELIM)) 'добавляем к объед.ячейке суммарный текст End With End Sub

Теперь, если выделить несколько ячеек и запустить этот макрос с помощью сочетания клавиш Alt + F8 или кнопкой Макросы на вкладке Разработчик (Developer — Macros) , то Excel объединит выделенные ячейки в одну, слив туда же и текст через пробелы.

Ссылки по теме

  • Делим текст на куски
  • Объединение нескольких ячеек в одну с сохранением текста с помощью надстройки PLEX
  • Что такое макросы, как их использовать, куда вставлять код макроса на VBA

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *