Excel сцепить если непустые

Склеивание текста по условию

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

Допустим, что у нас имеется база данных по клиентам, где одному названию компании может соответствовать несколько разных email’ов ее сотрудников. Наша задача состоит в том, чтобы собрать все адреса по названиям компаний и сцепить их (через запятую или точку с запятой), чтобы сделать потом, например, почтовую рассылку по клиентам, т.е. получить на выходе что-то похожее на:

склеивание (сцепка) текста по условию

Другими словами, нам нужен инструмент, который будет склеивать (сцеплять) текст по условию — аналог функции СУММЕСЛИ (SUMIF), но для текста.

Способ 0. Формулой

Не очень изящный, зато самый простой способ. Можно написать несложную формулу, которая будет проверять отличается ли компания в очередной строке от предыдущей.  Если не отличается, то приклеиваем через запятую очередной адрес. Если отличается, то «сбрасываем» накопленное, начиная заново:

Сцепка текста по условию формулой

Минусы такого подхода очевидны: из всех ячеек полученного дополнительного столбца нам нужны только последние по каждой компании (желтые). Если список большой, то чтобы их быстро отобрать придется добавить еще один столбец, использующий функцию ДЛСТР (LEN), проверяющий длину накопленных строк:

Отбор строк

Теперь можно отфильтровать единички и скопировать нужные склейки адресов для дальнейшего использования.

Способ 1. Макрофункция склейки по одному условию

Если исходный список не отсортирован по компаниям, то приведенная выше простая формула не работает, но можно легко выкрутиться с помощью небольшой пользовательской функции на VBA. Откройте редактор Visual Basic нажатием на сочетание клавиш Alt+F11 или с помощью кнопки Visual Basic на вкладке Разработчик (Developer). В открывшемся окне вставьте новый пустой модуль через меню Insert — Module и скопируйте туда текст нашей функции:

Function MergeIf(TextRange As Range, SearchRange As Range, Condition As String)
    Dim Delimeter As String, i As Long
    Delimeter = ", " 'символы-разделители (можно заменить на пробел или ; и т.д.)
    
    'если диапазоны проверки и склеивания не равны друг другу - выходим с ошибкой
    If SearchRange.Count <> TextRange.Count Then
        MergeIf = CVErr(xlErrRef)
        Exit Function
    End If
    
    'проходим по все ячейкам, проверяем условие и собираем текст в переменную OutText
    For i = 1 To SearchRange.Cells.Count
        If SearchRange.Cells(i) Like Condition Then OutText = OutText & TextRange.Cells(i) & Delimeter
    Next i
    
    'выводим результаты без последнего разделителя
    MergeIf = Left(OutText, Len(OutText) - Len(Delimeter))
End Function

Если теперь вернуться в Microsoft Excel, то в списке функций (кнопка fx в строке формул или вкладка Формулы — Вставить функцию) можно будет найти нашу функцию MergeIf в категории Определенные пользователем (User Defined). Аргументы у функции следующие:

функция сцепить если выполняется условие

Способ 2. Сцепить текст по неточному условию

Если заменить в 13-й строчке нашего макроса первый знак = на оператор приблизительного совпадения Like, то можно будет осуществлять склейку по неточному совпадению исходных данных с критерием отбора. Например, если название компании может быть записано в разных вариантах, то мы можем одной функцией проверить и собрать их все:

склейка по приблизительному условию

Поддерживаются стандартные спецсимволы подстановки:

  • звездочка (*) — обозначает любое количество любых символов (в т.ч. и их отсутствие)
  • вопросительный знак (?) — обозначает один любой символ
  • решетка (#) — обозначает одну любую цифру (0-9)

По умолчанию оператор Like регистрочувствительный, т.е. понимает, например, «Орион» и «оРиОн» как разные компании. Чтобы не учитывать регистр можно добавить в самое начало модуля в редакторе Visual Basic строчку Option Compare Text, которая переключит Like в режим, когда он невосприимчив к регистру.

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

  • ?1##??777RUS — выборка по всем автомобильным номерам 777 региона, начинающимся с 1
  • ООО* — все компании, название которых начинается на ООО
  • ##7## — все товары с пятизначным цифровым кодом, где третья цифра 7
  • ????? — все названия из пяти букв и т.д.

Способ 3. Макрофункция склейки текста по двум условиям

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

Function MergeIfs(TextRange As Range, SearchRange1 As Range, Condition1 As String, SearchRange2 As Range, Condition2 As String)
    Dim Delimeter As String, i As Long
    Delimeter = ", " 'символы-разделители (можно заменить на пробел или ; и т.д.)
    
    'если диапазоны проверки и склеивания не равны друг другу - выходим с ошибкой
    If SearchRange1.Count <> TextRange.Count Or SearchRange2.Count <> TextRange.Count Then
        MergeIfs = CVErr(xlErrRef)
        Exit Function
    End If
    
    'проходим по все ячейкам, проверяем все условия и собираем текст в переменную OutText
    For i = 1 To SearchRange1.Cells.Count
        If SearchRange1.Cells(i) = Condition1 And SearchRange2.Cells(i) = Condition2 Then
            OutText = OutText & TextRange.Cells(i) & Delimeter
        End If
    Next i
    
    'выводим результаты без последнего разделителя
    MergeIfs = Left(OutText, Len(OutText) - Len(Delimeter))
End Function

Применяться она будет совершенно аналогично — только аргументов теперь нужно указывать больше:

склейка по нескольким условиям

Способ 4. Группировка и склейка в Power Query

Решить проблему можно и без программирования на VBA, если использовать бесплатную надстройку Power Query. Для Excel 2010-2013 ее можно скачать здесь, а в Excel 2016 она уже встроена по умолчанию. Последовательность действий будет следующей:

Power Query не умеет работать с обычными таблицами, поэтому первым шагом превратим нашу таблицу в «умную». Для этого ее нужно выделить и нажать сочетание Ctrl+T или выбрать на вкладке Главная — Форматировать как таблицу (Home — Format as Table). На появившейся затем вкладке Конструктор (Design) можно задать имя таблицы (я оставил стандартное Таблица1):

Умная таблица

Теперь загрузим нашу таблицу в надстройку Power Query. Для этого на вкладке Данные (если у вас Excel 2016) или на вкладке Power Query (если у вас Excel 2010-2013) жмем Из таблицы (Data — From Table):

Загрузка в Power Query

В открывшемся окне редактора запросов выделяем щелчком по заголовку столбец Компания и сверху жмем кнопку Группировать (Group By). Вводим имя нового столбца и тип операции в группировке — Все строки (All Rows):

Группировка в Power Query

Жмем ОК и получаем для каждой компании мини-таблицу сгруппированных значений. Содержимое таблиц хорошо видно, если щелкать левой кнопкой мыши в белый фон ячеек (не в текст!) в получившемся столбце:

Содержимое таблиц группировки

Теперь добавим еще один столбец, где с помощью функции склеим через запятую содержимое столбцов Адрес в каждой из мини-таблиц. Для этого на вкладке Добавить столбец жмем Пользовательский столбец (Add column — Custom column) и в появившемся окне вводим имя нового столбца и формулу сцепки на встроенном в Power Query языке М:

Пользовательский столбец с функцией склейки

Обратите внимание, что все М-функции регистрочувствительные (в отличие от Excel). После нажатия на ОК получаем новый столбец со склееными адресами:

Результат

Осталось удалить ненужный уже столбец ТаблАдресов (правой кнопкой мыши по заголовку — Удалить столбец) и выгрузить результаты на лист, нажав на вкладке Главная — Закрыть и загрузить (Home — Close and load):

Выгрузка результатов на лист

Важный нюанс: в отличие от предыдущих способов (функций), таблицы из Power Query не обновляются автоматически. Если в будущем произойдут какие-либо изменения в исходных данных, то нужно будет щелкнуть правой кнопкой в любое место таблицы результатов и выбрать команду Обновить (Refresh).

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

  • Как разделить длинную текстовую строку на части
  • Несколько способов склеить текст из разных ячеек в одной
  • Использование оператора Like для проверки текста по маске

Сцепить непустые ячейки

Tallen

Дата: Среда, 25.08.2021, 12:48 |
Сообщение № 1

Группа: Пользователи

Ранг: Участник

Сообщений: 71


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Здравствуйте, уважаемые специалисты Excel!
Помогите пожалуйста исправить формулу в столбце G (а может там нужна совершенно другая..?), чтобы сцеплялись только непустые значения ячеек. На ПК Excel 2007

К сообщению приложен файл:

__.xlsx
(10.7 Kb)

Сообщение отредактировал TallenСреда, 25.08.2021, 12:50

 

Ответить

bigor

Дата: Среда, 25.08.2021, 13:10 |
Сообщение № 2

Группа: Проверенные

Ранг: Ветеран

Сообщений: 801


Репутация:

163

±

Замечаний:
0% ±


нет

Добрый день

примерно так

Код

=IF(F4>0;$B$1&» «&F4&» в т.ч.  «&IF(B4>0;$B$2&» — «&B4&» «;»»)&IF(C4>0;$C$2&» — «&C4&» «;»»)&IF(D4>0;$D$2&» — «&D4&» «;»»)&IF(E4>0;$E$2&» — «&E4&» «;»»);»»)

Сообщение отредактировал bigorСреда, 25.08.2021, 13:11

 

Ответить

Serge_007

Дата: Среда, 25.08.2021, 13:11 |
Сообщение № 3

Группа: Админы

Ранг: Местный житель

Сообщений: 15888


Репутация:

2623

±

Замечаний:
±


Excel 2016

Здравствуйте

Код

=ЕСЛИ(F3=0;»»;B$1&»: «&$F3&», в т.ч.: «&ЕСЛИ(B3=»»;»»;B$2&» — «&B3&»; «)&ЕСЛИ(C3=»»;»»;C$2&» — «&C3&»; «)&ЕСЛИ(D3=»»;»»;D$2&» — «&D3&»; «)&ЕСЛИ(E3=»»;»»;E$2&» — «&E3&»; «))


ЮMoney:41001419691823 | WMR:126292472390

 

Ответить

Tallen

Дата: Среда, 25.08.2021, 13:24 |
Сообщение № 4

Группа: Пользователи

Ранг: Участник

Сообщений: 71


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Serge_007, спасибо большое! Именно это и нужно мне для полного счастья! ))

 

Ответить

Tallen

Дата: Среда, 25.08.2021, 13:27 |
Сообщение № 5

Группа: Пользователи

Ранг: Участник

Сообщений: 71


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

bigor, спасибо!

 

Ответить

СЦЕПИТЬ не пустые ячейки

Автор Jim, 07.09.2009, 15:23

« назад — далее »

