Excel не сцеплять если пусто

 

Timur

Пользователь

Сообщений: 108
Регистрация: 26.12.2012

Здравствуйте, гуру эксель!
Бьюсь над такой задачей. Нужно сцепить ячейки между столбцами М и Т по хитрому условию, если они все заполнены тогда вопросов нет, сцепляю по обычному. Но ячейки в них могут быть как заполнены так и нет.  И нужно эту пустоту как бы смещать! Ну в файле я вроде все понятно сделал.  

 

JayBhagavan

Пользователь

Сообщений: 11833
Регистрация: 17.01.2014

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

#2

27.11.2014 13:35:47

Пробел — это не пустота. Замените в формулах » » на «». Тогда сработает лобовая атака:

Код
=ЕСЛИ(ДЛСТР(M2);M2&"-";"")&ЕСЛИ(ДЛСТР(N2);N2&"-";"")&ЕСЛИ(ДЛСТР(O2);O2&"-";"")&ЕСЛИ(ДЛСТР(P2);P2&"-";"")&ЕСЛИ(ДЛСТР(Q2);Q2&"-";"")&ЕСЛИ(ДЛСТР(R2);R2&"-";"")&ЕСЛИ(ДЛСТР(S2);S2&"-";"")&ЕСЛИ(ДЛСТР(T2);T2&"-";"")

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

Timur

Пользователь

Сообщений: 108
Регистрация: 26.12.2012

#3

27.11.2014 13:57:50

JayBhagavan, спасибо, только вот последний символ остается по вашей формуле «-«, ну я его в соседней ячейке Y удаляю так :

Код
=ЛЕВСИМВ(X2;ДЛСТР(X2)-1)
 

а потом в следующей опять сцепляю и вроде получается тоже самое

 

V

Пользователь

Сообщений: 5018
Регистрация: 22.12.2012

#4

27.11.2014 13:58:28

для U2

Код
=ПОДСТАВИТЬ(СЖПРОБЕЛЫ(СЦЕПИТЬ(M2;" ";N2;" ";O2;" ";P2;" ";Q2;" ";R2;" ";S2;" ";T2));" ";"-") 
 

Timur

Пользователь

Сообщений: 108
Регистрация: 26.12.2012

V, спасибо, элегантно так…

 

Ivan.kh

Пользователь

Сообщений: 2024
Регистрация: 04.03.2013

#6

27.11.2014 14:04:36

UDF:

Код
Function Коробка(Стороны As Range, Да_Нет As Range) As String
i = 1
    For Each cell In Да_Нет
        If cell = "Да" Then
           Коробка = Коробка & "-" & Mid(Стороны(1, i), 9, 1)
        End If
        i = i + 1
    Next cell
End Function

а потом =»КР-В-150″&Коробка($B$1:$I$1;B2:I2).
если «КР-В-150» не меняется, то в конце UDF добавить строку Коробка =»КР-В-150″&Коробка

Изменено: Ivan.kh27.11.2014 14:04:56

 

Timur

Пользователь

Сообщений: 108
Регистрация: 26.12.2012

Ivan.kh, великолепное решение!!! Спасибо

 

JayBhagavan

Пользователь

Сообщений: 11833
Регистрация: 17.01.2014

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

#8

27.11.2014 14:40:52

Цитата
Timur пишет: последний символ остается по вашей формуле «-«

Каково условие — таков результат. :)

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

Skanavy4

Пользователь

Сообщений: 2
Регистрация: 22.01.2018

Добрый день, друзья. Помогите добрым советом. Как поместить данные из столбца А в соответствующий столбец B между скобками? При этом ячейки столбца B оставлять пустыми, если соответствующая ячейка столба A пуста.

Прикрепленные файлы

  • Книга1.xls (28.5 КБ)

 

Skanavy4, создать новую тему. См. правила форума.
А вообще, так: =ЕСЛИ(B2<>»»;»Металлы(«&B2&»)»;»»)

 

Maximich

Пользователь

Сообщений: 499
Регистрация: 28.08.2016

