Хитрости »
5 Август 2013 151112 просмотров
Сцепить много ячеек с указанным разделителем
Часто бывает ситуация, когда необходимо из трех разных столбцов сцепить данные в одну строку с разделителем. Допустим в А1 Фамилия, в В1 — Имя, в С1 — Отчество, а надо получить все вместе Фамилия Имя Отчество. Как обычно в Excel объединяют значения нескольких ячеек в одну? Правильно, при помощи функции СЦЕПИТЬ или при помощи амперсанда:
=СЦЕПИТЬ(A1;» «;B1;» «;C1;» «)
=A1&» «&B1&» «&C1&» «
Это достаточно эффективно, если необходимо сцепить значения из трех-пяти ячеек. А если ячеек 50? Или того больше? Не очень удобно объединять их все описанными выше способами. А других встроенных функций в Excel для подобных операций не существует. С момента написания статьи Microsoft порадовал нас новыми функциями и теперь в составе функций есть функция ОБЪЕДИНИТЬ(TEXTJOIN), которая способна решить задачу без лишних телодвижений.
=ОБЪЕДИНИТЬ(«, «;ИСТИНА;A2:A100)
=TEXTJOIN(«, «,TRUE,A2:A100)
-
Разделитель(«, «) — разделитель, с которым объединять текст из указанных ячеек
Пропускать пустые(ИСТИНА) — указывает пропускать ли пустые ячейки. Т.е. если указано ИСТИНА или 1(а так же если аргумент вовсе не указан) — пустые ячейки будут пропускаться и не попадут в общую строку сцепки. Если указано ЛОЖЬ — сцепляться будут все ячейки, независимо от их содержимого. Например, если указать три ячейки A1:A3 в которых А2 пустая, то при указании ИСТИНА результат будет таким: «один, два». Если указать ЛОЖЬ, то пустая ячейка тоже попадет в сцепку: «один, , два».
Так же этот аргумент удобен, если неизвестен заранее размер диапазона сцепления. Можно указать ячейки чуть с запасом(A1:A300) и тогда сцепляться будут только ячейки заполненного диапазона.
Текст(A2:A100) — указывается непосредственно диапазон либо текст для сцепления. Этот аргумент расширяемый — т.е. можно указать не один диапазон, а несколько или просто текст: =ОБЪЕДИНИТЬ(«, «;ИСТИНА;A2:A100;B2:B70;»текст»)
Правда и здесь не все так радужно: эта функция доступна только пользователям версий 2019 и выше, а так же офиса 365.
Поэтому я написал функцию пользователя, которая сцепляет данные из указанных ячеек в одну строку и использовать её можно в любой версии офиса. Чем отличается от стандартной функции СЦЕПИТЬ()? Тем, что в качестве ячеек для сцепки указывается не каждая из ячеек по очереди, а сразу весь диапазон с возможностью указания разделителя между значениями каждой ячейки. Так же, в функции сразу заложен алгоритм пропуска пустых ячеек и возможность сцеплять исключительно уникальные значения — т.е. в результате будут сцепляться только те ячейки, значения которых ранее еще не были добавлены в сцепку.
Option Explicit '--------------------------------------------------------------------------------------- ' Procedure : СцепитьМного ' http://www.excel-vba.ru ' Purpose : Функция сцепляет все указанные ячейки в одну с указанным разделителем. ' Аргументы функции: ' Диапазон — диапазон ячеек, значения которых необходимо объединить в строку. ' Разделитель — необязательный аргумент. ' Один или несколько символов, которые будут вставлены между каждым словом. ' По умолчанию пробел. ' БезПовторов — необязательный аргумент. ' Если указан как ИСТИНА или 1 — в результирующей строке будут значения без дубликатов. ' Для английской локализации данный параметр указывается как TRUE и FALSE соответственно. '--------------------------------------------------------------------------------------- Function СцепитьМного(Диапазон As Range, Optional Разделитель As String = " ", Optional БезПовторов As Boolean = False) Dim avData, lr As Long, lc As Long, sRes As String Dim oDict As Object, sTmpStr Set oDict = CreateObject("Scripting.Dictionary") oDict.comparemode = 1 avData = Диапазон.Value If Not IsArray(avData) Then СцепитьМного = avData Exit Function End If For lc = 1 To UBound(avData, 2) For lr = 1 To UBound(avData, 1) If Len(avData(lr, lc)) Then sRes = sRes & Разделитель & avData(lr, lc) If БезПовторов Then If Not oDict.exists(avData(lr, lc)) Then oDict.Add avData(lr, lc), 0& End If End If End If Next lr Next lc If Len(sRes) Then sRes = Mid(sRes, Len(Разделитель) + 1) End If If БезПовторов Then sRes = "" sTmpStr = oDict.keys For lr = LBound(sTmpStr) To UBound(sTmpStr) sRes = sRes & IIf(sRes <> "", Разделитель, "") & sTmpStr(lr) Next lr End If СцепитьМного = sRes End Function
Чтобы правильно использовать приведенный код, необходимо сначала ознакомиться со статьей Что такое функция пользователя(UDF)?. Вкратце: скопировать текст кода выше, перейти в редактор VBA(Alt+F11) -создать стандартный модуль(Insert —Module) и в него вставить скопированный текст. После чего функцию можно будет вызвать из Диспетчера функций(Shift+F3), отыскав её в категории Определенные пользователем (User Defined Functions).
Синтаксис функции:
=СцепитьМного(A2:A100;», «;ИСТИНА)
Диапазон — диапазон ячеек, значения которых необходимо объединить в строку.
Разделитель — необязательный аргумент. Один или несколько символов, которые будут вставлены между каждым словом. По умолчанию пробел.
БезПовторов — необязательный аргумент. Если указан как ИСТИНА или 1 — в результирующей строке будут значения без дубликатов. Например, из значений Сидоров, Петров, Сидоров, Иванов в результат попадут только Сидоров, Петров, Иванов. Если ЛОЖЬ или 0 — будут выведены все значения. Для английской локализации данный параметр указывается как TRUE и FALSE соответственно.
Скачать пример
СцепитьМного.xls (52,5 KiB, 11 993 скачиваний)
Если необходимо объединять значения ячеек из «рваных»(несмежных) диапазонов(выделенных через Ctrl), то код нужно немного изменить:
Option Explicit '--------------------------------------------------------------------------------------- ' Procedure : СцепитьМного ' http://www.excel-vba.ru ' Purpose : Функция сцепляет все указанные ячейки в одну с указанным разделителем. Допускается указание несмежных диапазонов ' Аргументы функции: ' Диапазон — диапазон ячеек, значения которых необходимо объединить в строку. ' Разделитель — необязательный аргумент. ' Один или несколько символов, которые будут вставлены между каждым словом. ' По умолчанию пробел. ' БезПовторов — необязательный аргумент. ' Если указан как ИСТИНА или 1 — в результирующей строке будут значения без дубликатов. ' Для английской локализации данный параметр указывается как TRUE и FALSE соответственно. '--------------------------------------------------------------------------------------- Function СцепитьМного(диапазон As Range, Optional разделитель As String = " ", Optional БезПовторов As Boolean = False) Dim avData, lr As Long, lc As Long, sRes As String Dim ra As Range For Each ra In диапазон.Areas avData = ra.Value If Not IsArray(avData) Then ReDim avData(1 To 1, 1 To 1) avData(1, 1) = ra.Value End If For lc = 1 To UBound(avData, 2) For lr = 1 To UBound(avData, 1) If Len(avData(lr, lc)) Then sRes = sRes & разделитель & avData(lr, lc) End If Next lr Next lc Next If Len(sRes) Then sRes = Mid(sRes, Len(разделитель) + 1) End If If БезПовторов Then Dim oDict As Object, sTmpStr Set oDict = CreateObject("Scripting.Dictionary") sTmpStr = Split(sRes, разделитель) On Error Resume Next For lr = LBound(sTmpStr) To UBound(sTmpStr) oDict.Add sTmpStr(lr), sTmpStr(lr) Next lr sRes = "" sTmpStr = oDict.Keys For lr = LBound(sTmpStr) To UBound(sTmpStr) sRes = sRes & IIf(sRes <> "", разделитель, "") & sTmpStr(lr) Next lr End If СцепитьМного = sRes End Function
Однако в таком случае слегка изменится и синтаксис — такие диапазоны обязательно надо будет записывать в скобках:
Синтаксис функции:
=СцепитьМного((A2:A100;F4:F60;Y2:Z43);», «;ИСТИНА)
Иначе функция просто не сработает и выдаст ошибку #ЗНАЧ!(#VALUE!)
И еще одна реализация — в ней допускается указывать не только отдельные диапазоны, но и вообще все что угодно(ячейки, отдельный текст, числа и т.п.). Единственная проблема — в этой функции иначе организован порядок аргументов: сначала указывается разделитель, а уже потом значения для сцепления. Более подробно эта функция рассмотрена в статье Что такое функция пользователя(UDF)?. Так же эта функция не убирает дубли, что впрочем, не так сложно добавить, ориентируясь на функции выше.
Function ОбъединитьВсеСРазделителем(Разделитель As String, ParamArray Значения()) As String Dim result As String, arg, x, rc As Range For Each arg In Значения Select Case TypeName(arg) Case "Range" 'это диапазон 'цикл по всем ячейкам For Each rc In arg.Cells If result = "" Then result = rc.Value Else result = result & Разделитель & rc.Value End If Next Case "Variant()" 'это произвольный массив({"а";"б";"в"}) 'цикл по всем ячейкам For Each x In arg If result = "" Then result = x Else result = result & Разделитель & x End If Next Case Else 'это любой другой тип 'суммируем If result = "" Then result = arg Else result = result & Разделитель & arg End If End Select Next ОбъединитьВсеСРазделителем = result End Function
Также см.:
Сцепить_МН
Как сцепить несколько значений в одну ячейку по критерию? СцепитьЕсли
Что такое функция пользователя(UDF)?
Статья помогла? Поделись ссылкой с друзьями!
Видеоуроки
Поиск по меткам
Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика
Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel для Интернета Excel 2021 Excel 2021 для Mac Excel 2019 Excel 2019 для Mac Excel 2016 Excel 2016 для Mac Excel 2013 Excel 2010 Excel 2007 Excel для Mac 2011 Excel Starter 2010 Еще…Меньше
Используйте функцию СЦЕПИТЬ, относящуюся к текстовым функциям, для объединения двух или нескольких текстовых строк в одну.
Важно: В Excel 2016, Excel Mobile и Excel в Интернете эта функция была заменена функцией СКАЙТ. Функция СЦЕПИТЬ пока еще доступна для обратной совместимости, однако рекомендуем использовать вместо нее функцию СЦЕП. В последующих версиях Excel функция СЦЕПИТЬ может быть недоступна.
Синтаксис: СЦЕПИТЬ(текст1;[текст2];…)
Ниже приведены примеры.
-
=СЦЕПИТЬ(«Популяция рек для «;A2;» «;A3;» составляет «;A4;» на километр.»)
-
=СЦЕПИТЬ(В2;» «;C2)
Имя аргумента |
Описание |
текст1 (обязательный) |
Первый элемент для объединения. Это может быть текстовое значение, число или ссылка на ячейку. |
текст2,… (необязательные) |
Дополнительные текстовые элементы для объединения. Можно указать до 255 элементов и до 8 192 символов. |
Примеры
Чтобы использовать эти примеры в Excel, скопируйте данные из приведенной ниже таблицы и вставьте их на новый лист в ячейку A1.
Данные |
||
вида |
Виталий |
Токарев |
речная форель |
Fourth |
Pine |
32 |
||
Формула |
Описание |
|
=СЦЕПИТЬ(«Популяция рек для «;A2;» «;A3;» составляет «;A4;» на километр.») |
Создает предложение, объединяя данные в столбце А с остальным текстом. Результат: «Популяция рек для вида речная форель составляет 32 на километр». |
|
=СЦЕПИТЬ(В2;» «;C2) |
Объединяет строку в ячейке В2, пробел и значение в ячейке С2. Результат: «Виталий Токарев». |
|
=СЦЕПИТЬ(С2;», «;В2) |
Объединяет текст в ячейке C2, строку, состоящую из запятой и пробела, и значение в ячейке B2. Результат: «Виталий Токарев». |
|
=СЦЕПИТЬ(B3;» & «;C3) |
Объединяет строку в ячейке B3, строку, состоящую из пробела, амперсанда и еще одного пробела, и значение в ячейке C3. Результат: Fourth & Pine. |
|
=B3 & » & » & C3 |
Объединяет те же элементы, что и в предыдущем примере, но с помощью оператора & (амперсанд) вместо функции СЦЕПИТЬ. Результат: Fourth & Pine. |
Распространенные неполадки
Проблема |
Описание |
Кавычки отображаются в строке результата. |
Используйте точку с запятой для разделения текстовых элементов. Например: Excel отобразит результат функции =СЦЕПИТЬ («Привет, «»мир!») как «Привет,»мир!» с лишней кавычкой, так как пропущена точка с запятой между текстовыми аргументами. Числа не нужно заключать в кавычки. |
Слова расположены впритык друг к другу. |
Если не поместить пробелы между текстовыми элементами, в строке результата они будут отображаться слитно. Добавьте пробелы в формулу с функцией СЦЕПИТЬ. Это можно сделать двумя способами.
|
Ошибка #ИМЯ? отображается вместо ожидаемого результата. |
Ошибка #ИМЯ? обычно означает, что для текстового аргумента не хватает кавычек. |
Рекомендации
Необходимые действия |
Описание |
Вместо функции СЦЕПИТЬ используйте знак & (амперсанд). |
С помощью оператора & можно объединять текстовые элементы, не прибегая к функции. Например, =A1 & B1 возвращает то же значение, что и =С CONCATENATE(A1;B1). Во многих случаях воспользоваться оператором амперсанда проще и быстрее, чем создавать строки с помощью функции СЦЕПИТЬ. См. дополнительные сведения об использовании операторов вычислений. |
Для объединения и форматирования строк используйте функцию ТЕКСТ. |
Функция ТЕКСТ преобразует числовое значение в текст и объединяет числа с текстом или символами. Предположим, что ячейка A1 содержит число 23,5. Чтобы отформатировать число как сумму в рублях, можно использовать следующую формулу: =ТЕКСТ(A1;»0,00 ₽») Результат: 23,5 ₽ |
Дополнительные сведения
-
Для объединения и форматирования строк используйте функцию ТЕКСТ.
-
Ознакомьтесь с дополнительными сведениями об использовании операторов вычислений.
Нужна дополнительная помощь?
Чтобы объединить значения (текстовые, цифровые) из разных ячеек в одну, используется функция СЦЕПИТЬ. Ее аналог – & (амперсанд). Знак справляется с простейшими задачами. Но для объединения множества строк не подходит.
Синтаксис функции СЦЕПИТЬ
Функция входит в группу «текстовые». Синтаксис: (текст 1; текст 2;…). Можно включить до 255 текстовых строк. Первый аргумент – «текст 1» – является обязательным. Любые аргументы можно указать в виде текста, цифр или ссылок на ячейки.
Общие правила использования функции СЦЕПИТЬ:
- Для разделения аргументов применяется точка с запятой. Пропуск или использование других знаков приведет к отображению в ячейке с результатом кавычек.
- Текстовые аргументы обязательно заключать в кавычки. В противном случае появляется ошибка – #ИМЯ? Числа и ссылки на ячейки – не нужно.
- Чтобы соединяемые элементы в строке результата отобразились с пробелом, пробелы нужно добавлять в формулу с функцией. С помощью двойных кавычек с пробелом внутри (“ “) или с помощью пробела после текстового аргумента (“Иванов ”;…).
Как пользоваться функцией СЦЕПИТЬ в Excel
Начнем с простейших примеров.
Данные для объединения:
Ставим курсор в ячейку Е2 и вызываем мастер функций (кнопка fx). В категории «Текстовые» находим функцию СЦЕПИТЬ. Аргументы – ссылки на ячейки А2, В2, С2 и пробелы:
Результат объединения значений в ячейках:
Такой же результат получим с помощью амперсанда:
Один из аргументов – текст. Формула: =СЦЕПИТЬ(«слесарь»; » «;A2;» «;B2;» «;C2). Результат:
И с более сложными задачами справится функция СЦЕПИТЬ в Excel. Примеры:
- Соединим текст с датой. Данные находятся в отдельных ячейках. Для столбца «Дата» установлен формат «Дата». Если использовать только функцию СЦЕПИТЬ, дата отобразится в числовом формате. Поэтому добавим функцию ТЕКСТ для форматирования чисел. Формула:
Второй аргумент функции ТЕКСТ – формат представления даты. Результат:
- Соединим сразу много ячеек в строке. Если писать формулу с функцией СЦЕПИТЬ, получится долго и малоэффективно. Используем маленькую хитрость. Вот наша строка со значениями в отдельных ячейках.
В ячейку Н1 ставим знак «равно». Выделяем диапазон со значениями А1:F1. Вводим амперсанд & и пробел “ “. Жмем F9. В строке формул появится формула массива.
Ставим курсор в строку формул после знака «равно». Пишем название функции. Фигурные скобки заменяем на круглые и жмем ВВОД. Получаем нужный результат. - Соединим значения через косую черточку («-», «&» и т.п.). Формула будет выглядеть так: = СЦЕПИТЬ (ссылка на ячейку 1; «/»; ссылка на ячейку 2).
- Соединим несколько значений в столбце. Функция подходит для значений в строках. Описанный выше способ с формулой массива тоже не сработает.
Преобразуем вертикальный диапазон в горизонтальный с помощью функции ТРАНСП. А затем воспользуемся формулой массива для быстрого соединения значений. В ячейку В1 ставим знак «равно». Пишем ТРАНСП. Указываем диапазон А1:А6. Вводим & и пробел (« »). Жмем F9.
Теперь преобразуем формулу массива, добавив функцию и заменив скобки.
Обратная функция СЦЕПИТЬ в Excel
Стандартной функции, которая разделяла бы значения одной ячейки, нет. Для выполнения ряда подобных задач можно использовать другие функции:
- ЛЕВСИМВ (отображает заданную часть символов с начала строки);
- ПРАВСИМВ (отображает заданную часть символов с конца строки);
- ПСТР (отображает указанную часть символов, начиная с заданной позиции) и другие.
Примеры:
- Извлечем первое слово из строки, применив функцию ЛЕВСИМВ. Аргументы – «текст» (ссылка на строку с искомым значением), «количество знаков» (число символов, которые нужно извлечь).
- Извлечем последнее слово из строки с помощью функции ПРАВСИМВ. Синтаксис похожий (как в предыдущем примере). Только количество знаков считается с конца.
- Извлечем из записи в строке фамилию (второе слово) с помощью функции ПСТР. Аргументы – «текст» (ссылка на строку), «начальная позиция» (номер символа, с которого программа начнет считать число знаков); «количество знаков». В примере: Е2 – «текст», с 9 знака функция вернет 8 символов.
Для выполнения более сложных задач используются более сложные формулы, составляются пользовательские функции.
Функция СЦЕПИТЬ в Эксель позволяет объединить содержимое двух и более ячеек в одну общую, что делает ее одним из самых полезных и необходимых инструментов программы, которым непременно нужно овладеть для эффективной работы. Давайте посмотрим, как работать с данной функцией.
Описание и синтаксис функции СЦЕПИТЬ
Данная функция начиная с Excel 2016 сменила название на “СЦЕП”, однако, для тех, кто привык к старому наименованию (“СЦЕПИТЬ”), оператор под этим названием также доступен в программе. СЦЕП и СЦЕПИТЬ абсолютно взаимозаменяемы и выполняют одну и ту же операцию по объединению содержимого выбранных ячеек в одну общую.
Формула функций выглядит так:
=СЦЕП(текст1;текст2;...)
или =СЦЕПИТЬ(текст1;текст2;...)
Максимальное количество аргументов – 255.
Вставка и настройка функции
Как мы знаем, при объединении нескольких ячеек в одну, содержимое всех элементов за исключением самой верхней левой стирается. Чтобы этого не происходило, нужно использовать функцию СЦЕПИТЬ (СЦЕП).
- Для начала определяемся с ячейкой, в которой планируем объединить данные из других. Переходим в нее (выделяем) и щелкаем по значку “Вставить функцию” (fx).
- В открывшемся окне вставки функции выбираем категорию “Текстовые” (или “Полный алфавитный перечень”), отмечаем строку “СЦЕП” (или “СЦЕПИТЬ”) и кликаем OK.
- На экране появится окно, в котором нужно заполнить аргументы функции, в качестве которых могут быть указаны как конкретные значения, так и ссылки на ячейки. Причем последние можно указать как вручную, так и просто кликнув по нужным ячейкам в самой таблице (при это курсор должен быть установлен в поле для ввода значения напротив соответствующего аргумента). В нашем случае делаем следующее:
- находясь в поле “Текст1” щелкаем по ячейке (A2), значение которой будет стоять на первом месте в объединенной ячейке;
- кликаем по полю “Текст2”, где ставим запятую и пробел (“, “), которые будут служит разделителем между содержимыми ячеек, указанных в аргументах “Текст1” и “Текст3” (появится сразу же после того, как мы приступим к заполнению аргумента “Текст2”). Можно на свое усмотрение указывать любые символы: пробел, знаки препинания, текстовые или числовые значения и т.д.
- переходим в поле “Текст3” и кликаем по следующей ячейке, содержимое которой нужно добавить в общую ячейку (в нашем случае – это B2).
- аналогичным образом заполняем все оставшиеся аргументы, после чего жмем кнопку OK. При этом увидеть предварительный результат можно в нижней левой части окна аргументов.
- Все готово, нам удалось объединить содержимое всех выбранных ячеек в одну общую.
- Выполнять действия выше для остальных ячеек столбца не нужно. Просто наводим указатель мыши на правый нижний угол ячейки с результатом, и, после того как он сменит вид на небольшой черный плюсик, зажав левую кнопку мыши тянем его вниз до нижней строки столбца (или до строки, для которой требуется выполнить аналогичные действия).
- Таким образом, получаем заполненный столбец с новыми наименованиями, включающими данные по размеру и полу.
Аргументы функции без разделителей
Если разделители между содержимыми ячеек не нужны, в этом случае в значении каждого аргумента сразу указываем адреса требуемых элементов.
Правда, таким способом пользуются редко, так как сцепленные значения сразу будут идти друг за другом, что усложнит дальнейшую работу с ними.
Указание разделителя в отдельной ячейке
Вместо того, чтобы вручную указывать разделитель (пробел, запятая, любой другой символ, текст, число) в аргументах функции, его можно добавить в отдельную ячейку, и затем в аргументах просто ссылаться на нее.
Например, мы добавляем запятую и пробел (“, “) в ячейку B16.
В этом случае, аргументы функции нужно заполнить следующим образом.
Но здесь есть один нюанс. Чтобы при копировании формулы функции на другие ячейки не произошло нежелательного сдвига адреса ячейки с разделителем, ссылку на нее нужно сделать абсолютной. Для этого выделив адрес в поле соответствующего аргумента нажимаем кнопку F4. Напротив обозначений столбца и строки появятся символы “$”. После этого можно нажимать кнопку OK.
Визуально в ячейке результат никак не будет отличаться от полученного ранее.
Однако формула будет выглядет иначе. И если мы решим изменить разделитель (например, на точку), нам не нужно будет корректировать аргументы функции, достаточно будет просто изменить содержимое ячейки с разделителем.
Как ранее было отмечено, добавить в качестве разделителя можно любую текстовую, числовую и иную информацию, которой изначально не было в таблице.
Таким образом, функция СЦЕП (СЦЕПИТЬ) предлагает большую вариативность действий, что позволяет наилучшим образом представить объединенные данные.
Редактирование функции
Если функция уже добавлена в ячейку, но в ее аргументы требуется внести определенные правки, сделать это можно двумя способами.
Способ 1: изменения в окне аргументов
Перейти к редактированию функции можно, просто нажав на кнопку “Вставить функцию” (fx), которая находится слева от строки формул. При этом предварительно нужно выбрать ячейку, содержащую функцию.
Таким образом мы попадем в окно с аргументами функции, где можем внести требуемые изменения, после чего нажать кнопку OK.
Мы получим результат с учетом скорректированных данных.
Способ 2: ручная корректировка формулы
Альтернативный метод изменения аргументов функции – ручная корректировка формулы. Перейти в режим редактирования можно двумя по-разному:
- Выделяем ячейку с функцией, затем щелкаем по строке формул и вносим в ней изменения.
- Двойным щелчком мыши по ячейке с формулой активируем режим редактирования и корректируем формулу, непосредственно, в самой ячейке.
Независимо от выбранного метода, при ручной корректировке формул нужно быть предельно внимательным, соблюдая следующие правила:
- адреса ячеек пишутся без кавычек;
- перечисление аргументов – через знак “;”
- если в качестве аргумента используется символ или текст, наличие кавычек с двух сторон указанного значения обязательно.
Заключение
Благодаря умению пользоваться функцией СЦЕП (СЦЕПИТЬ) можно автоматизировать процесс объединения содержимого разных ячеек в одну общую, что в некоторых случаях, является единственным условием успешного выполнения поставленной задачи. Поэтому очень важно научиться правильно работать с данной функцией в программе Эксель.
Надпись на заборе: «Катя + Миша + Семён + Юра + Дмитрий Васильевич +
товарищ Никитин + рыжий сантехник + Витенька + телемастер Жора +
сволочь Редулов + не вспомнить имени, длинноволосый такой +
ещё 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