Всем привет!
Подскажите, как прописать формулу СЦЕПИТЬ, так чтобы он сцеплял только не пустые ячейки из столбца А.
Допустим имеется в столбце числа (в разброс по столбцу), и необходимо сцепить их через знак «;».

Просьба помочь… спасибо.


Ну, это проще всего решить пользовательской функцией.

Например так:
Public Function СцепитьБезПустышек(target As Range)
    For Each cl In target.Cells
        If cl.Value <> «» Then СцепитьБезПустышек = СцепитьБезПустышек & cl.Value & «;»
    Next
End Function


Я не совсем понял… ну вставил я этот код… и что дальше? что нужно сделать чтобы сработало?


1. Создаете в книге модуль.
2. Вставляете в него код.
3. используете функцию =СцепитьБезПустышек() в ячейках книги, как любую другую функцию.


Цитата: Алексей Шмуйлович от 08.09.2009, 11:41
Ну, это проще всего решить пользовательской функцией.

Например так:
Public Function СцепитьБезПустышек(target As Range)
    For Each cl In target.Cells
        If cl.Value <> «» Then СцепитьБезПустышек = СцепитьБезПустышек & cl.Value & «;»
    Next
End Function

Алексей, здравствуйте!
А если с точностью до наоборот у меня задача, макрос не подскажите?
Поясню: в столбце ооочень большое количество ячеек, в ячейках наборы цифр (телефонных номеров) по 2 штуки (+7 (495) 123 45 67 +7 (910) 765 43 21) и уж очень мне хочется их разбить, да так, чтобы второй тлф мигрировал в ячейку направо, или налево, не играет роли, но важно, чтобы в сторону.. Вооот..


Пара способов (на двух листах)

Скажи мне, кудесник, любимец ба’гов…

Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995


Цитата: _Boroda_ от 13.09.2009, 04:32
Пара способов (на двух листах)

_Boroda_, Благодарю! До формул дошел, ползая по соседним топикам, но изящество встроенной функции поражает.. Даже стыдно, что не знал про нее.. Пойду учить матчасть  ;)


  • Профессиональные приемы работы в Microsoft Excel

  • Обмен опытом

  • Microsoft Excel

  • СЦЕПИТЬ не пустые ячейки

Содержание

  1. Формула СЦЕПИТЬДИАПАЗОН
  2. Описание функции
  3. Пример 1
  4. Пример 2
  5. Пример 3
  6. Пример 4
  7. Сцепить в excel диапазон ячеек
  8. Работа с функцией СЦЕПИТЬ в Microsoft Excel
  9. Применение оператора СЦЕПИТЬ
  10. Способ 1: объединение данных в ячейках
  11. Способ 2: применение функции с пробелом
  12. Способ 3: добавление пробела через окно аргументов
  13. Способ 4: объединение колонок
  14. Способ 5: добавление дополнительных символов
  15. Функция СЦЕПИТЬ – скотч для Excel
  16. Связываем имена
  17. Связываем числа и текст
  18. Объединение значений нескольких ячеек в одну текстовую строку в EXCEL
  19. Универсальная функция Сцепить
  20. Сцепить диапазон по столбцам
  21. 3 способа склеить текст из нескольких ячеек
  22. Способ 1. Функции СЦЕПИТЬ, СЦЕП и ОБЪЕДИНИТЬ
  23. Способ 2. Символ для склеивания текста (&)
  24. Способ 3. Макрос для объединения ячеек без потери текста.
  25. СЦЕПИТЬ в одну ячейку формулой массива
  26. Сцепить ячейки в несмежном (рваном) диапазоне
  27. Как сцепить большое количество ячеек?

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

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

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

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

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

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

Пример 1

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

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

Пример 2

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

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

Пример 3

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

Пример 4

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

Источник

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

Работа с функцией СЦЕПИТЬ в Microsoft Excel

​Смотрите также​ String Dim ra​ End FunctionСцепитьМного. Update​​ а также получить​​: Всем привет!​ ячеек, содержимое которых​ РазделительСтрок As String​ сравниваются значения ячеек​Что потом с​ скорости вызова простейшей​ версиях 20003/2007 это​ но задавать полностью​ / CurrentRegion /​» «​Если Вы никогда​С помощью функции​ этом вручную добавить​Одной из интересных функций​ As Range For​

​ 2017-10-19 Option Explicit​ универсальный вариант для​

Применение оператора СЦЕПИТЬ

​Подскажите, пожалуйста, есть​​ хотим склеить​​ = «, «,​ из п.5​ такой ячейкой планируете​ функции в VBScript​ делается очень криво.​ столбцы, когда много​ UsedRange)​– символ пробела​ прежде не использовали​СЦЕПИТЬ​ пробел не получится,​​ приложения Microsoft Excel​​ Each ra In​ ‘————————————————————————————————————————————————————————————————— ‘ Procedure​ большого количества столбцов.​​ ли решение задачи:​​Например:​ _ Optional ByVal​и т.д. следующие​​ делать?​​ и VBA.​

​ Поэтому просто добавил​ пустых ячеек, будет​

​ в кавычках​ функции Excel, то​можно быстро объединять​ а только через​ является функция​ диапазон.Areas avData =​ : СцепитьМного ‘​_Boroda_​

Способ 1: объединение данных в ячейках