=ЕСЛИ(B2<>»»;СЦЕП(«Металлы[«;B2;»]»);»»)

Кто ясно мыслит, тот ясно излагает.

 

Skanavy4

Пользователь

Сообщений: 2
Регистрация: 22.01.2018

Большое спасибо! Не знаю как Вы это делаете, но все работает. Если можно объяснить простыми словами, то мне очень интересно узнать, какая логическая последовательность в таком наборе символов? =ЕСЛИ(B2<>»»;»Металлы(«&B2&»)»;»»)

 

narod svs

Пользователь

Сообщений: 150
Регистрация: 01.01.1970

#13

08.08.2020 09:32:29

Добрый день
Адрес ячейки из которой вызвана функция Application.Caller.Address.
Подскажите как определиьть адрес ячейки параметра функции?
Как узнать адесс ячеки surf_prep?

Код
Function Наименование(surf_prep As Variant) As String
 

БМВ

Модератор

Сообщений: 21376
Регистрация: 28.12.2016

Excel 2013, 2016

#14

08.08.2020 09:49:37

Цитата
narod svs написал:
Как узнать адесс ячеки surf_prep?

1. А если там значение, а не диапазон? 2.  А если присмотреться то название темы совершенно о другом.

По вопросам из тем форума, личку не читаю.

 

narod svs

Пользователь

Сообщений: 150
Регистрация: 01.01.1970

#15

08.08.2020 10:16:38

Цитата
БМВ написал:
1. А если там значение, а не диапазон? 2.  А если присмотреться то название темы совершенно о другом.

Ну можно добавить проверку там должен быть указан толко адрес ячейки
Да, может не в тему))

 

narod svs

Пользователь

Сообщений: 150
Регистрация: 01.01.1970

#16

08.08.2020 11:06:51

Цитата
narod svs написал:
Подскажите как определиьть адрес ячейки параметра функции?

Сам нашел
Вдруг кому пригодится
адрес ячейки параметра функции
номр строки
номер стобца

Код
Function Наименование(surf_prep As Variant) As String
'--------
MsgBox surf_prep.Address(RowAbsolute:=False, ColumnAbsolute:=False)
MsgBox surf_prep.Row
MsgBox surf_prep.Column
'--------
End Function

Изменено: narod svs08.08.2020 11:19:27

Содержание

  1. Склеивание текста по условию
  2. Способ 0. Формулой
  3. Способ 1. Макрофункция склейки по одному условию
  4. Способ 2. Сцепить текст по неточному условию
  5. Способ 3. Макрофункция склейки текста по двум условиям
  6. Способ 4. Группировка и склейка в Power Query
  7. Как сцепить несколько значений в одну ячейку по критерию? СцепитьЕсли

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

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

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

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

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

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

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

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

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

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

Если теперь вернуться в 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. Макрофункция склейки текста по двум условиям

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

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

Способ 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) :

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

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

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

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

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

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

Источник

Как сцепить несколько значений в одну ячейку по критерию? СцепитьЕсли

Все чаще вижу на разных форумах вопросы типа: Есть таблица, в одном столбце фамилии, в другом оценки(виды работ и т.д.) . Как сцепить в одной ячейке для каждой фамилии только принадлежащие ей оценки? Или собрать в одну ячейку через запятую фамилии всех сотрудников одного отдела, но все сотрудники идут вразнобой. Т.е. из такой таблицы:

Получить такую:

Стандартными функциями это сделать весьма проблематично, т.к. заранее неизвестно сколько будет этих оценок и фамилий. . MIcrosoft работает над усовершенствованием Excel и теперь стало возможным сделать это и стандартными функциями. Правда, с небольшими ограничениями: сделать это могут только пользователи Excel 2019 и выше или Office 365 по подписке . В итоге счастливые обладатели новейших версий могут использовать достаточно несложные формулы:
=ОБЪЕДИНИТЬ(«; «;1;ФИЛЬТР( B2:B20 ; A2:A20 = A2 ;»»))
=TEXTJOIN(«; «,1,FILTER(B2:B20,A2:A20=A2,»»))
Аргументы функции:

  • («; «) — символ(или несколько символов), которым необходимо объединять найденные значения
  • ( A2:A20 ) — диапазон, в котором искать критерий
  • ( A2 ) — критерий. Значение, на основании которого необходимо сцеплять значения. Значение просматривается в диапазоне значений( A2:A20 )
  • ( B2:B20 ) — из этого диапазона берется значение для сцепления, если значение напротив в диапазонe( A2:A20 ) совпадает с искомым значением A2

Для любителей «старой школы» можно вместо функции ФИЛЬТР (FILTER) использовать стандартную ЕСЛИ (IF) :
=ОБЪЕДИНИТЬ(«; «;1;ЕСЛИ( A2:A20 = A2 ; B2:B20 ;»»))
=TEXTJOIN(«; «,1,IF(A2:A20=A2,B2:B20,»»))
так же это можно использовать в Excel 2019 в случае, если функция ФИЛЬТР отсутствует — да, может быть и такое, хоть Microsoft и пишет, что она там поддерживается
Аргументы точно такие же, как в формуле выше. Правда эта формула вводится в ячейку как формула массива(т.е. одновременным нажатием трех клавиш Ctrl + Shift + Enter ).
Хотя в самых новых версия(а-ля 365) вводить тремя клавишами уже не обязательно — Excel сам поймет, что требуется обработка массива ячеек.

А для пользователей Excel 2016 и ниже я написал небольшую функцию пользователя на VBA, которая решает данную проблему. Так же подобную функцию называют «многоразовый ВПР«, потому что она по критерию возвращает ВСЕ значения для этого критерия, а не только первое.

‘————————————————————————————— ‘ Author : The_Prist(Щербаков Дмитрий) ‘ Профессиональная разработка приложений для MS Office любой сложности ‘ Проведение тренингов по MS Excel ‘ http://www.excel-vba.ru ‘ Purpose: ‘————————————————————————————— Function СцепитьЕсли(ByRef Диапазон As Range, ByVal Критерий As String, ByRef Диапазон_сцепления As Range, Optional Разделитель As String = » «, Optional БезПовторов As Boolean = False) As String Dim li As Long, sStr As String, avItem, avDateArr(), avRezArr(), lUBnd As Long If Диапазон.Count > 1 Then avDateArr = Intersect(Диапазон, Диапазон.Parent.UsedRange).Value avRezArr = Intersect(Диапазон_сцепления, Диапазон_сцепления.Parent.UsedRange).Value If Диапазон.Rows.Count = 1 Then avDateArr = Application.Transpose(avDateArr) avRezArr = Application.Transpose(avRezArr) End If Else ReDim avDateArr(1, 1): ReDim avRezArr(1, 1) avDateArr(1, 1) = Диапазон.Value avRezArr(1, 1) = Диапазон_сцепления.Value End If lUBnd = UBound(avDateArr, 1) ‘Определяем вхождение операторов сравнения в Критерий Dim objRegExp As Object, objMatches As Object Set objRegExp = CreateObject(«VBScript.RegExp») objRegExp.Global = False: objRegExp.Pattern = «=|<>|=>|>=| | 0 Then Dim sStrMatch As String sStrMatch = objMatches.Item(0) Критерий = Replace(Replace(Критерий, sStrMatch, «», 1, 1), Chr(34), «», 1, 2) If IsNumeric(Критерий) And Критерий <> «» Then Критерий = CDbl(Критерий) End If Select Case sStrMatch Case «=» For li = 1 To lUBnd If avDateArr(li, 1) = Критерий Then If Trim(avRezArr(li, 1)) <> «» Then _ sStr = sStr & IIf(sStr <> «», Разделитель, «») & avRezArr(li, 1) End If Next li Case «<>» For li = 1 To lUBnd If avDateArr(li, 1) <> Критерий Then If Trim(avRezArr(li, 1)) <> «» Then _ sStr = sStr & IIf(sStr <> «», Разделитель, «») & avRezArr(li, 1) End If Next li Case «>=», «=>» For li = 1 To lUBnd If avDateArr(li, 1) >= Критерий Then If Trim(avRezArr(li, 1)) <> «» Then _ sStr = sStr & IIf(sStr <> «», Разделитель, «») & avRezArr(li, 1) End If Next li Case » «» Then _ sStr = sStr & IIf(sStr <> «», Разделитель, «») & avRezArr(li, 1) End If Next li Case «>» For li = 1 To lUBnd If avDateArr(li, 1) > Критерий Then If Trim(avRezArr(li, 1)) <> «» Then _ sStr = sStr & IIf(sStr <> «», Разделитель, «») & avRezArr(li, 1) End If Next li Case » «» Then _ sStr = sStr & IIf(sStr <> «», Разделитель, «») & avRezArr(li, 1) End If Next li End Select Else ‘Если нет вхождения For li = 1 To lUBnd If avDateArr(li, 1) Like Критерий Then If Trim(avRezArr(li, 1)) <> «» Then _ sStr = sStr & IIf(sStr <> «», Разделитель, «») & avRezArr(li, 1) End If Next li End If If БезПовторов Then Dim oDict As Object, sTmpStr Set oDict = CreateObject(«Scripting.Dictionary») sTmpStr = Split(sStr, Разделитель) On Error Resume Next For li = LBound(sTmpStr) To UBound(sTmpStr) oDict.Add sTmpStr(li), sTmpStr(li) Next li sStr = «» sTmpStr = oDict.keys For li = LBound(sTmpStr) To UBound(sTmpStr) sStr = sStr & IIf(sStr <> «», Разделитель, «») & sTmpStr(li) Next li End If СцепитьЕсли = sStr End Function

Чтобы правильно использовать приведенный код, необходимо сначала ознакомиться со статьей Что такое функция пользователя(UDF)?. Вкратце: скопировать текст кода выше, перейти в редактор VBA( Alt + F11 ) -создать стандартный модуль(InsertModule) и в него вставить скопированный текст. После чего функцию СцепитьЕсли можно будет вызвать из Диспетчера функций( Shift + F3 ), отыскав её в категории Определенные пользователем (User Defined Functions) .
Синтаксис записи в ячейку листа:
=СцепитьЕсли( A2:A20 ; A2 ; B2:B20 ;»-«;0)

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

Диапазон ( A2:A20 ) — диапазон, в котором искать критерий(указывается один столбец)

Критерий ( A2 ) — критерий. Значение, на основании которого необходимо сцеплять значения. Может содержать символы подстановки — * и ? и символы сравнения ( <>«», 0, «<>«&A1 и т.п.). Просматривается Диапазон. При совпадении значения ячейки в Диапазоне значение из Диапазона_Сцепления добавляется к результату с выбранным разделителем.

Диапазон_сцепления ( B2:B20 ) — из этого диапазона берется значение для сцепления, если значение в аргументе Диапазон совпадает с аргументом Критерий(указывается один столбец). Если в Диапазоне значение 5-ой строки совпадает с критерием, то из Диапазона_Сцепления будет взято так же значение из 5-ой строк этого диапазона и сцеплено с результатом.

Разделитель («-«) — По умолчанию пробел, но можно задать любой другой символ или группу символов.

БезПовторов — если указать 1 или ИСТИНА, то в результате получится строка, в которой нет одинаковых значений. Если указать 0 или ЛОЖЬ, то будут выведены все значения. По умолчанию значение ЛОЖЬ.

Примечание: для работы функции должны быть разрешены макросы

Пример СцепитьЕсли.xls (68,0 KiB, 15 540 скачиваний)

Статья помогла? Поделись ссылкой с друзьями!

Источник

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

Объединенные ячейки игнорируют или пропускают пробелы с формулой

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

Объединить ячейки, игнорируя или пропуская пробелы с помощью Kutools for Excel


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

док объединить пропустить пробелы 1

Введите эту формулу в пустую ячейку, в которую вы хотите поместить объединенный результат, =A1&IF(A2<>»»,»-«&A2,»»)&IF(A3<>»»,»-«&A3,»»)&IF(A4<>»»,»-«&A4,»»)&IF(A5<>»»,»-«&A5,»»), затем перетащите маркер заполнения прямо к ячейкам, к которым вы хотите применить эту формулу, и значения строк были объединены без пустых ячеек, как показано на следующем снимке экрана:

док объединить пропустить пробелы 2

Tips: Если необходимо объединить больше строк, вы должны использовать функцию ЕСЛИ для объединения ячеек, например =A1&IF(A2<>»»,»-«&A2,»»)&IF(A3<>»»,»-«&A3,»»)&IF(A4<>»»,»-«&A4,»»)&IF(A5<>»»,»-«&A5,»»)&IF(A6<>»»,»-«&A6,»»), «« Символ в формуле можно заменить любыми другими разделителями, которые вам нужны.


Объединение нескольких ячеек игнорирует или пропускает пробелы:

Kutools for Excel‘s Сочетать Строки, столбцы или ячейки без потери данных Функция может помочь вам объединить или объединить несколько строк, столбцов или ячеек без потери данных, но пропустить или игнорировать пустые ячейки. Нажмите, чтобы скачать Kutools for Excel!

док объединить пропустить пробелы 7


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

1. Удерживайте Alt + F11 ключи в Excel, и он открывает Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модули, и вставьте следующий макрос в Модули Окно.

Код VBA: объединенные ячейки игнорируют пробелы:

Function Concatenatecells(ConcatArea As Range) As String
'updateby Extendoffice
  For Each n In ConcatArea: nn = IIf(n = "", nn & "", nn & n & "/"): Next
  Concatenatecells = Left(nn, Len(nn) - 1)
End Function

3. Сохраните и закройте это окно кода, вернитесь на рабочий лист и введите следующую формулу: = concatenatecells (A1: A5) в пустую ячейку и перетащите маркер заполнения прямо в ячейки, чтобы применить эту формулу, и вы получите следующий результат:

док объединить пропустить пробелы 3

Tips: В приведенном выше коде VBA вы можете изменить «/»На любые другие необходимые вам разделители.


Помимо скучной формулы и кода, здесь я могу порекомендовать удобный инструмент —Kutools for Excel, с его мощным Сочетать Утилита, вы можете объединить несколько ячеек в одну без каких-либо усилий.

После установки Kutools for Excel, пожалуйста, сделайте следующее:

1. Выберите значение ячеек, которое вы хотите объединить.

2. Нажмите Кутулс > Слияние и разделениеКомбинируйте строки, столбцы или ячейки без потери данных, см. снимок экрана:

3. В появившемся диалоговом окне:

  • (1.) Выберите тип ячеек, которые вы хотите объединить, вы можете объединить столбцы, объединить строки и объединить все ячейки в одну ячейку;
  • (2.) Укажите разделитель для объединенного содержимого;
  • (3.) Выберите место для размещения результата, вы можете поместить результат в верхнюю или нижнюю ячейку;
  • (4.) Укажите, как работать с объединенными ячейками, вы можете сохранить или удалить содержимое из этих объединенных ячеек, а также можете объединить эти объединенные ячейки.

док объединить пропустить пробелы 5

4. После завершения настройки нажмите Ok Кнопка, и выбранные строки были объединены в одну ячейку отдельно, и она автоматически пропустила пробелы, см. снимок экрана:

док объединить пропустить пробелы 6

Скачать и бесплатную пробную версию Kutools for Excel Сейчас !



Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

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

Автор 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

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

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

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, спасибо!

 

Ответить

Like this post? Please share to your friends:
  • Excel не суммирует ячейки с формулами
  • Excel не сортирует одно даты
  • Excel не суммирует ячейки с разных листов
  • Excel не сортирует объединенные ячейки
  • Excel не суммирует ячейки а суммирует количество ячеек