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

Другое дело, если мы в Excel  экспортируем (или открываем)  уже созданные кем – то готовые таблицы. Часто необходимо привести их к виду, который нам необходим. И вот тут возникают проблемы – при  объединении ячеек часть информации в некоторых удаляется. На простом примере покажу, как создать кнопки в  документе и привязать к ним  нужный программный код для своих нужд.

Как объединить ячейки в excel в таблице ?

Для начала вспомним суть проблемы. Стандартный способ объединения ячеек делаем  через “формат ячеек” выделив нужные ячейки и вызвав правой кнопкой контекстное меню. Еще проще и быстрее найти в главном меню нужную кнопку:

С пустыми ячейками проблем нет. А если в нужных ячейках уже содержится информация, возникает всем известная проблема. Как быть, если объединять приходится  не две ячейки а больше?  Да еще и сохранить все раннее введенные данные ? Об этом  и  поговорим.

Как в excel объединить две ячейки в одну  без потери данных и значений через пробел?

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

Поэтому остается использовать лишь один способ –  немножко заняться программированием. Что такое макросы, и как  быстро настроить Excel для работы с ними я уже рассказывал. А сейчас открываем режим “разработчик” и в документ наш вставляем кнопку:

Местоположение  будущей кнопки выбираем в любом удобном месте документа. Курсор примет вид крестика; нажимаем левую кнопку мыши и рисуем границы:

Появится окошко макроса Пока нажимаем на кнопку “Создать”. Откроется редактор VBA; удаляем из окна весь текст и копируем туда вместо него текст следующей процедуры:

Sub MergeToOneCell()
Const sDELIM As String = ” ” ‘
Dim rCell As Range
Dim sMergeStr As String
If TypeName(Selection) <> “Range” Then Exit Sub ‘
With Selection
For Each rCell In .Cells
sMergeStr = sMergeStr & sDELIM & rCell.Text ‘
Next rCell
Application.DisplayAlerts = False ‘
.Merge Across:=False ‘
Application.DisplayAlerts = True
.Item(1).Value = Mid(sMergeStr, 1 + Len(sDELIM)) ‘
End With
End Sub

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

В окне редактора код выглядит следующим образом:

Нажимаем значок “сохранить”, если нигде нет красных строк во вставленном коде  – закрываем редактор. Теперь нужно привязать созданную процедуру  к нашей нарисованной кнопке. Для этого правой кнопкой мыши  вызываем нужный пункт:

Здесь видим название нашей процедуры – выбираем его. А так же обозначим местонахождение макроса – только в данном документе.

В новых версиях Office при попытке сохранить документ будет выведено сообщение о том, что  сначала его нужно сохранять в формате “Документ Excel с поддержкой макросов”. Только после этих действий кнопка начнет работать.

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

Проверяем работу кнопки – сначала выделяем нужные ячейки и затем жмем кнопку. Заработало? Ура!!

 Объединяем две текстовые ячейки в excel в одну через перенос строки

Следующий вариант кода поможет, если нужно объединить ячейки через символ переноса (delim = vbLf). Это значит что в ячейке строки будут располагаться друг  под другом. В принципе, можно отредактировать вторую строку предыдущего варианта, но у меня сегодня будет две кнопки. Этот код делает то же самое, но  имеет чуть другой синтаксис:

Sub MergeAllData()
Dim delim As String, newdata As String
Dim rng As Range
If TypeName(Selection) <> “Range” Or Selection.Count <= 1 Then Exit Sub
delim = vbLf
newdata = “”
For Each rng In Selection
newdata = newdata & rng.Value & delim
Next rng
Application.DisplayAlerts = False
Selection.Merge
Selection = Left(newdata, Len(newdata) – Len(delim))
Application.DisplayAlerts = True
End Sub

И соответственно, будет у нас две процедуры,  которые одна под другой.  В списке макросов они буду располагаться в алфавитном порядке; запомните имя процедуры (Sub)

Сохраняем изменения в редакторе. Создаем вторую кнопку и присваиваем ей снова макрос, только выбираем новую процедуру, переименовываем кнопку. Закрепляем области таблицы; начинаем работать с нужными ячейками:

Вот так работает сегодняшний пример. Возможности VBA языка обширны и с его помощью для Excel можно сильно расширить возможности работы, под себя. Удачи в изучении эксель! Пока!

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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.