​Нужно собрать данные​Это универсальный и компактный​ РазделительСтолбцов As String​ условия аналогично п.п.​ЦитатаА сортировку и​У меня VBA​ пример использования, который​ слишком роскошно. Впрочем,​ для сцепки (от​F16​ можете обратиться к​ данные нескольких колонок​​ редактирование формулы.​​СЦЕПИТЬ​

    ​ ra.Value If Not​ http://www.excel-vba.ru ‘ Purpose​: Вы рассуждаете верно.​ по условию в​​ способ сцепки, работающий​​ = «; «)​ 5,6,7​ разбивку по строкам​ оказалась быстрее в​

​ виден в мастере​​ могу добавить подрезку​​ 3 до 0,​​(Product) – наименование​​ разделу​​ в одну.​​Урок:​​. Её основной задачей​​ IsArray(avData) Then ReDim​ : Функция сцепляет​ Везде, кроме фразы​​ одну ячейку при​​ абсолютно во всех​

​ Dim c As​Все условия работают​ выполняет мой примитивный​ 21 раз (0.4​ функций.​ до последней используемой​ т.е. просто сцепить)​Введите вот такую формулу​Формулы и функции​С ячейками первой строки​Мастер функций в Excel​

​ является соединение содержимого​ avData(1 To 1,​ все указанные ячейки​ . Формульный массив​ помощи формулы массива.​ версиях Excel.​ Range, v As​ по И-логике (And)​ макрос.Может, нужно было​ секунды) чем VBScript​Вот встроенную справку​ строки листа.​- ограничениям на​ в ячейке​нашего самоучителя по​ объединяемых колонок проделываем​Существуют возможности исправить данный​ двух или нескольких​ 1 To 1)​​ в одну с​​ получится сцепить вместе​

  • ​Пример во вложении.​Для​ Variant, t As​Пример вызова функции:​ сразу в одном​ (9.5 секунды)​ для данной функции​3. Так будет​ тип данных (числа,​E19​ Excel для начинающих,​ на выбор те​ недочет, вставив пробелы​ ячеек в одной.​ avData(1, 1) =​ указанным разделителем. ‘​ или посимвольным перебором,​
  • ​Спасибо!​​суммирования​

    Способ 2: применение функции с пробелом

    ​ String, s As​=Concat(A:A; «,»; 1;1;​ (нашем) макросе все​

    1. ​Option Explicit Dim​ было бы сделать​ плохо, потому что​
    2. ​ текст, даты)​:​ где представлена серия​ действия, которые указаны​

    ​ между аргументами оператора.​ Данный оператор помогает​ ra.Value End If​ Аргументы функции: ‘​ что даст Вам​P.S. ЮПД не​содержимого нескольких ячеек​ String, lr As​ B:B;»=»;3; C:C;»>=»;20; D:D;»=»;»text3″)​ это и сделать?​

    ​ objScript As Object​

  • ​ разумнее, но это​ даты придется задавать​- способу указания​​=CONCATENATE(F17,» «,F16)​​ уроков на эту​
  • ​ во втором и​Выполняем задачу по тому​ решить некоторые задачи,​ For lc =​ Диапазон — диапазон​

    Способ 3: добавление пробела через окно аргументов

    ​ формулу гораздо больше​ хочется использовать, так​ используют знак плюс​ Long, lc As​Acid Burn​Acid Burn​ ‘ Сравнение скорости​ требует немало времени,​ текстом, а Excel​ разделителей, диапазонов, критериев​=СЦЕПИТЬ(F17;» «;F16)​ тему.​ третьем способе применения​ же алгоритму, который​ которые с помощью​ 1 To UBound(avData,​

      ​ ячеек, значения которых​ моей (в которой,​ же как и​ «​ Long lr =​: ZVI, в коде​: Точно, что-то я​ выполнения простейшей функции​ попробуйте сделать сами​ тогда может произвольно​ и операторов сравнения​Усложним задачу! Предположим, что​Предположим, у нас есть​

    ​ аргумента. Правда, если​ описан выше.​ других инструментов воплотить​ 2) For lr​​ необходимо объединить в​​ кстати, обратите внимание​ дополнительные ячейки. Если​+​ Len(РазделительСтрок) + 1:​ есть небольшая неточность:​ не подумал. Такая​ в VBScript и​ и подключить через​ поменять местами месяц​ (=, >/ По​ мы хотим получить:​ таблица с контактной​ вы решили воспользоваться​Двойным щелчком левой кнопки​ невозможно. Например, с​ = 1 To​ строку. ‘ Разделитель​ на то, как​ без этого ни​​», а для​​ lc = Len(РазделительСтолбцов)​

  • ​Критерий Должно быть​ ситуация в реальных​ VBA Sub Time_Test()​ Application.MacroOptions.​ и число, если​ мере необходимости подгружаешь​We have 25 apples​ информацией, где имена​ способом с пустой​ мыши по ячейке​ его помощью удобно​​ UBound(avData, 1) If​​ — необязательный аргумент.​ ищет ПОИСК и​ как не решить​склеивания​ + 1 If​ По факту (0,​ условиях вряд ли​ Const N& =​​ZVI​​ ему так захочется​
  • ​ то одну, то​(У нас есть​ и фамилии находятся​ ячейкой, то ссылку​ с формулой активируем​ производить процедуру объединения​ Len(avData(lr, lc)) Then​

    ​ ‘ Один или​ в чем отличие​ задачу, то подскажите​содержимого ячеек используют​ Диапазон.Rows.Count = 1​ 0) Все, без​ встретится.​ 1000000 Dim i&,​: По поводу того,​nerv​ другую UDF.​ 25 яблок). Для​ в разных столбцах.​ на неё нужно​ её для редактирования.​

    Способ 4: объединение колонок

    ​ ячеек без потерь.​​ sRes = sRes​​ несколько символов, которые​ от Вашего ПОИСКа),​ плз любой вариант.​

      ​ знак «​ Then For Each​ сорт. + (1,​Извиняюсь.​ t1!, t2!, ok​ чтобы в Excel​: можно за​И в итоге​ этого нужно добавить​ Мы хотим связать​ будет сделать абсолютной.​Между каждым аргументом записываем​ Рассмотрим возможности данной​ & разделитель &​ будут вставлены между​ или макросом.​_Boroda_​​&​​ v In Диапазон​ 0) Уникал., без​ЦитатаМожет, нужно было​ As Boolean Debug.Print​ 2013 работало быстрее,​e val​ сам начинаешь путаться​ еще один аргумент​ их и получить​ Для этого, перед​ выражение в виде​ функции и нюансы​ avData(lr, lc) End​ каждым словом. ‘​​Не, если хотите,​​: Если столбцов 5​

    ​» (расположен на большинстве​ If v <>​ сорт. Все, сорт.​ сразу в одном​ «N = «​ специально не старался,​ить немного​ в них, а​ – фразу «We​ полное имя для​

  • ​ каждым знаком координат​ пробела, ограниченного с​ её применения.​ If Next lr​
  • ​ По умолчанию пробел.​​ пробуйте, никто ж​ и без допячеек​

    Способ 5: добавление дополнительных символов

    ​ клавиатур на цифре​​ «» Then s​​ (0, 1) Все,​ (нашем) макросе все​ & N t1​ просто всю обработку​Правда в этом​ файл — тормозить​ have»:​ каждого человека. На​ по горизонтали и​

      ​ двух сторон кавычками.​Скачать последнюю версию​ Next lc Next​ ‘ БезПовторов —​ не запрещает. Я​ и без UDF​ «7»). При его​ = s &​ с сорт. Уникал.,​ это и сделать?Если​ = Timer For​ сделал в VBA-массивах.​ случае вряд ли​ при пересчёте.​=CONCATENATE(«We have «,F17,» «,F16)​ рисунке ниже Вы​​ вертикали этой ячейки​​ После внесения каждого​

  • ​ Excel​ If Len(sRes) Then​ необязательный аргумент. ‘​ думаю, что в​
  • ​ (Вы это имели​​ использовании необходимо помнить,​​ РазделительСтолбцов & v​ без сорт. (1,​ можно будет включать​ i = 1​ Это стандартный метод​ будет​Может кто-нибудь сможет​=СЦЕПИТЬ(«We have «;F17;» «;F16)​ видите имена в​ ставим знак доллара​ такого значения ставим​Функция​ sRes = Mid(sRes,​

    ​ Если указан как​

    Функция СЦЕПИТЬ – скотч для Excel

    ​ свое время через​ в виду, написав​ что:​ Next Else For​ 1) Уникал., с​ и отключать эти​ To N ok​ ускорения обработки для​ЦитатаAcid Burn пишет:​ написать / найти​При желании можно добавлять​ столбце​($)​​ точку с запятой.​​СЦЕПИТЬ​

    ​ Len(разделитель) + 1)​​ ИСТИНА или 1​​ это прошел каждый​ ЮПД?), то вот​Этот символ надо ставить​ Each c In​ сорт. +​ опции, и это​ = Foo1(i, «Text3»)​ всех версий.​быструю UDF​быструю UDF​ еще больше аргументов,​B​. Естественно, что лучше​

    ​ Общий вид добавленных​​относится к группе​ End If If​ — в результирующей​ из нас. Также,​ так​​ в каждой точке​​ Диапазон.Columns t =​Т.е. (1, 0)​ не вызовет разрастания​ Next t1 =​Еще для операторов​

    Связываем имена

    ​ЦитатаZVI пишет:​для сцепки любых​ чтобы создать более​, а фамилии в​ всего это сделать​ выражений должен быть​ текстовых операторов Excel.​ БезПовторов Then Dim​ строке будут значения​ как и через​=ПСТР(ЕСЛИ(ЕЧИСЛО(ПОИСК(«, «&M$1&»,»;», «&A2&»,»));», «&A$1;»»)&ЕСЛИ(ЕЧИСЛО(ПОИСК(«,​ соединения, т.е. на​​ «» For Each​​ и (0, 1)​ кода и трудностей​​ Timer — t1​​ заменил сравнение текста​»куда правильнее»Я формулировку​​ данных по 3​​ сложное выражение. Главное​

    ​ столбце​ в самом начале,​ следующий:​​ Её основная задача​​ oDict As Object,​ без дубликатов. ‘​ попытку засунуть виртуальный​ «&M$1&»,»;», «&B2&»,»));», «&B$1;»»)&ЕСЛИ(ЕЧИСЛО(ПОИСК(«,​ всех «стыках» текстовых​ v In c.Value​ работают с точностью​ в реализации. То​ Debug.Print «VBScript», Round(t1,​

    ​ сравнением с числами,​ изменил, если что​ критериям, которые можно​ помните, что синтаксис​A​​ чтобы в другие​​» «;​ — объединение в​ sTmpStr Set oDict​ Для английской локализации​ диапазон в Проверку​

    • ​ «&M$1&»,»;», «&C2&»,»));», «&C$1;»»)&ЕСЛИ(ЕЧИСЛО(ПОИСК(«,​​ строк также, как​ If v <>​
    • ​ до наоборот.​​ было бы отлично​ 3) & «​
    • ​ это тоже выполняется​​ ) Теперь это​ задавать по необходимости.​

    ​ формулы должен быть​. Наша формула будет​ поля, где содержится​​Для того, чтобы вывести​​ одной ячейке содержимого​

    ​ = CreateObject(«Scripting.Dictionary») sTmpStr​
    ​ данный параметр указывается​

    ​ данных.​ «&M$1&»,»;», «&D2&»,»));», «&D$1;»»)&ЕСЛИ(ЕЧИСЛО(ПОИСК(«,​ вы ставите несколько​ «» Then t​Буду благодарен, если​nerv​ sec» t2 =​ быстрее.​ можно​

    ​Примерно такого вида​​ предельно точен, иначе​ в ячейке​ этот адрес, пользователь​ результат на экран,​ нескольких ячеек, а​ = Split(sRes, разделитель)​ как TRUE и​Jack Famous​

    ​ «&M$1&»,»;», «&E2&»,»));», «&E$1;»»);3;999)​ плюсов при сложении​​ = t &​​ подправите (сам пока​​: вообще-то я ничего​​ Timer For i​

    ​ZVI​ZVI​=СЦЕПКА(Разделитель; Диапазон сцепки;​ она может не​​E2​​ мог копировать его,​ жмем на кнопку​ также отдельных символов.​

    ​ On Error Resume​ FALSE соответственно. ‘​:​​На каждый новый​​ нескольких чисел (2+8+6+4+8)​ РазделительСтрок & v​​ не понял, как​​ не предлагаю решать)​ = 1 To​

    Связываем числа и текст

    ​: Александр, хотелось бы​​: Александр, да, тогда​​ Optional Диап. усл._1;​ заработать. В большой​.​ как содержащий постоянные​Enter​ Начиная с версии​ Next For lr​ Update 2017-10-19: http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=97166&TITLE_SEO=97166-stsepit-yacheyki-v-nesmezhnom-rvanom-diapazone​​Доброго утра, Планетяне!​​ столбец добавляете кусок​Если нужно приклеить произвольный​ Next If t​). ​ Я только высказываю​ N ok =​ в теме автора​ будет медленнее, как​

    ​ Оператор_1 & Условие_1;​ формуле легко допустить​

    • ​Прежде, чем мы начнем​​ абсолютные ссылки. В​.​
    • ​ Excel 2016, вместо​​ = LBound(sTmpStr) To​ ‘ Изменения: работает​
    • ​Есть замечательная UDF​​ типа​

    ​ текст (даже если​ <> «» Then​​amix_6​​ свое мнение о​

    ​ Foo2(i, «Text3») Next​
    ​ решать проблемы автора.​

    ​ плата за универсальность.​ Optional Диап. усл._2;​​ ошибку!​​ вводить формулу, поймите​ остальных полях оставляем​Как видим, на месте​ данного оператора используется​ UBound(sTmpStr) oDict.Add sTmpStr(lr),​ в несмежных диапазонах.​

    ​ это всего лишь​ s = s​: Добрый день! Подскажите,​ том, что у​ t2 = Timer​У меня есть​Встроенная функция СУММЕСЛИМН()​ Оператор_2 & Условие_2;​Урок подготовлен для Вас​ важный момент: функция​ относительные ссылки. Как​

    ​ вставки пробелов с​ функция​
    ​ sTmpStr(lr) Next lr​
    ​ При этом первый​

    ​ «СцепитьМного». Сцепляет данные​

    Объединение значений нескольких ячеек в одну текстовую строку в EXCEL

    ​ «&E$1;»»)​ точка или пробел,​ & РазделительСтолбцов &​

    ​ пожалуйста, как сцепить​ одного автора одни​ — t2 Debug.Print​ правило: решая проблему​ использует аналогичные моему​

    ​ Optional Диап. усл._3;​ командой сайта office-guru.ru​СЦЕПИТЬ​ всегда, после выполнения​ кавычками в ячейке​

    ​СЦЕП​ sRes = «»​ аргумент(рваные диапазоны) надо​ в диапазоне через​Еще в файле​

    ​ не говоря уж​ Mid(t, lr) Next​ диапазон ячеек по​ критерии отбора​ «VBA», Round(t2, 3)​

    ​ сначала убедиться, проблема​ варианту простые операторы​ Оператор_3 & Условие_3)​

    ​Источник: http://www.gcflearnfree.org/excel-tips/concatenate-excels-duct-tape/full​будет связывать только​ процедуры, жмем на​ появились разделения между​

    ​. Но в целях​ sTmpStr = oDict.Keys​ будет передавать обязательно​ разделитель. Пропускает пустые​ покрасия нужные ячейки​ о целом слове),​ End If СцепитьДиапазон2​ столбцам (вертикально). В​Цитата=, >/ a​ & » sec»​ ли это вообще.​ и этого хватает​Очень надеюсь на​Перевел: Антон Андронов​ то, что Вы​

    ​ кнопку​ словами.​ сохранения обратной совместимости​ For lr =​ заключив в скобки​ ячейки и контролирует​ Условным форматированием​ то этот текст​ = Mid(s, lc)​ интернете нашла отличный​

    ​ * 2 >​ Debug.Print «VBA is​А автор темы​ для большинства случаев.​ Вашу помощь и​Автор: Антон Андронов​ укажете и ничего​«OK»​Конечно, если преобразуемых значений​​ оператор​​ LBound(sTmpStr) To UBound(sTmpStr)​ (добавить их вручную):​ дубликаты.​​Ячейку М1 можно​​ надо заключать в​ End FunctionПравда, для​ вариант через vba,​ b — 1​ faster in «​

    ​ не озвучивал проблему,​

    ​Acid Burn​ понимание.​Объединим значения из нескольких​

    ​ более. Если необходимо,​​.​ не много, то​СЦЕПИТЬ​ sRes = sRes​

    Универсальная функция Сцепить

    ​ =СцепитьМного((A2;A3;A4;A5);»-«) ‘—————————————————————————————————————————————————————————————————- Function​​Всё хорошо, но,​​ менять​
    ​ кавычки. В предыдущем​ меня загадка, как​ но в нем​ ‘или такое a​ & Round(t1 /​ которые Вы предлагаете​
    ​: To ZVI.​Заранее огромное спасибо!​ ячеек в одной​ чтобы в ячейке​
    ​Устанавливаем курсор в нижний​ вышеприведенный вариант разрыва​тоже оставлен, и​ & IIf(sRes <>​
    ​ СцепитьМного(диапазон As Range,​ часто приходится сцеплять​Logotip​ примере с функцией​
    ​ в таком случае​ только построчно. Excel​ / 2 +​
    ​ t2, 0) &​ решать.​> 1. Не понял​PS: Мои поздравления​ ячейке.​ появились знаки пунктуации,​ правый угол элемента​
    ​ склейки прекрасно подойдет.​ его можно использовать​ «», разделитель, «»)​ Optional разделитель As​ «рваный» диапазон, то​
    ​: Да, именно UDF​ СЦЕПИТЬ о кавычках​​ вы будете различать​​ 2013​ a — b​ » times» End​Что тормозит -​
    ​ вопроса. ​
    ​ по поводу перехода​Предположим, что имеется диапазон​ пробелы или что-то​ с формулой. Появляется​ Но его будет​ наравне со​ & sTmpStr(lr) Next​
    ​ String = «​ есть ячейки, идущие​ имел ввиду.​
    ​ заботится сам Excel​
    ​ массивы:​Спасибо огромное!​в Вашу функцию​
    ​ Sub ‘ VBScript​

    ​ проверьте, конечно. Я​​Я имел ввиду,​ на современный движок.​ имен, необходимо, чтобы​ еще, добавьте их​ значок, имеющий вид​ затруднительно быстро воплотить,​
    ​СЦЕП​
    ​ lr End If​ «, Optional БезПовторов​ НЕ подряд. Таких​Спасибо большое за​
    ​ — в этом​
    ​1 11и​Public Function СЦЕПИТЬДИАПАЗОН(ByRef​ просто так не​
    ​ function Function Foo1(a,​ когда-то проверял.​ что, если заменить​Стало намного лучше!​
    ​ все имена были​ в аргументы функции.​ крестика, который называется​ если существуют множество​
    ​.​ СцепитьМного = sRes​ As Boolean =​
    ​ «зон/областей» может быть​ решение.​
    ​ же случае их​
    ​11 1поскольку результат​ ДИАПАЗОН As Excel.Range,​

    ​ запишешь, придется лезть​​ b) If objScript​Но тот факт,​
    ​ C1:C6;»=»;3 на C1:C6;»>»;3,​​ZVI​ выведены подряд в​
    ​В данном примере мы​ маркером заполнения. Зажимаем​ ячеек, которые нужно​Синтаксис этого оператора выглядит​ End FunctionПри этом​ False) Dim avData,​
    ​ много (у меня​

    ​А можно как-то​​ надо ставить вручную.​​ для них будет​​ Optional ByVal РАЗДЕЛИТЕЛЬ​
    ​ в код. Т.о.​
    ​ Is Nothing Then​ что и JScript​ то функция выдаёт​
    ​: Приложил вариант функции​ одной ячейке.​ хотим, чтобы между​
    ​ левую кнопку мыши​ объединить. Тем более,​ следующим образом:​
    ​ первый аргумент(рваные диапазоны)​ lr As Long,​ до 20 бывает,​
    ​ решить эту задачу​Вот, например, как можно​
    ​ одинаковым — «1;​ As String =​ если потребуется n​ Set objScript =​​ и VBScript могут​
    ​ #Cond1?​ Concat(), допускающей до​
    ​Когда значений немного, то​
    ​ именами стоял пробел​ и тянем его​ если эти ячейки​=СЦЕПИТЬ(текст1;текст2;…)​
    ​ надо будет передавать​

    ​ lc As Long,​​ но, думаю, что​ через формулу массива?​ собрать ФИО в​

    ​ 1; 1″.Спасибо огромное!​​ «») As String​ «аналогичных» замысловатых условий,​ CreateObject(«ScriptControl») With objScript​ быть отключены администратором,​> 2. могу добавить​ 9 условий в​ объединить их можно​ (чтобы не получалось​
    ​ вниз параллельно расположению​ не находятся в​В качестве аргументов могут​ обязательно заключив в​ sRes As String​ для изменённого кода​_Boroda_​ одну ячейку из​ Последний вариант для​
    ​ Dim rCell As​ придется писать n​ .Language = «VBScript»​ уменьшают мой интерес​ подрезку до последней​ Excel 2003 и​ с помощью функции​ что-то вроде –​

    ​ объединяемых элементов.​​ едином массиве. Значительно​​ выступать, как текст,​​ скобки: =СцепитьМного((A2;A3;A4;A5);»-«)​​ Dim ra As​ это будет неважно).​: Можно. Введите мою​
    ​ трех с добавлением​
    ​ меня подошел идеально,​
    ​ Range Dim MergeText​
    ​ вариантов сравнения​ .AddCode «Function Fn(a,b):Fn​ к данному решению.​ используемой строки листа.​

    ​ до 84 условий​​ СЦЕПИТЬ() записав формулу​JosephineCarter​После выполнения этой процедуры​
    ​ упростить расстановку пробела​ так и ссылки​Jack Famous​ Range For Each​Вопрос:​

    ​ формулу не Ентером,​​ пробелов:​
    ​ тк в моем​ As String For​
    ​ЦитатаZVI пишет:​ = a=1 And​ Тем более, что​Было бы здорово.​ в Excel 2007+.​
    ​ =СЦЕПИТЬ(A6;A7;A8;A9)​), поэтому в аргументы​ данные в указанных​
    ​ можно, воспользовавшись вариантом​ на ячейки, которые​:​ ra In диапазон.Areas​что нужно изменить​
    ​ а одновременным нажатием​Если сочетать это с​
    ​ случае не бывает​ Each rCell In​
    ​Все же приведу​
    ​ b=»»text3″»:End Function» End​ есть гораздо более​ Если при этом​Порядок аргументов функции:​Или с помощью Амперсанда​
    ​ нам нужно будет​ столбцах будут объединены​ его вставки через​
    ​ его содержат. Количество​The_Prist, огромное спасибо, автору. ​ avData = ra.Value​ в коде, чтобы​ Контрл Шифт Ентер​
    ​ функцией извлечения из​ пустых столбцов между​

    ​ ДИАПАЗОН If rCell.Text​​ код для сравнения​​ With End If​​ быстрые методы, но​ она будет правильно​1. Диапазон ячеек​ & (добавим еще​ добавить пробел. Таким​
    ​ в одном столбце.​ окно аргументов.​ аргументов может варьироваться​работает и для​ If Not IsArray(avData)​ реализовать возможность выделения​А если серьезно,​ текста первых букв​ заполненными, данные заносятся​ <> «» Then​ скорости вызова простейшей​ Foo1 = objScript.Run(«Fn»,​ они на грани​ работать на всех​ (столбец или несколько​ для красоты символ​ образом, у нас​

    ​Урок:​​Выделяем двойным кликом левой​ от 1 до​ сплошного и для​
    ​ Then ReDim avData(1​ несмежных областей?​ то формула массива​ -​

    ​ подряд.​​ MergeText = MergeText​ функции в VBScript​
    ​ a, b) End​
    ​ здравого смысла, поэтому​ листах. ​ смежных), которые должны​ пробела): =A6&» «&A7&»​ окажется три аргумента:​Как объединить столбцы в​
    ​ кнопки мыши любую​
    ​ 255 включительно.​ разрывного​

    ​ To 1, 1​​При этом, чтобы​ (да и не​ЛЕВСИМВ (LEFT)​Еще раз спасибо!​ & РАЗДЕЛИТЕЛЬ &​
    ​ и VBA.ч и​ Function ‘ VBA​
    ​ о них тоже​> 3. Так будет​ попасть в результат​
    ​ «&A8&» «&A9​B2​ Экселе​ пустую ячейку на​Как известно, обычное объединение​скажите пожалуйста, а​ To 1) avData(1,​ сохранился контроль над​ только, обычная иногда​, то можно получить​
    ​Надпись на заборе: «Катя​ rCell.Text End If​ т.д. Ибо, как​ function Function Foo2(a,​ не распространяюсь​ плохо​2. Разделитель результата​Если значений много, то​

    ​(First Name) –​​Функцию​ листе. С помощью​ ячеек в Эксель​ вот эти скобки​ 1) = ra.Value​ дубликатами и пропуск​ тоже) дает результатом​ фамилию с инициалами​ + Миша +​
    ​ Next MergeText =​ мне кажется, слабым​ b) Foo2 =​Acid Burn​Тогда лучше оставить,​

    ​3. Столбец №1​​ придется вводить вручную​ имя​СЦЕПИТЬ​
    ​ клавиатуры устанавливаем внутри​ приводит к потере​ рисовать только вручную​ End If For​
    ​ пустых ячеек.СцепитьМного Option​ МАССИВ. Массив можно​ одной формулой:​ Семён + Юра​
    ​ Mid(MergeText, Len(РАЗДЕЛИТЕЛЬ) +​ местом (в данном​ a = 1​
    ​: Жаль, что нельзя​ как есть.​ ячеек, участвующих в​ много амперсандов и​» «​можно также использовать​ неё пробел. Желательно,​ данных. Сохраняются только​ можно? Программно слишком​ lc = 1​ Explicit ‘————————————————————————————— ‘​ вывести на лист​Имеем текст в нескольких​

    ​ + Дмитрий Васильевич​​ 1) СЦЕПИТЬДИАПАЗОН =​ случае) как раз​ And b =​ сделать полноценные подсказки​
    ​Ещё 2 вопроса:​ условии №1​ аргументов функции СЦЕПИТЬ().​
    ​– символ пробела​ для добавления дополнительных​ чтобы она находилась​ данные расположенные в​
    ​ запарно будет?​ To UBound(avData, 2)​
    ​ Procedure : СцепитьМного​ в столько ячеек,​ ячейках и желание​

    ​ +​​ MergeText End Function​ является передача параметров​

    ​ «text3» End Function​​ при вводе UDF​- можно ли​4. Оператор условия​ Это неудобно.​ в кавычках​ символов и выражений,​ подальше от основного​ верхнем левом элементе.​The_Prist​ For lr =​
    ​ ‘ http://www.excel-vba.ru ‘​
    ​ сколько в этом​ — объединить эти​товарищ Никитин +​amix_6​ и частый вызов​ ‘​ в ячейку. ​ дописать кусок кода,​​ №1, может быть​Избежать этого поможет дополнительный​​A2​
    ​ которых не было​ массива. Очень важно,​

    ​ Для того, чтобы​​: Если речь про​ 1 To UBound(avData,​ Purpose : Функция​ массиве значений (по​
    ​ ячейки в одну,​ рыжий сантехник +​:​ функции. .ЦитатаZVI пишет:​
    ​Acid Burn​Но это не​ который будет выдавать​
    ​ одним из: «=»,​
    ​ столбец с простейшей​(Last Name) —​ в первоначальном объединяемом​ чтобы эта ячейка​ объединить содержимое двух​ проставление из самой​ 1) If Len(avData(lr,​ сцепляет все указанные​
    ​ вертикали и горизонтали).​ слив туда же​ Витенька + телемастер​amix_6​У меня VBA​: 2 вопроса:​
    ​ критично, ведь синтаксис​
    ​ подсказку при вводе​ «>=», «»​ формулой:​

    ​ фамилия​​ диапазоне. Более того,​ никогда после этого​ и более ячеек​ функции, то программно​ lc)) Then sRes​
    ​ ячейки в одну​ В одну ячейку​ их текст. Проблема​ Жора +​, попробуйте — Public​
    ​ оказалась быстрее в​- как убрать​ прост.​ UDF​5. Значение условия​Значение из последней строки​Теперь, когда аргументы определены,​ можно с помощью​ не заполнялась никакими​ в Эксель без​ вообще не получится,​ = sRes &​ с указанным разделителем.​ в общем случае​ в одном -​сволочь Редулов +​ Function СЦЕПИТЬДИАПАЗОНn(ByRef ДИАПАЗОН​ 21 раз (0.4​ ошибку #ЗНАЧ! при​Завтра обязательно проверю​(так, как это​ №1, с которым​ будет содержать желаемую​ мы можем записать​ данной функции внедрять​ данными.​ потерь можно применить​ т.к. точка-с-запятой(проставляемая для​ разделитель & avData(lr,​ ‘ Аргументы функции:​ чисто формулой не​ кнопка​ не вспомнить имени,​ As Excel.Range, Optional​ секунды) чем VBScript​ отсутствии критериев сцепления​ Concat1 на рабочем​ реализовано для «родных»​ сравниваются значения ячеек​ текстовую строку (см.​ в ячейку​ и другие операторы.​Выполняем те же действия,​ функцию​ рваных диапазонов) является​ lc) End If​ ‘ Диапазон —​ получится все это​Объединить и поместить в​ длинноволосый такой +​ ByVal РАЗДЕЛИТЕЛЬ As​ (9.5 секунды)Вместе с​(когда просто надо​ файле (сейчас нет​

    ​ формул)​​ из п.3​
    ​ файл примера).​E2​Выполняем действия по добавлению​
    ​ что и при​СЦЕПИТЬ​
    ​ еще и разделителем​ Next lr Next​ диапазон ячеек, значения​

    ​ засунуть.​​ центре (Merge and​ещё 19 мужиков​ String = «»)​
    ​ тем, вариант реализации​ сцепить диапазон)?​ под рукой).​- как Вам​
    ​и т.д. следующие​Возвращаясь к функции СЦЕПИТЬ()​вот такую формулу:​ значений в окно​ первом способе применения​.​ аргументов. Сама функция​ lc Next If​
    ​ которых необходимо объединить​Это все с​

    ​ Center)​​ + муж =​​ As String Dim​
    ​ через объект​- как к​Думаю, проблем не​
    ​ удалось сделать выполнение​ условия аналогично п.п.​
    ​ можно обнаружить, что​=CONCATENATE(B2,» «,A2)​ аргументов функции любым​
    ​ функции​Выделяем ячейку, в которой​
    ​ ничего не сможет​ Len(sRes) Then sRes​ в строку. ‘​
    ​ учетом того, что​в Excel объединять-то​ любовь!»​ v Dim MergeText​
    ​ScriptControl​ этой UDF добавить​ возникнет.​
    ​ макроса в 2013​ 3,4,5​ она может вернуть​

    ​=СЦЕПИТЬ(B2;» «;A2)​​ из способов, который​СЦЕПИТЬ​ планируем разместить объединенные​ сделать в этом​ = Mid(sRes, Len(разделитель)​ Разделитель — необязательный​ Вам ведь нужно,​ ячейки умеет, а​В категории​ As String For​, на мой взгляд,​ опцию «Без повторов»?​To ZVI: огромное спасибо​ офисе быстрее, чем​
    ​Все условия работают​ несколько значений в​Как и с любой​ был приведен выше.​, вплоть до открытия​
    ​ данные. Кликаем на​ случае и ошибка​ + 1) End​
    ​ аргумент. ‘ Один​ чтобы автоматически все​ вот с текстом​Текстовые​ Each v In​ будет быстрее варианта​ZVI​

    ​ за UDF и​​ в 2007​ по И-логике (And)​ одной строке и​ другой функцией Excel,​ В одно из​
    ​ окна аргументов оператора.​
    ​ кнопку​ возникнет еще на​ If If БезПовторов​ или несколько символов,​ менялось, правильно?​ сложность — в​есть функция​ ДИАПАЗОН.Value If v​Evaluate()​: 1. В моем​ советы!​

    ​(во всех моих​​Пример вызова функции:​ без утомительного ввода​ важен синтаксис. Не​ полей (при необходимости​ Добавляем значение первой​«Вставить функцию»​ стадии обращения к​
    ​ Then Dim oDict​ которые будут вставлены​Но вообще-то для​ живых остается только​СЦЕПИТЬ (CONCATENATE)​ <> «» Then​
    ​.​ примере работает: =Concat(A1:A6;​RAN​ макросах получается наоборот)​=Concat(A1:A6; «,»; B1:B6;»=»;3;​ многочисленных аргументов. Для​ забудьте начать со​ их может быть​
    ​ ячейки с данными​
    ​. Она имеет вид​ функции, без выполнения​ As Object, sTmpStr​ между каждым словом.​ этой задачи как​ текст из верхней​, которая соединяет содержимое​ MergeText = MergeText​ЦитатаZVI пишет:​ «,» )​: А для общего​nerv​
    ​ C1:C6;»>=»;20; D1:D6;»=»;»text3″)​ этого запишем формулу​ знака равенства (=)​ и несколько) добавляем​ в поле окна,​ пиктограммы и размещена​ даже первой строки​​ Set oDict =​​ ‘ По умолчанию​ раз прекрасно подходят​​ левой ячейки.​​ нескольких ячеек (до​
    ​ & РАЗДЕЛИТЕЛЬ &​
    ​Александр, хотелось бы​2. Нужно сначала​ развития можно познакомить?​:​nerv​ =СЦЕПИТЬ(A6:A9), указав в​ и поставить между​ любой текстовый материал,​ как это уже​
    ​ слева от строки​
    ​ кода.​ CreateObject(«Scripting.Dictionary») sTmpStr =​​ пробел. ‘ БезПовторов​

    ​ UDF-ки, которых огромная​​Чтобы объединение ячеек происходило​ 255) в одно​ v End If​
    ​ в теме автора​ придумать, как задавать​ZVI​ZVI,​: Хорошо, что все​ качестве единственного аргумента​ аргументами разделители (запятая​ который пользователь считает​ было описано ранее.​

    ​ формул.​​А если вписывать​​ Split(sRes, разделитель) On​
    ​ — необязательный аргумент.​ куча понаписана.​ с объединением текста​
    ​ целое, позволяя комбинировать​ Next MergeText =​ решать проблемы автора.считаю​ , что требуется​: Рад был помочь,​
    ​как-то так на​ переехали​

    ​ весь диапазон сразу,​​ или точка с​ нужным добавить. Данный​
    ​ Затем устанавливаем курсор​Открывается​ другой процедурой -​ Error Resume Next​
    ​ ‘ Если указан​
    ​Здесь в Готовых​ (как в таблицах​
    ​ их с произвольным​ Mid(MergeText, Len(РАЗДЕЛИТЕЛЬ) +​
    ​ отхождение от темы​ именно «уникально».​ справку могу в​
    ​ скорую руку. Правда,​ZVI,​ а не отдельные​ запятой).​
    ​ текст обязательно должен​ во второе поле,​Мастер функций​ не вижу проблем.​
    ​ For lr =​ как ИСТИНА или​ решениях парочка есть​
    ​ Word) придется использовать​ текстом. Например, вот​
    ​ 1) СЦЕПИТЬДИАПАЗОНn =​
    ​ делом обычным и​Наверное, проще сделать​

    ​ принципе и нарисовать,​​ не уверен, что​согласитесь, не очень​
    ​ ячейки. В результате​Замечание:​ быть заключен в​ и выделяем ту​. В категории​ Либо через Union​ LBound(sTmpStr) To UBound(sTmpStr)​ 1 — в​ http://www.excelworld.ru/forum/3-0-1-0-10-1-[%D1%81%D1%86%D0%B5%D0%BF]​ макрос. Для этого​ так:​
    ​ MergeText End Function​ не подсудным, т.к.​ еще одну функция​ но тогда придется​
    ​ будет работать в​ гибко​ получим лишь значение​​ставить между аргументами​

    Сцепить диапазон по столбцам

    ​ кавычки. Жмем на​​ пустую ячейку с​«Текстовые»​ передавайте диапазон, либо​ oDict.Add sTmpStr(lr), sTmpStr(lr)​ результирующей строке будут​Logotip​ откройте редактор Visual​Нюанс: не забудьте о​amix_6​
    ​ эти отхождения, зачастую,​
    ​ с другим именем,​ все это засовывать​ Office x64​В данном случае​ первой ячейки.​ запятую или точку​ кнопку​ пробелом, о которой​или​ вписывайте текстом через​ Next lr sRes​ значения без дубликатов.​:​ Basic на вкладке​ пробелах между словами​: Спасибо огромное, это​ гораздо более интересны​ например, ConcatUniq(), чтобы​

    ​ в надстройку. Задачка​​Function Foo(ByVal Valid​​ идеальный вариант (на​​Теперь в Строке формул​ с запятой –​«OK»​ шла речь ранее.​«Полный алфавитный перечень»​ .Formula.​ = «» sTmpStr​ ‘ Для английской​Согласен, это соответствует​Разработчик -​ — их надо​ то что надо!​ основной поставленной задачи​ не усложнять синтаксис​ была специфическая, но​ As String, a,​ мой взгляд) передавать​ выделим формулу =СЦЕПИТЬ(A6:A9)​

    ​ зависит от того,​​.​ Появляется ссылка в​
    ​ищем оператор​Jack Famous​ = oDict.Keys For​ локализации данный параметр​ условиям задачи ))​Visual Basic (Developer -​ прописывать как отдельные​Попрошу еще о​ЦитатаRAN пишет:​
    ​ аргументов. Или требуется,​

    ​ интересная, спасибо и​​ b) As Boolean​​ функцию, возвращающую степень​​ и нажмем клавишу​ в какой стране​Как видим, после этого​ поле окна аргументов.​«СЦЕПИТЬ»​: The_Prist, большое спасибо​
    ​ lr = LBound(sTmpStr)​ указывается как TRUE​Цитата​ Visual Basic)​ аргументы и заключать​ помощи, может можно​А для общего​ чтобы всегда были​ Вам — за​ With CreateObject(«ScriptControl») .Language​ истинности условия, что​ F9. Получим массив​ Вы живёте и​ действия к объединенным​ Для ускорения процесса​. Выделяем это наименование​ за советы!​ To UBound(sTmpStr) sRes​ и FALSE соответственно.​_Boroda_, 03.11.2017 в​или сочетанием клавиш​ в скобки, ибо​ чтобы разделитель между​

    ​ развития можно познакомить?я​ только уникальные?​ развлечение​ = «JScript» .AddCode​ то вроде​ =<«Вася»:»Петя»:»Даша»:»Маша»>, его можно​ какой версией Excel​
    ​ данным был добавлен​ можно её скопировать,​ и жмем на​На вашей тестить​ = sRes &​ ‘————————————————————————————— Function СцепитьМного(диапазон​ 10:41, в сообщении​ Alt+F11, вставим в​ текст.​ данными в столбцах​за​Потом еще и​To RAN:​ «function fn(a,b,c,d,e) b​ скопировать в буфер​ пользуетесь.​ и текстовый материал.​ выделив и нажав​ кнопку​ не буду, но​ IIf(sRes <> «»,​ As Range, Optional​ № 4 ()​ нашу книгу новый​Очевидно, что если нужно​ был один (например​ZVI​ сортировка потребуется?​Цитата А для​ & Valid &​Acid Burn​ обмена (без знака​Вот и всё! Когда​Оператор​ сочетание клавиш​«OK»​ есть задумка UDF​ разделитель, «») &​ разделитель As String​ А если серьезно,​ программный модуль (меню​ собрать много фрагментов,​ запятая), а между​: Мне же неизвестно,​Acid Burn​
    ​ общего развития можно​
    ​ «>» Foo =​:​ = и фигурных​ нажмете​СЦЕПИТЬ​Ctrl+C​.​ на основе СЧИТАТЬПУСТОТЫ​ sTmpStr(lr) Next lr​ = » «,​ то формула массива​
    ​Insert — Module​

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

    ​ то использовать эту​ группами значений столбцов​ в какие ячейки​:​ познакомить?Андрей, там же​
    ​ .Run(«fn», a, b)​ZVI​ скобок) и вставить​Enter​
    ​– единственная возможность​.​Запускается окно аргументов функции.​
    ​ для рваных диапазонов.​ End If СцепитьМного​ Optional БезПовторов As​

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

    ​ (да и не​​) и скопируем туда​​ функцию уже не​​ другой (например точка​​ помещать результат.​> работает: =Concat(A1:A6; «,»)​ было продолжение (подчеркнуто):​ End With End​, Вы — гений!​ в нужную ячейку.​, появится полное имя:​

    ​ объединения ячеек без​Затем добавляем ссылку на​ В качестве аргументов​ Создам тут тему​ = sRes End​ Boolean = False)​ только, обычная иногда​

    ​ текст такого простого​ очень удобно, т.к.​ с запятой).​Раз ситуация с​Да, но есть​ «есть гораздо более​ Function Sub Example()​Погонял функцию:​От наборов символов «:»​Josephine Carter​ потерь в Excel.​​ следующий элемент, который​​ могут выступать ссылки​ и опробую уже​ Function​ Dim avData, lr​ тоже) дает результатом​​ макроса:​​ придется прописывать ссылки​Спасибо еще раз!​ 32787 символами не​ ограничение количества строк​ быстрые методы, но​ MsgBox Foo(«a >​- Правильно работает​ (двойные кавычки, двоеточие​.​ Кроме того, с​

    ​ нужно добавить. В​ на ячейки, содержащие​ на ней)))​​The_Prist​​ As Long, lc​ МАССИВ. Массив можно​Sub MergeToOneCell() Const​

    ​ на каждую ячейку-фрагмент​amix_6​

    ​ типичная, то пока​

    5652 строк).​​ они на грани​ b», 4, 3)​ с текстом, числами​

  • ​ и опять двойные​Теперь, потянув мышью за​ его помощью можно​ очередном поле опять​
  • ​ данные или отдельный​​tankwar121​: почти все(кроме отсечения​ As Long, sRes​
  • ​ вывести на лист​

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

    ​ sDELIM As String​ по отдельности. Поэтому,​: Здравствуйте,​ просто добавил сортировку​

    ​Т.е. =Concat(A1:A10000; «,»)​​ здравого смысла,​​ ‘ True MsgBox​ и датами​ кавычки) можно избавиться​​ маркер автозаполнения, скопируйте​​ соединять целые столбцы,​​ добавляем ссылку на​​ текст. Если в​: Нужно сцепить диапазон​​ дублей). Будет выглядеть​​ As String avData​ в столько ячеек,​ = » «​ начиная с 2016​amix_6​

    • ​ и сделал еще​ уже не сработает.​поэтому о них тоже​ Foo(«a > b»,​- Операторы и​ с помощью функции​ формулу во все​ добавлять текстовые значения,​
    • ​ пустую ячейку. Так​ задачу входит объединение​ ячеек который указан​ так: Option Explicit​ = диапазон.Value If​ сколько в этом​ ‘символ-разделитель Dim rCell​ версии Excel, на​, Улучшил предложенную выше​ одну функцию для​> или требуется, чтобы​ не распространяюсь​ 4, 7) ‘​ разделители можно задавать​ ПОДСТАВИТЬ() (см. файл​

    ​ ячейки до​ проводить некоторые другие​ как мы скопировали​ содержимого ячеек, то​ в EXCEL (разделитель​

    ​ ‘————————————————————————————— ‘ Procedure​ Not IsArray(avData) Then​ массиве значений (по​ As Range Dim​​ замену функции​​ функцию: теперь в​ уникальных значений CondUnique(),​ всегда были только​

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

    ​»​ False End Sub​ ссылкой на ячейку​ примера). или с​E11​ манипуляции. Знание алгоритма​ её адрес, то​ в данном случае​​ — пробел)​ : СцепитьМного ‘​ СцепитьМного = avData​​ вертикали и горизонтали).​ sMergeStr As String​СЦЕПИТЬ​ ее параметрах можно​ аргументы — те​ уникальные?​Не готов грузить​

    ​ZVI​- Время выполнения​ помощью инструмента Заменить​. В итоге полное​ работы с этой​ можно установить курсор​ мы будем работать​​Step_UA​ ​ http://www.excel-vba.ru ‘ Purpose​ Exit Function End​​ В одну ячейку​ If TypeName(Selection) <>​пришла ее более​ задавать отдельно разделитель​​ же​​> Потом еще и​ этим сумасшествием.​: Александр, медленно все​

    ​ в массиве 4х1048576​ (нажмите ​ имя появится для​ функцией позволит облегчить​ в поле и​ только со ссылками.​: Function SSS(R As​ : Функция сцепляет​ If For lc​ в общем случае​ «Range» Then Exit​ совершенная версия с​ строк и отдельно​Acid Burn​ сортировка потребуется?​Acid Burn​ это будет. Можно​ (4х10.000 строк заполнено):​CTRL+H​ каждого человека.​ решение многих вопросов​ нажать сочетание клавиш​Устанавливаем курсор в первое​ Range) As String​ все указанные ячейки​ = 1 To​ чисто формулой не​ Sub ‘если выделены​

    ​ похожим названием и​ — разделитель столбцов.​:​Нет, по ситуации​: О подсказках /​​ значительно быстрее.​​10.98/ 9.11/ 4.98​​, чтобы его вызвать).​​Если хотите усложнить задачу,​ для пользователя программы.​Ctrl+V​ поле окна. Затем​ SSS = Join(WorksheetFunction.Transpose(R.Value),​

    СЦЕПИТЬ в одну ячейку формулой массива

    ​ в одну с​​ UBound(avData, 2) For​
    ​ получится все это​ не ячейки -​
    ​ тем же синтаксисом​Public Function СцепитьДиапазон(ByVal​Спасибо!​ требуется выбрать все​
    ​ справке к UDF​
    ​Но мне-то это​
    ​ сек. (Excel 2007/​ Если строка Вася»:»Петя»:»Даша»:»Маша​ то попробуйте при​Автор: Максим Тютюшев​. Координаты будут вставлены.​ выделяем ссылку на​ » «) End​ указанным разделителем. ‘​

    ​ lr = 1​​ засунуть.​ выходим With Selection​ — функция​ Диапазон As Range,​А можно привести​ или только уникальные.​ я поинтересовался для​
    ​ зачем? Здесь же​ 2010/ 2013)​ находится в ячейке​ помощи функции​Им пользовался Макгайвер. Экипаж​
    ​ Таким способом чередуем​ листе, в которой​ FunctionВ качестве параметра​
    ​ Аргументы функции: ‘​ To UBound(avData, 1)​
    ​Ну, почему же​ For Each rCell​СЦЕП (CONCAT)​
    ​ _ Optional ByVal​ синтаксис Concat() к​

    ​А сортировку и​​ общего развития.​ автору темы помогаем,​
    ​Несколько вопросов: можно​G8​
    ​СЦЕПИТЬ​ Аполлон-13 также использовал​ поля с адресами​

    ​ содержатся данные, нужные​​ передаем связаный диапазон​ Диапазон — диапазон​ If Len(avData(lr, lc))​ не получится (если​
    ​ In .Cells sMergeStr​. Ее принципиальное отличие​ РазделительСтрок As String​ виду:​ разбивку по строкам​Вы сделали отличную​ а не мне​ ли​, то формула для​связать город и​ его. Всегда в​ элементов и пустой​ для объединения. После​ из не менее​ ячеек, значения которых​ Then sRes =​
    ​ я Вас правильно​ = sMergeStr &​ в том, что​ = «, «,​=Concat(B1:B6;»,»; 1/0;1/0; C1:C6;»=»;3;​
    ​ выполняет мой примитивный​ вещь, которая не​nerv​- добавить в​ замены этих символов,​
    ​ штат в столбце​ трудной ситуации, когда​ ячейки. После того,​

    ​ того, как координаты​​ 2-х ячеек​ ​ необходимо объединить в​ sRes & разделитель​
    ​ понял)?​​ sDELIM & rCell.Text​ теперь в качестве​ _ Optional ByVal​ D1:D6;»>=»;20; E1:E6;»=»;»text3″; . )​ макрос.​ нуждается в каких-либо​: т.е. я бы​ макрос операторы >​ например, на символ​F​ нужно сцепить две​ как все данные​ отобразились в окошке,​А3: =sss(A5:A304)​ строку. ‘ Разделитель​ & avData(lr, lc)​Если все на​ ‘собираем текст из​ аргументов можно задавать​
    ​ РазделительСтолбцов As String​ где 1/0 -​На самом деле​ комментариях.​
    ​ сделал так​ и ​, чтобы получилось как​
    ​ вещи, люди берут​ внесены, жмем на​ аналогичным образом поступаем​. нужно помнить,​ — необязательный аргумент.​ End If Next​ том же примере​ ячеек Next rCell​ не одиночные ячейки,​ = «; «)​ исключить/оставить повторы; выполнить/пропустить​
    ​ здорово бы сделать​Не тратьте на​ЦитатаZVI пишет:​ только =, >=,​
    ​ так:​ на рисунке ниже:​ в руки скотч.​ кнопку​
    ​ со вторым полем.​ что есть ограничения​​ ‘ Один или​ lr Next lc​ рассмотреть следующую формулу:​ Application.DisplayAlerts = False​ а целые диапазоны​

    ​ Dim i As​​ сортировку​ ConcatUniq() с сортировкой. ​ это Ваше драгоценное​медленно все это​?​=ПОДСТАВИТЬ(G8;»»»:»»»;»;»)​При помощи функции​ Возможно, Вы сильно​«OK»​ Соответственно выделяем другую​ на длину текста​ несколько символов, которые​ If Len(sRes) Then​=СЦЕП(ЕСЛИ(—ЕОШ(ПОИСК(M1;A2:E2))=0;СТОЛБЕЦ(A:E);»X»))​
    ​ ‘отключаем стандартное предупреждение​ — текст из​ Long, n As​Это было бы​Но я уже​ время.​ будетосмелюсь предположить, что​- подрезать диапазон​В итоге, вставив результат​СЦЕПИТЬ​ удивитесь, но в​

    Сцепить ячейки в несмежном (рваном) диапазоне

    ​.​​ ячейку. Подобную операцию​​ в одной ячейке​
    ​ будут вставлены между​ sRes = Mid(sRes,​Формула массивная и​ о потере текста​ всех ячеек всех​ Long, v() As​ просто пределом мечтаний!​
    ​ стесняюсь просить Вас​PS: Проверил новую версию.​ не значительно. Функция​ строк под UsedRange?​ формулы как значение,​Вы можете связывать​ Excel есть встроенная​Как видим, после этого​ проделываем, пока координаты​tankwar121​ каждым словом. ‘​
    ​ Len(разделитель) + 1)​​ дает результат 1XX45,​ .Merge Across:=False ‘объединяем​ диапазонов будет объединен​ Variant n =​
    ​ZVI​ об этом. ​Время обработки на​ эвалится один раз.​- изменить синтаксис​ получим строку Вася;Петя;Даша;Маша.​ даже числа и​ функция, которая делает​ в целевой ячейке​ всех ячеек, которые​:​ По умолчанию пробел.​ End If If​ где 1,4 и​ ячейки Application.DisplayAlerts =​ в одно целое:​ Диапазон.Columns.Count: v =​: Сделал. Порядок аргументов​ZVI​ том же тестовом​ В дальнейшем вызывается​=Concat(B1:B6;»,»; C1:C6;»=»;3; D1:D6;»>=»;20;​Примечание​ текст. Давайте представим,​ то же самое.​ образовалась объединенная запись,​ нужно объединить, не​Step_UA​ ‘ БезПовторов —​ БезПовторов Then Dim​ 5 это «адреса»​ True .Item(1).Value =​Для массового объединения также​ Диапазон.Value ReDim s(1​ функции:​: Это не ограничение​ файле сократилось до​ с параметрами. Вместо​ E1:E6;»=»;»text3″) до вида​: В формуле для​ что мы используем​ Это функция​ включающая содержимое всех​ будут внесены в​,не работает, даже уменьшая​ необязательный аргумент. ‘​ oDict As Object,​ столбцов, при помощи​ Mid(sMergeStr, 1 +​ удобно использовать новую​ To n) As​1. Диапазон ячеек​ функции, а ограничение​ 0,06/ 0,05/ 0,04​.Language = «JScript»​ =Concat(B1:B6;»,»; C1:C6=3; D1:D6>=20;​ замены двойных кавычек​ Excel для хранения​CONCATENATE​ элементов, но с​ окно аргументов функции.​ количество ячеек​ Если указан как​ sTmpStr Set oDict​ которых через КодИНДЕКС​ Len(sDELIM)) ‘добавляем к​ функцию​ String For i​ (столбец или несколько​ Excel — в​ сек. (Excel 2007/10/13),​можно писать на​ E1:E6=»text3″) ?​ » использовано 2​ записей об инвентаризации​(СЦЕПИТЬ).​ пробелами между каждым​ После этого жмем​Step_UA​ ИСТИНА или 1​ = CreateObject(«Scripting.Dictionary») sTmpStr​ можно подтянуть нужные​ объед.ячейке суммарный текст​ОБЪЕДИНИТЬ (TEXTJOIN)​ = 1 To​ смежных), которые должны​ ячейке не может​ т.к. из 1.048.576​ «родном» vbs.​Спасибо!​ двойные кавычки «».​ магазина. Сейчас у​Функция​ словом.​ на кнопку​: Код в модуль​ — в результирующей​ = Split(sRes, разделитель)​ ячейки и далее​ End With End​, появившуюся начиная с​ n: s(i) =​ попасть в результат​ быть больше 32767​ строк заполнено лишь​ZVI​ZVI​Acid Burn​ нас есть​CONCATENATE​Внимание! Как видим, вышеуказанный​«OK»​ . ​ строке будут значения​ On Error Resume​ аналогично цифрам «1XX45″​ Sub​ Excel 2016. У​ Join(Application.Transpose(Application.Index(v, , i)),​2. Разделитель результата​ символов. Если в​ 10.000.​: По п.1 это​: Не соглашусь, просто​:​25 яблок​(СЦЕПИТЬ) позволяет связать​ способ значительно ускоряет​.​Step_UA​ без дубликатов. ‘​ Next For lr​ через КодСЦЕПИТЬ сложить​Теперь, если выделить несколько​ нее следующий синтаксис:​ РазделительСтрок): Next СцепитьДиапазон​3. Признак уникальности:​ ячейках A1:A10000 значения​Нормально работает (не​ я забыл про​ сделайте «куда правильнее»​Привет, Планетяне!​(apples), но число​ два или более​ процедуру корректного объединения​Как видим, содержимое выбранных​: или процедурой Sub​ Для английской локализации​ = LBound(sTmpStr) To​ в одну ячейку.​ ячеек и запустить​=ОБЪЕДИНИТЬ(Разделитель; Пропускать_ли_пустые_ячейки; Диапазон1; Диапазон2​ = Join(s, РазделительСтолбцов)​ 0/1 = Все/Уникальные​ длиной не более​ пересчитывается и не​ «>» и «​ и выложите здесь​Я думаю, не​ «25» и слово​ куска текста в​ данных в ячейках.​ областей отразилось в​ SSS_() ‘ [a3]​ данный параметр указывается​ UBound(sTmpStr) oDict.Add sTmpStr(lr),​Вот только в​ этот макрос с​ . )​ End FunctionС уважением,​4. Признак сортировки:​ 2-х символов, то​ выдаёт ошибку) на​ По п.2 -​ZVI​ только мне, но​ «apples» хранятся в​

    ​ одной ячейке. Несмотря​​ Но следует учесть,​ одной предварительно указанной​ — результирующая ячейка​ как TRUE и​ sTmpStr(lr) Next lr​ эту же формулу​ помощью сочетания клавиш​где​ Аксима​ 0/1 = НеСортировать/Сортировать​ все сработает (3​ не активных листах​ добавил подрезку диапазонов.​: 1. Не понял​ и многим другим​ разных ячейках. Попробуем​ на длинное имя,​ что данный вариант​ ячейке. Но у​ ‘ [a5] -​ FALSE соответственно. ‘—————————————————————————————​ sRes = «»​ подсунуть КодИНДЕКС у​ Alt+F8 или кнопкой​Разделитель​Здравствуйте. Здорово Спасибо​5. Столбец №1​ символа на ячейку​ с другим UsedRange.​По п.3 -​ вопроса, все условия​ часто требуется сцепить​ связать их в​ она очень проста​ таит в себе​ данного способа имеется​ начальная ячейка [a3]​ Function СцепитьМного(диапазон As​ sTmpStr = oDict.Keys​ меня не получается.​Макросы​- символ, который​ огромное! Правда если​ ячеек, участвующих в​ с учетом одного​ Это просто фантастика!​ оставил из-за дат.​ итак считаются по​ диапазон ячеек в​ одной ячейке, чтобы​ в использовании и​ и «подводные камни».​ существенный недостаток. При​ = Join(WorksheetFunction.Transpose(Range([a5], Cells(Rows.Count,​ Range, Optional разделитель​ For lr =​Даже пробовал через​на вкладке Разработчик​ будет вставлен между​ ячейка пустая разделитель​ условии №1​ символа разделителя, итого​Всем рекомендую к применению!​Полноценные подсказки при​ И. Если в​ одну.​ получилось что-то вроде​ одинаково работает во​ Очень важно, чтобы​ его использовании происходит​ 1).End(xlUp)).Value), » «)​ As String =​ LBound(sTmpStr) To UBound(sTmpStr)​ КодДВССЫЛ, но результата​(Developer — Macros)​ фрагментами​ все равно ставится.Если​6. Оператор условия​ 30000 символов).​Ещё раз СПАСИБО ZVI​ вводе UDF в​ строке найдено первое​Стандартная функция Excel​ этого:​ всех версиях Excel,​ в элементе, который​ так называемая «склейка​ End Sub​ » «, Optional​ sRes = sRes​ так и не​

    ​, то Excel объединит​​Второй аргумент отвечает за​​ это вам не​ ​ №1, может быть​С учетом этого,​ и с Наступающим​
    ​ ячейку не поддерживаются.​ несовпадение условия, то​ крайне неудобна, но​Нам понадобится связать три​ а также в​

    ​ содержит пробел, со​​ без шва». То​tankwar121​ БезПовторов As Boolean​ & IIf(sRes <>​ получил.​ выделенные ячейки в​ то, нужно ли​ нравится, то предлагаю​ одним из: «=»,​ Вы уверены, что​ всех!​При вводе с​ проверка в этой​ можно найти несколько​ элемента:​ других электронных таблицах,​
    ​ временем не появились​ есть, между словами​:​ = False) Dim​ «», разделитель, «»)​Ваше решение абсолютно​ одну, слив туда​

    ​ игнорировать пустые ячейки​​ такой вариант:​ «>», «=», «»​
    ​ правильно поступаете, накапливая​ZVI​ помощью мастера функций​ строке прекращается.​ UDF, отличающихся по:​F17​ например, в Google​ какие-то данные или​

    Как сцепить большое количество ячеек?

    ​ нет пробела и​​Step_UA​ avData, lr As​ & sTmpStr(lr) Next​ верно решает задачу​

    ​ же и текст​​ (ИСТИНА или ЛОЖЬ)​Public Function СцепитьДиапазон2(ByVal​7. Значение условия​ все в одной​: Все же приведу​ можно добавить подсказки,​2. Пустые ячейки​- ресурсоёмкости и​
    ​(Number in stock)​
    ​ Sheets.​ он не был​ они склеены в​, Большущее спасибо! Все​

    ​ Long, lc As​​ lr End If​​, но хотелось​​ через пробелы.​Диапазон 1, 2, 3​

    ​ Диапазон As Range,​​ №1, с которым​ ячейке?​

    ​ код для сравнения​​ но для старых​ в данных пропускаются,​ рабочему диапазону (ActiveSheet​ — количество​Примечание:​ сдвинут.​ единый массив. При​ работает!​

    ​ Long, sRes As​​ СцепитьМного = sRes​​ минимизировать количество формул,​​Logotip​. — диапазоны​

    Источник

    Функция конкатенации в Excel используется для объединения или объединения двух или более чем двух символов, строк или чисел, функция конкатенации заменяет использование оператора & для соединения, поскольку операторы & сделали синтаксис более сложным, в то время как функция конкатенации выглядит более чистой и Легко понять.

    Аргументы, кроме первого, необязательны; поэтому они заключены в квадратные скобки.

    Как объединить ячейки в Excel — ЭКСЕЛЬ ХАК

    Вообще, большинство типовых задач в Excel решается с помощью простых формул, в которых не сложно разобраться. И в этой заметке я попробую привести максимально наглядные примеры по объединению ячеек (рассмотрю два варианта: когда ячейки пустые, и когда в них уже есть данные).

    специалист

    Мнение эксперта

    Витальева Анжела, консультант по работе с офисными программами

    Со всеми вопросами обращайтесь ко мне!

    Задать вопрос эксперту

    Еще больше полезных приемов в работе со списками данных и функциями в Excel вы узнаете в практическом курсе От новичка до мастера Excel. Если же вам нужны дополнительные объяснения, обращайтесь ко мне!

    muncherelli, мне понравился ваш ответ, и я подправил его :). Просто незначительная вещь, бывают случаи, когда я вытаскиваю данные из листа и использую его для запроса к базе данных. Я добавил необязательный параметр «textQualify», который помогает создать разделенный запятыми список, используемый в запросе.

    Преобразование столбца в список, разделенный запятыми

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

    Как объединить ячейки в Excel с помощью контекстного меню

    Выделите диапазон ячеек для сцепки. Нажмите правую клавишу мыши. В контекстном меню выберите пункт «Формат ячеек»:

    Как объединить ячейки в Excel с помощью контекстного меню

    В появившемся окне перейдите на вкладку «Выравнивание» и отметьте галочкой пункт «Объединение ячеек», затем нажмите «ОК»:

    Как объединить ячейки в Эксель с помощью контекстного меню

    При таком способе объединения, Excel по умолчанию оставляет данные только из верхней левой строчки, остальные данные будут удалены. В случае, если в выделенных ячейках находятся данные, то система вас предупредит об удалении всех данных кроме тех, что находятся в верхней левой ячейке.

    Как объединить ячейки в Excel с помощью контекстного меню

    В результате, у нас остался текст «Фамилия», а «Имя» и «Отчество» были удалены:

    Объединить функцию Excel.

    В функции CONCATENATE в Excel мы также можем передать полную формулу CONCATENATE в Excel в качестве аргумента. Например, если мы хотим, чтобы результат двух формул был объединен, мы можем передать формулы в качестве аргумента, чтобы получить требуемый результат.

    специалист

    Мнение эксперта

    Витальева Анжела, консультант по работе с офисными программами

    Со всеми вопросами обращайтесь ко мне!

    Задать вопрос эксперту

    Когда мы поместили пробел в двойные кавычки после запятой после первого аргумента, функция CONCATENATE приняла его как второй аргумент. Если же вам нужны дополнительные объяснения, обращайтесь ко мне!

    Например, если у нас есть список имен и фамилий в столбцах A и B, и мы хотим, чтобы полное имя, которое является первым именем вместе с фамилией в столбце C, мы будем использовать функцию CONCATENATE.
    Как объединить ячейки в Экселе без потери текста

    Как объединить ячейки в Excel (простые способы)

    • «Объединить и поместить в центре» — система объединит ячейки и отформатирует текст по центру;
    • «Объединить по строкам» — эта настройка позволит в каждой строке произвести сцепку ячеек.
    • «Объединить ячейки» — система произведет сцепку выделенного диапазона без централизации и т.д.
    • «Отменить объединение ячеек» — отменить сцепку ячеек.

    Таким образом, вы можете видеть, когда мы передаем аргумент, отличный от ссылочного значения, и мы всегда должны заключать его в двойные кавычки, потому что MS-Excel и другие офисные пакеты написаны на C ++, а в C ++ строковые литералы всегда берутся в двойных кавычках.

    Если в ячейках есть данные (которые также нужно объединить)

    Важная ремарка : при объединении ячеек мы будем не суммировать их содержимое, а «склеивать» (сцеплять) между собой. Т.е. если у вас в одной ячейке приводится имя, а в другой фамилия — после объединения будет одна строка с именем и фамилией; если в одной ячейке цифра «5», а в другой «3» — после объединения будет «53» (а не как при сумме: «8») .

    Способ 1

    В качестве примера взял список ФИО нескольких вымышленных персонажей. Задача, кстати, вполне приближена к жизни (приходилось с этим сталкиваться).

    Исходные данные

    Сначала необходимо выбрать одну из ячеек напротив первой строки (я взял E1) и написать в строке формул следующее выражение:

    После того, как нажмете Enter, формула сцепит все перечисленные ячейки в ней. В моем случае получилось ФИО, но без пробелов (что ни есть удобно).

    Ячейки сцеплены

    Для того, чтобы исправить это, просто измените частично формулу (добавьте кавычки с пробелом, как в моем примере) :

    Если вам нужны пробелы (или другие символы) между объединенными данными — корректируем формулу

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

    После, останется только растянуть формулу на другие строки, и задача будет решенной.

    Как перенести склеенные данные в другой документ (чтобы они не зависели от формул)

    Наши сцепленные строки в этом документе зависят от формул, и если слегка их изменить — то все «разъедется». В ряде случае гораздо удобнее работать не с ними, а с текстовыми строками. Попробуем перенести наши результаты в другой документ (или новый лист).

    И так, сначала необходимо выделить наши сцепленные ячейки (в моем примере это столбец «E»), нажать правой кнопкой мышки по ним и выбрать функцию «Копировать» .

    Копировать

    Далее открыть новый документ (или лист) кликнуть правой кнопкой мышки по нужной ячейке и нажать по меню «Специальная вставка» . См. пример ниже.

    Спец. вставка

    В появившемся окне настроек укажите, что вам требуется вставить только «Значения» (а не сами формулы) и нажмите OK.

    Значения

    Как видите на скрине ниже, в документ были вставлены текстовые значения из ранее сцепленных ячеек (а не сами формулы).

    Способ 2

    Объединять ячейки в Excel можно и без спец. формул, достаточно использовать знак «&».

    Разумеется, чтобы добавить пробелы между объединенными значениями, нужно слегка изменить формулу:

    Если вместо пробелов вам нужны дефисы, формула несколько преобразится:

    Как будет выглядеть формула, если вместо пробелов вставим дефисы

    Когда «настройка» формулы будет завершена — просто потяните мышкой за уголок и растяните ее на другие строки (столбцы). После, Excel применит ее к другим ячейкам (пример ниже).

    Что касается переноса полученных результатов в другой документ, то это делается аналогично вышесказанному.

    специалист

    Мнение эксперта

    Витальева Анжела, консультант по работе с офисными программами

    Со всеми вопросами обращайтесь ко мне!

    Задать вопрос эксперту

    Но на практике имеет смысл передавать в формулу минимум два аргумента, иначе на выходе мы получим то же самое, что и передали на входе, а это не имеет смысла. Если же вам нужны дополнительные объяснения, обращайтесь ко мне!

    Рассмотрим как сцепить текст в Excel на простейшем примере. Допустим, в ячейке А1 у нас есть текст «Иванов», в ячейке А2 находится текст «Иван», а в ячейке А3 записан текст «Иванович». Получим ФИО склейкой (сцеплением) содержимого всех трёх ячеек. Формула будет выглядеть так:

    Функция СЦЕПИТЬ в Excel | MS Office | Учебные статьи

    Для этих упражнений, я рекомендую использовать документы Excel, которые я создал специально для этого урока. Если вы пропустили это раньше, то обязательно скачайте бесплатно прилагающиеся к этому уроку, Книгу Excel, с которой вы сможете работать и следить за действиями по ходу урока.

    Понравилась статья? Поделить с друзьями:

    А вот еще интересные статьи:

  • Excel сцепить диапазон ячеек с разделителем
  • Excel сцепить диапазон ячеек по условию
  • Excel сцепить двойные кавычки
  • Excel сцепить дата преобразуется в число
  • Excel сцепить данные по условию

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии