Макрос который объединить строки в excel

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

Автоматическое объединение большого количества ячеек по вертикали

Допустим мы имеем маркетинговый план внедрения нового информационного программного продукта:

маркетинговый план.

Чтобы план было легче визуально анализировать лучше объединить ячейки этапов выполнения плана: A2:A4, B2:B4 и т.д. К сожалению, многократно объединять диапазоны с большим количеством строк вручную – это задание требует слишком много времени и сил. Кроме того, можно допустить много ошибок после очередного десятка выделения ячеек перед объединением. Рассмотрим каким способом можно существенно облегчить свой труд переложив большую часть работы на простую программу, написанную на языке VBA прямо в Excel. Для этого следует написать макрос, который безошибочно быстро и автоматически объединит ячейки диапазонов с разным количеством строк для каждого столбца.

  1. Сначала откройте редактор макросов: «РАЗРАБОТЧИК»-«Код»-«Visual Basic» (или просто нажмите ALT+F11).
  2. Visual Basic.

  3. Откройте стандартный модуль выбрав инструмент в редакторе: «Insert»-«Module» и введите в него следующий код макроса для объединения ячеек:

Sub ObedenitVertikal()
Dim i As Long
Dim j As Long
Dim intext As String
Application.DisplayAlerts = False
For i = 1 To Selection.Columns.Count
  intext = Selection.Cells(1, i)
  For j = 2 To Selection.Rows.Count
    intext = intext & Chr(10) & Selection.Cells(j, i)
  Next
  Selection.Columns(i).Merge
  Selection.Cells(1, i) = intext
Next
Application.DisplayAlerts = True
End Sub

Module.

Пока что это еще не полная версия макроса поэтому перед тем как его проверить нам все еще вручную необходимо выделить первый диапазон A2:D4. После чего можно выполнить нашу первую версию макроса.



Запуск макроса для объединения ячеек

Выбираем инструмент: «РАЗРАБОТЧИК»-«Код»-«Макросы».

РАЗРАБОТЧИК.

В появившемся диалоговом окне выделяем значение «ObedenitVertikal» и нажимаем на кнопку «Выполнить».

Выполнить.

Потом снова вручную выделите новый диапазон A5:D9 и повторно выполните тот же макрос. Ячейки будут выделены как показано ниже на рисунке:

Пример.

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

Символ обрыва строки вставлен с помощью функции Chr(10). Каждый вводимый символ из клавиатуры имеет свой код ASCII. Если введем код 10 в качестве аргумента для функции Chr(), тогда она будет возвращать символ обрыва строки. Такой же код ASCII на клавиатуре вызывается клавишей Enter для обрыва строки во всех текстовых редакторах.

Потом остальной код макроса объединяет все ячейки столбцов в выделенном диапазоне, а потом заполняет их текстом из текстовой переменной. Чтобы не появлялось предупреждающее сообщение об объединении ячеек, в начале кода программы макроса отключаем отображение сообщений в Excel средствами программирования. Для этой цели используем свойство: Application.DisplayAlerts = Fale. После выполнения кода макроса изменяем значение свойства на True, чтобы в дальнейшем процессе работы с программой Excel все сообщения предупреждений (Alerts) имели возможность отображаться.

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

Модернизация и настройка кода макроса для объединения ячеек

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

intext = intext & Chr(10) & “——” & Chr(10) & Selection.Cells(j, i)

разбиение на строки.

Если в объединенной ячейке мы хотим всегда вставлять только текст из первой ячейки в выделенном столбце (без текстов, записанных в остальных ячейках), тогда удалим или закомментируем переменную второго счетчика и часть кода второго цикла:

закомментируем.

Если нам нужно чтобы выполнять макрос после выделения нескольких диапазонов (с удержанием клавиши CTRL), тогда можно добавить еще одну переменную, которая будет дополнять функцию счетчика:

Dim k As Long

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

For k = 1 To Selection.Areas.Count

А после последнего цикла добавим строку конца нового цикла:

Next

Соответственно добавим новый отступ, чтобы код был более читабельным. Кроме того, после всех изменений для объекта Selection добавим ссылку на диапазон:

Selection.Areas(k)

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

Sub ObedenitVertikal()
Dim i As Long
Dim j As Long
Dim k As Long
Dim intext As String
Application.DisplayAlerts = False
For k = 1 To Selection.Areas.Count
  For i = 1 To Selection.Areas(k).Columns.Count
    intext = Selection.Areas(k).Cells(1, i)
    For j = 2 To Selection.Areas(k).Rows.Count
     intext = intext & Chr(10) & Selection.Areas(k).Cells(j, i)
    Next
    Selection.Areas(k).Columns(i).Merge
    Selection.Areas(k).Cells(1, i) = intext
  Next
Next
Application.DisplayAlerts = True
End Sub

Тепер выделяем 2 диапазона подряд A2:D4, A5:D8, A с нажатой клавишей CTRL на клавиатуре:

2 диапазона подряд.

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

Пример2.

Читайте также:

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

Как объединить столбцы в Excel используя макрос.

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

1508 / 478 / 56

Регистрация: 10.04.2009

Сообщений: 8,008

1

Эксель-объединить строки

27.09.2018, 13:22. Показов 1543. Ответов 18


Студворк — интернет-сервис помощи студентам

здравствуйте, подскажите как в экселе программно
ячейки C-AM 4 объединить с нижеследующими, то есть указав +1, или +2
то есть с 5 или с 5,6, спасибо



0



Остап Бонд

Заблокирован

27.09.2018, 13:58

2

Ципихович Эндрю, очень трудно угадывать направление ваших мыслей, но пробую в очередной раз

Visual Basic
1
[c4:am4].Resize(2).MergeCells = True'увеличиваем строку до двух строк и объединяем.



0



Ципихович Эндрю

1508 / 478 / 56

Регистрация: 10.04.2009

Сообщений: 8,008

27.09.2018, 14:09

 [ТС]

3

спс, я то в экселе плаваю..
то есть текст макроса в нужный лист помещать?
поместил в Лист1:

Visual Basic
1
2
3
4
5
Option Explicit
Private Sub MergeCells()
'увеличиваем строку до двух строк и объединяем
    [c4:am4].Resize(2).MergeCells = True
End Sub

получил:
выделенная область содержит несколько значений данных
объединение ячеек приведёт к потере всех значений
кроме верхнего левого
как от этого избавиться?



0



Остап Бонд

Заблокирован

27.09.2018, 14:15

4

Цитата
Сообщение от Ципихович Эндрю
Посмотреть сообщение

объединение ячеек приведёт к потере всех значений
кроме верхнего левого
как от этого избавиться?

Никак!



0



Ципихович Эндрю

1508 / 478 / 56

Регистрация: 10.04.2009

Сообщений: 8,008

27.09.2018, 14:40

 [ТС]

5

может что типа, сначала в переменную заносим данные с нужных ячеек, очищаем их, объединяем, затем в объединенную ячейку вводим данные с переменной?

Visual Basic
1
2
3
4
5
6
7
8
9
10
Option Explicit
Private Sub MergeCells()
    Dim MergeCells As String
    MergeCells = [c4:am4].Range & vbCrLf & [c5:am5].Range
    [c4:am4].Range = ""
    [c5:am5].Range = ""
    'увеличиваем строку до двух строк и объединяем
    [c4:am4].Resize(2).MergeCells = True
 
End Sub

естественно код не взлетает-как поправить? спс



0



2632 / 1637 / 745

Регистрация: 23.03.2015

Сообщений: 5,143

27.09.2018, 15:16

6

Цитата
Сообщение от Ципихович Эндрю
Посмотреть сообщение

может что типа, сначала в переменную заносим данные с нужных ячеек

Совершенно верно



0



1508 / 478 / 56

Регистрация: 10.04.2009

Сообщений: 8,008

27.09.2018, 15:17

 [ТС]

7

так не владею экселем, подправьте пжл код



0



Narimanych

2632 / 1637 / 745

Регистрация: 23.03.2015

Сообщений: 5,143

27.09.2018, 15:31

8

Ципихович Эндрю,

Visual Basic
1
2
3
For Each Cell In Range("C4:AM4")
M = M & Cell.Value
Next

В переменную М записываются значения всех ячеек данного диапазон…



1



1508 / 478 / 56

Регистрация: 10.04.2009

Сообщений: 8,008

27.09.2018, 15:52

 [ТС]

9

Вы не поняли, данные с «C4:AM4» брать не стоит, так как она уже объединена, нужно её и данные с них объединять с «c5:am5», как?, лучше файл приложу

Вложения

Тип файла: xls f3.xls (94.0 Кб, 3 просмотров)



0



Narimanych

2632 / 1637 / 745

Регистрация: 23.03.2015

Сообщений: 5,143

27.09.2018, 17:02

10

Ципихович Эндрю,

Попробуйте

Visual Basic
1
2
3
4
5
Sub FORCE()
M = [C4].Value & " " & [c5].Value
Range("C4:C5").Merge
[C4].Value = M
End Sub



1



1508 / 478 / 56

Регистрация: 10.04.2009

Сообщений: 8,008

27.09.2018, 18:03

 [ТС]

11

я это делаю пока пошагово нажимая
Эф 8 и сообщение
объединение ячеек приведёт к потере всех значений
кроме верхнего левого
получаю до сих пор, но нажав кнопку на сообщение код продолжаю
как бы избавиться?
но главное что теперь у верхней строки видна только её нижняя часть — это уже очень плохо-как избавиться? спс



0



Остап Бонд

Заблокирован

27.09.2018, 19:16

12

Ципихович Эндрю, бесполезное с невозможным совмещать — это ваше кредо?
Займитесь прочищением мозгов, объединение ячеек — это одно из самых тупых действий с точки зрения работы в Excel.



0



Казанский

15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

27.09.2018, 19:48

13

Ципихович Эндрю,

Visual Basic
1
2
3
4
5
6
7
Sub FORCE()
M = [C4].Value & " " & [c5].Value
Application.DisplayAlerts = False 'отключить сообщения
Range("C4:C5").Merge
Application.DisplayAlerts = True  'обязательно включить обратно!
[C4].Value = M
End Sub



1



1508 / 478 / 56

Регистрация: 10.04.2009

Сообщений: 8,008

27.09.2018, 19:52

 [ТС]

14

спасибо за ответ

Цитата
Сообщение от Ципихович Эндрю
Посмотреть сообщение

у верхней строки видна только её нижняя часть — это уже очень плохо-как избавиться? спс



0



15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

27.09.2018, 20:35

15

Цитата
Сообщение от Ципихович Эндрю
Посмотреть сообщение

у верхней строки видна только её нижняя часть — это уже очень плохо-как избавиться?

Увеличить высоту строки. Или уменьшить шрифт (сильно придется уменьшить). В Excel нет настройки межстрочного интервала как в Word.



0



6875 / 2807 / 533

Регистрация: 19.10.2012

Сообщений: 8,562

27.09.2018, 22:19

16

Цитата
Сообщение от Остап Бонд
Посмотреть сообщение

Никак!

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



0



Остап Бонд

Заблокирован

27.09.2018, 23:58

17

Казанский, Hugo121, Вы можете разговаривать с ТС до заговенья, дело с точки не снимется



0



1508 / 478 / 56

Регистрация: 10.04.2009

Сообщений: 8,008

28.09.2018, 07:13

 [ТС]

18

Цитата
Сообщение от Hugo121
Посмотреть сообщение

Записывать в макрос не стал, ибо не вижу смысла (не вижу задачи)

спасибо, файл же приложен в посте 9, нужно кооректно программно объединит ячейки
[c4:am4] и [c5:am5].



0



Narimanych

2632 / 1637 / 745

Регистрация: 23.03.2015

Сообщений: 5,143

28.09.2018, 11:17

19

Ципихович Эндрю,

выделите необходимые ячейки для объединения , затем запустите

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub FORCE()
Set R = Selection
 
Application.DisplayAlerts = False
For Each cell In R
M = M & " " & cell.Value
Next
 
With Selection
.Merge
.Value = M
.VerticalAlignment = xlCenter
End With
 
Application.DisplayAlerts = True
End Sub



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

28.09.2018, 11:17

Помогаю со студенческими работами здесь

Объединить две строки s1 и s2, причем из второй строки копировать не более n символов
strncat — сцепить две строки s1 и s2, причем из второй строки копировать не более n…

Прочитать 3 строки, объединить 1 со 2, 2 с 3, 1 с 3. Вывести все три новые строки
Прочитать 3 строки, объединить 1 со 2, 2 с 3, 1 с 3. Вывести все три новые строки.

Прочитать 3 строки, объединить 1 со 2, 2 с 3, 1 с 3. Вывести все три новые строки
Прочитать 3 строки, объединить 1 со 2, 2 с 3, 1 с 3. Вывести все три новые строки.

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

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

19

I have a similar question to this one:

Merge the contents of 2 cells into another 3rd cell using VBA in Excel

But I want to combine a range of cells within a column, eg A2:A50. Sometimes I have over 300 cells to be combined into one. Values are text. Is there any way to modify this macro so that it works on a range instead of just two cells?

Thanks!

Community's user avatar

asked Jan 18, 2010 at 22:45

CCID's user avatar

Based on the thread you are citing, I guess you wish to return the concatination of all the values held by the cells, interpreting all the values as strings?

For that, you could use a VBA macro that looks like this:

Function ConcatinateAllCellValuesInRange(sourceRange As Excel.Range) As String
    Dim finalValue As String

    Dim cell As Excel.Range

    For Each cell In sourceRange.Cells
        finalValue = finalValue + CStr(cell.Value)
    Next cell

    ConcatinateAllCellValuesInRange = finalValue
End Function

As an example, you could call it like this:

Sub MyMacro()
    MsgBox ConcatinateAllCellValuesInRange([A1:C3])
End Sub

Is this what you were looking for?

Mike

Community's user avatar

answered Jan 18, 2010 at 23:18

Mike Rosenblum's user avatar

Mike RosenblumMike Rosenblum

12k6 gold badges48 silver badges64 bronze badges

Try the following macro, not very elegant in that it doesn’t do any error checking etc but works. Assign the macro to a button, click in a cell, click the macro button, highlight the desired (source) range to merge using your mouse (will autofill in range in the input box in the dialogue box), click ok, highlight the destination cell (will autofill the input box in the next dialogue box) click ok, all cells will be merged with a single space character into the destination cell, which can be in the original source range). Up to you to delete the superfluous cells manually. Workks with both rows and columns but not blocks.

Sub JoinCells()

Set xJoinRange = Application.InputBox(prompt:="Highlight source cells to merge",    Type:=8)
xSource = 0
xSource = xJoinRange.Rows.Count
xType = "rows"
If xSource = 1 Then
    xSource = xJoinRange.Columns.Count
    xType = "columns"
End If
Set xDestination = Application.InputBox(prompt:="Highlight destination cell", Type:=8)
If xType = "rows" Then
    temp = xJoinRange.Rows(1).Value
    For i = 2 To xSource
        temp = temp & " " & xJoinRange.Rows(i).Value
    Next i
Else
    temp = xJoinRange.Columns(1).Value
    For i = 2 To xSource
        temp = temp & " " & xJoinRange.Columns(i).Value
    Next i
End If

xDestination.Value = temp

End Sub

answered Aug 23, 2011 at 15:15

Paul McMahon's user avatar

Just to add to Mike’s solution, if you want to get your range from a variable instead of a defined range (I had trouble with the syntax):

Sub MyMacro()

dim myVar As Range

    MsgBox ConcatinateAllCellValuesInRange(myVar)

End Sub

answered Apr 13, 2015 at 9:55

HotSauceCoconuts's user avatar

Here is a macro developed circa 2006.
I still use it today!

Usage:

  • Select the cells you want to merge (the marco assumes they are all in the same column, one below the other)
  • Run the macro (a good idea is to assign it a short-cut key via Excel’s Developer->Code->Macros-> select the macro -> Options)
Sub MergeCells()
'
Dim myString As String
Dim myUnion As Range
    
   Count = Selection.Count
    
   myValue = Selection
    
   myrow = Selection.Row
   mycol = Selection.Column
   myString = ""
   
   For Index = 1 To Count
      If Index > 1 Then myString = myString & Chr(10) & myValue(Index, 1) Else myString = myValue(Index, 1)
   Next Index

  Selection.ClearContents
  Cells(myrow, mycol) = myString
  
  
' Uncomment this loop if you want to delete the rows that are below the top cell (the rows with the cells whose content was concatenated to the top cell)
' For Index = 1 To Count - 1
'    Rows(myrow + 1).Delete
' Next Index
    
 Cells(myrow, mycol).Select
       
End Sub

answered Mar 25 at 18:02

Michael Stahl's user avatar

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

​Смотрите также​Здесь либо макрос,​ Фамилия+Имя+Отчество+Серия+Номер​ данные ребенка повторялось​Полная версия модифицированного кода​

Объединение данных с помощью символа «амперсанд» (&)

  1. ​ одновременно для нескольких​Теперь если нам нужно​ показателей с распределением​

  2. ​чтобы расцепить только фамилию​=СЦЕПИТЬ(A2;» «;B2), которая​Имя – ячейки в​С помощью оператора &​

  3. ​Проблема​​Fourth​​Важно:​Ячейку, которая не была​

  4. ​ автоматически, поэтому ее​Данные из нескольких ячеек​ либо UDF​Michael_S​​ 1 раз, и​​ макроса:​

Объединение данных с помощью функции СЦЕП

  1. ​ выделенных строк.​ одновременно объединять диапазоны​ по кварталам.​

  2. ​ – формула: =ПРАВСИМВ(C4;ПОИСК(«​​ объединяет текстовые значения​​ этой колонке содержат​

  3. ​ можно объединять текстовые​Описание​

    ​Pine​ В Excel 2016, Excel Mobile​ создана путем объединения,​ текст может содержать​ можно объединить в​

  4. ​Nic70y​: Вот если названия​ в нужном столбце​Sub JoinEmpty()​​​​ кварталов, чтобы избавиться​

support.office.com

Объединение и отмена объединения ячеек

​Нам необходимо объединить ячейки​​ «;C4;1)+1)​ в одну строку.​ текстовые данные полученные​ элементы, не прибегая​Кавычки отображаются в строке​32​ и Excel Online​ невозможно разделить. Если​ неточности и грамматические​ одну с помощью​: вот это уточните​ листов и предметов​ (с предметом) стояла​Dim i As​Что если в нашей​ от пустых ячеек,​ на первой строке​Фактически функция СЦЕПИТЬ устарела,​ Однако на практике​ из базы картотек​

​ к функции.​ результата.​Формула​ эта функция заменена​ вы ищете сведения​ ошибки. Для нас​

Объединение ячеек

  1. ​ символа «амперсанд» (&)​

  2. ​ и желательно в​​ в первой строке​ оценка. Пример прикрепляю.​

    ​ Long​​ таблице потребуется выполнить​ выделите диапазон B1:L2.​ таким образом, чтобы​ но все еще​ мы не рекомендуем​ кадрового отдела.​Например, =A1 & B1​Используйте точку с запятой​Описание​ функцией СЦЕП. Функция​ о том, как​ важно, чтобы эта​

Отмена объединения ячеек

  1. ​ или функции СЦЕП.​ файле (пару листов​​ сделать одинаковыми, то​Я пробовал свести​​Dim j As​

  2. ​ аналогичное объединение пустых​​ После чего запустите​

​ ячейка с названием​​ доступна пользователям в​

  • ​ использовать функцию СЦЕПИТЬ,​Фамилия – в данном​ возвращает то же​ для разделения текстовых​=СЦЕПИТЬ(«Популяция рек для «;A2;»​ СЦЕПИТЬ пока еще​ распределить данные из​ статья была вам​Выделите ячейку, в которую​ достаточно) и как​

  • ​ можно так​ все данные в​ Long​ ячеек сразу в​ макрос: «РАЗРАБОТЧИК»-«Код»-«Макросы»-«JoinEmpty»-«Выполнить». Ячейки​ квартала была объединена​ новых версиях программы​​ а в место​​ столбце находиться только​

support.office.com

Функция СЦЕПИТЬ в Excel, включая примеры

​ значение, что и​​ элементов. Например: Excel​ «;A3;» составляет «;A4;»​ доступна для обратной​ ячейки по нескольким​ полезна. Просим вас​ вы хотите вставить​ должен выглядеть результат.​или макросом​ одну таблицу и​For j =​ нескольких строках –​ объединяться в соответствии​ с пустыми ячейками​ Excel.​ нее просто применять​ фамилии сотрудников.​ =CONCATENATE(A1,B1). Во многих​ отобразит результат функции​ на километр.»)​ совместимости, однако рекомендуем​

​ ячейкам, см. статью​​ уделить пару секунд​​ объединенные данные.​Fleiros​Nic70y​ сделать сводную таблицу,​ 1 To Selection.Rows.Count​

​ одновременно? Для этого​​ с продолжительностью каждого​ находящиеся справа от​Макросы незаменимы при форматировании​ в формулах оператор​В третьем столбце «Имя​ случаях воспользоваться оператором​ =СЦЕПИТЬ («Привет, «»мир!»)​Создает предложение, объединяя данные​ использовать вместо нее​ Распределение содержимого ячейки​ и сообщить, помогла​Введите = (знак равенства)​

​: Спасибо большое за​​: Тот же принцип​

​ но она у​

  • ​For i =​ нужно добавить несколько​ квартала, как на​

  • ​ нее. И так​

​ и изменении структуры​

​ &, так как​

​ + Фамилия» необходимо​​ амперсанда проще и​

​ как «Привет,»мир!» с​ в столбце А​ функцию СЦЕП. В​ на соседние столбцы.​ ли она вам,​

​ и выберите первую​​ терпение. Прикрепляю файл​

​200?’200px’:»+(this.scrollHeight+5)+’px’);»>ДВССЫЛ​ меня не получилась​ 1 To Selection.Columns.Count​ строк в код​

Примеры

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

​ с остальным текстом.​

​ последующих версиях Excel​

​Ячейку, полученную путем объединения,​

​ с помощью кнопок​

​ ячейку, которую нужно​

​ с исходными данными​

​Fleiros​

​ в нужном виде.​

​If Selection.Cells(j, i)​

​ нашего макроса. Но​

​В данном коде цикл​ квартала.​ Excel. В данном​

​ своих недостатков.​ фамилию каждого сотрудника​ строки с помощью​ как пропущена запятая​ Результат: «Популяция рек​ функция СЦЕПИТЬ может​ можно снова разделить​

​ внизу страницы. Для​

​ объединить.​ и желаемым результатом.​: Спасибо.​ Какой то хаос​ = «» Then​

​ сначала подготовим исходную​

​ проходит по всем​Выделение отдельных групп ячеек​ примере мы рассмотрим,​​ для последующего использования​ функции СЦЕПИТЬ.​

​ между текстовыми аргументами.​

​ для вида речная​ быть недоступна.​ на отдельные ячейки.​ удобства также приводим​Введите символ​P.S. по поводу​Я к сожалению​ из кучи «вложений»​

​ActiveSheet.Range(Selection.Cells(j, i -​ таблицу.​

​ ячейкам первой строки​ вручную может потребовать​ как с помощью​3 главных недостатка функции​​ в сводных таблицах​​См. дополнительные сведения об​Числа не нужно заключать​ форель составляет 32​

Распространенные неполадки

​Синтаксис:​

​ Если вы не​

​ ссылку на оригинал​&​

​ количества оценок имеется​ неверно сформулировал вопрос​ вышел. К сожалению​ 1), Selection.Cells(j, i)).Merge​Допустим нам для последних​ выделенного диапазона, слева​ много времени и​ макроса можно быстро​ СЦЕПИТЬ по сравнению​

​ и отчетах, сформированных​ использовании операторов вычислений.​

​ в кавычки.​ на километр».​

​СЦЕПИТЬ(текст1;[текст2];…)​ помните, где находятся​ (на английском языке).​и пробел, заключенный​ ввиду то, что​ изначально,​ не разобрался как​End If​ трех отделов необходимо​

  • ​ на право. Проверяется​ сил, особенно при​ и одновременно объединять​ с оператором &:​ программой Excel.​

  • ​Для объединения и форматирования​​Слова расположены впритык друг​​=СЦЕПИТЬ(В2;» «;C2)​Ниже приведены примеры.​ объединенные ячейки, используйте​Не удается разбить отдельные​

​ в кавычки.​ у одного может​

​UPD: Дети не​ со сводными таблицами​​Next​​ разбить данные на​ каждая из них​

Рекомендации

​ обработке несколько таких​

​ все пустые ячейки​

​Ограниченное максимальное количество объединяемых​Для этого необходимо попарно​

​ строк используйте функцию​ к другу.​Объединяет строку в ячейке​=СЦЕПИТЬ(«Популяция рек для «;A2;»​

​ команду​ ячейки, но можно​Выберите следующую ячейку, которую​ быть только по​ всегда идут в​ работать. Возможно есть​Next​ 2 полугодия. Исходный​ на наличие значений.​

​ подобных бюджетов. Да​ в строках таблицы​

​ значений ячеек до​ объедини тексты из​ ТЕКСТ.​

​Если не поместить пробелы​ В2, пробел и​ «;A3;» составляет «;A4;»​Найти​ отобразить его как​

​ нужно объединить, и​ русскому языку оценка,​ одном порядке (как​ более удобное решение,​Selection.HorizontalAlignment = xlVAlignCenter​ вид таблицы будет​

​ Если проверяемая ячейка​

​ и количество объединяемых​

support.office.com

Лучшая альтернатива функции СЦЕПИТЬ и объединить текст в Excel

​ Excel.​ 255.​ ячеек столбцов таблицы​Функция ТЕКСТ преобразует числовое​ между текстовыми элементами,​ значение в ячейке​ на километр.»)​для их поиска.​ если бы ячейки​ нажмите клавишу ВВОД.​ у другого по​ в примере), а​ надеюсь на Вашу​End Sub​

Как сцепить два текста в один с помощью и без функции Excel?

​ выглядеть следующим образом:​ не содержит никаких​ ячеек не всегда​

  1. ​У нас иметься таблица​Функция объединяет только текстовые​ в общие строки.​ значение в текст​ в строке результата​
  2. ​ С2. Результат: «Виталий​=СЦЕПИТЬ(В2;» «;C2)​Примечание:​

​ была разделена, объединение​ Пример формулы:​ 10 предметам оценки.​ так же в​ помощь. Заранее спасибо.​Теперь, нам осталось только​Если нам нужно изменить​ значений (пуста), макрос​

объединить имя и фамилию.

​ одинаковое – а​ бюджета для разных​ значения, а оператор​На рисунке проиллюстрированный пример​

​ и объединяет числа​ они будут отображаться​ Токарев».​Имя аргумента​ Мы стараемся как можно​ ячеек над ней.​=A2&» «&B2​Внутри одного предмета​ одной вкладке может​

пример решения задачи.

​UPD: Дети не​ лишь выделить диапазон​ так, чтобы его​ объединяет ее с​ это уже требует​ отделов. Суммы распределены​ & объединит любые​ решения данной задачи.​ с текстом или​ слитно. Добавьте пробелы​=СЦЕПИТЬ(С2;», «;В2)​Описание​ оперативнее обеспечивать вас​Выделите ячейки для объединения.​.​

соединить любые текстовые значения.

​ только 1 оценка​ быть 200 строк,​ всегда идут в​ B1:L12 и запустить​
​ можно было применить​ предыдущей ячейкой. А​ дополнительного внимания от​ по месяцам. Итоговые​ значения ячеек.​ Для этой цели​ символами.​ в формулу с​Объединяет текст в ячейке​текст1​ актуальными справочными материалами​Выберите​

​Выделите ячейку, в которую​

​ на ученика.​ а в другой​ одном порядке (как​

  1. ​ новую версию макроса:​ одновременно для нескольких​ если же проверяемая​
  2. ​ пользователя, иначе будут​ суммы по каждому​Функция требует немного больше​ в примере должен​
  3. ​Например если в ячейке​ функцией СЦЕПИТЬ. Это​ C2, строку, состоящую​    (обязательный)​ на вашем языке.​Объединить и поместить в​ вы хотите вставить​Nic70y​ 800.​ в примере), а​

​Читайте также: макрос для​ выделенных строк таблицы,​ ячейка содержит какое-то​ ошибки в структуре​ отделу взяты из​ затрат времени и​ использоваться оператор «&»​ A1 содержится номер​ можно сделать двумя​ из запятой и​Первый элемент для объединения.​ Эта страница переведена​

  • ​ центре.​ объединенные данные.​: вариант из 1​
  • ​В результате нужно​ так же в​ объединения пустых ячеек​

функция РАСЦЕПИТЬ.

​ тогда сначала кода​ значение, то макрос​ отчетов. Рационально написать​ других листов рабочей​ ресурсов как у​

exceltable.com

Макрос для объединения пустых ячеек в строках таблицы Excel

​ (END вместо оператора​ 23,5, чтобы отформатировать​ способами.​ пробела, и значение​ Это может быть​ автоматически, поэтому ее​Важно:​Введите выражение​ 000 000 000​ вывести всех детей(без​ одной вкладке может​

Как объединить пустые ячейки в строках с помощью макроса

​ в столбцах таблицы​ продекларируем новую переменную:​ пропускает ее и​ макрос для автоматического​ книги Excel, где​ программы Excel (в​ «+»), который позволяет​ числа в виде​Добавьте двойные кавычки с​ в ячейке B2.​ текстовое значение, число​ текст может содержать​  В объединенной ячейке​= СЦЕП(​ формул​ повторений) и их​ быть 200 строк,​ Excel​Dim j As Long​ переходит к проверке​ решения поставленной задачи.​ указаны по ним​ процессе вычислений с​ объединять значения ячеек​ денежное значение можно​ пробелом между ними​ Результат: «Виталий Токарев».​ или ссылка на​

Бюджет по отделам.

​ неточности и грамматические​ отображается содержимое только​.​

​Fleiros​ результаты. Так же​ а в другой​Внимание! Если первая ячейка​Теперь, перед циклом, который​ следующей.​Откроем редактор Visual Basic​ данные на все​ использованием сложных формул),​ в формулах:​

​ использовать следующую формулу:​ (» «). Например:​=СЦЕПИТЬ(B3;» & «;C3)​ ячейку.​ ошибки. Для нас​ одной ячейки (верхней​Выберите первую ячейку, которую​: Спасибо, буду разбираться​ количество оценок по​ 800.​ (в верхнем левом​ проходит по всем​В конце кода выравниваем​ (ALT+F11):​ месяца текущего года.​ так и у​

​Как показано выше на​=ТЕКСТ(A1;»0,00 ₽»)​

редактор макросов.

​ =СЦЕПИТЬ(«Привет,»; » «;​Объединяет строку в ячейке​текст2,…​ важно, чтобы эта​ левой ячейки для​

​ нужно объединить.​
​ с формулами​ предметам у всех​
​В результате нужно​ углу) выделенного диапазона​
​ ячейкам выделенной строки​ по центру весь​
​И вставим новый модуль​ Поэтому автор общей​
​ пользователя (в процессе​
​ рисунке с помощью​
​Результат: 23,5 ₽​
​ "мир!").​
Код JoinEmpty.

​ B3, строку, состоящую​    (необязательные)​ статья была вам​ языков с направлением​Для разделения объединяемых ячеек​DOK2014​ может быть разное.​ вывести всех детей(без​ – пуста, то​ добавим новую строку​ текст, который содержится​

Пример.

​ с помощью инструмента​ таблицы бюджета распределил​ ввода функции в​ символа «&» можно​Одна из самых популярных​Добавьте пробел после​ из пробела, амперсанда​Дополнительные текстовые элементы для​ полезна. Просим вас​ письма слева направо​ используйте запятые, а​: обрабатывал подобные файлы,​ Столбец «№» -​ повторений) и их​ она будет объедена​ с кодом цикла​ в выделенном диапазоне​ в редакторе: «Insert»-«Module».​

​ названия заголовков не​ строку формул).​ соединить любые текстовые​ операций в Exel​текстового​ и еще одного​

​ объединения. Можно указать​

​ уделить пару секунд​ или правой верхней​ для добавления пробелов,​ на формулах -​ это просто номер​ результаты. Так же​ со смежной ячейкой​ для перехода по​ задав соответствующее свойство​ После запишем в​ только по месяцам,​Интересный факт! В Excel​ значения из разных​ по работе с​

​аргумента. Например: =СЦЕПИТЬ(«Привет,​

Как объединить все пустые ячейки во всех строках таблицы Excel

​ пробела, и значение​ до 255 элементов и​ и сообщить, помогла​ ячейки для языков​ запятых и другого​ тормозит.​ по порядку для​ количество оценок по​ слева от выделенного​ строкам выделенного диапазона​ в строке:​

​ модуль код VBA-макроса:​ а и по​ нет обратной функции​ ячеек без использования​ текстом – это​ «; «мир!»). К​

Исходный бюджет 2.

​ в ячейке C3.​ до 8 192 символов.​ ли она вам,​ с направлением письма​ текста — кавычки.​Оптимально: на отдельный​ каждой вкладки, столбцы​

​ предметам у всех​

​ диапазона.​ ячеек:​Selection.HorizontalAlignment = xlHAlignCenter​Sub JoinEmpty()​ кварталам. Соответственно название​ РАСЦЕПИТЬ и нет​ функции: =СЦЕПИТЬ(). В​ объединение текстовых строк.​

​ строке «Привет,» добавлен​ Результат: Fourth &​

​Чтобы использовать эти примеры​ с помощью кнопок​ справа налево). Данные​

​Введите закрывающую скобку в​

​ лист «База данных»​ «Код1» и «Код2″​ может быть разное.​Fleiros​For j = 1​

​Обратите внимание, что в​

​Dim i As​ квартала находиться в​

​ специального символа оператора.​
​ этом примере объединены​ Например, объединение нескольких​
​ пробел.​ Pine.​
​ в Excel, скопируйте​ внизу страницы. Для​
​ в других объединенных​ конце формулы и​
​ копируются значения из​ не являются уникальными​
​ Столбец "№" -​: Добрый день, подскажите​
​ To Selection.Rows.Count​
​ этой версии кода​
​ Long​
​ столбце первого месяца​
​ Для решения такой​

​ значения ячеек A2​ слов в одну​Вместо ожидаемого результата отображается​=B3 & » &​

Все пустые ячейки объеденены.

​ данные из приведенной​ удобства также приводим​ ячейках удаляются.​ нажмите клавишу ВВОД.​

​ вкладок, далее -​ и могут повторяться.​ это просто номер​ пожалуйста как можно​Так же не забудем​ если мы выделим​For i =​ с которого начинается​

exceltable.com

Объединение строк по повторяющимся критериям в одну строку (Формулы/Formulas)

​ задачи применяются формулы​​ и B2 с​ строку. На практике​ значение ошибки #ИМЯ?.​
​ » & C3​ ниже таблицы и​ ссылку на оригинал​Нажмите стрелку вниз рядом​ Пример формулы:​ сводная таблица​ Уникальность каждой строки​ по порядку для​ решить данную задачу.​ добавить конец нового​ более одной строки​ 1 To Selection.Columns.Count​ этот же квартал.​
​ с комбинациями текстовых​ добавленным между ними​ в процессе рутинной​Ошибка #ИМЯ? обычно означает,​Объединяет те же элементы,​ вставьте их на​ (на английском языке).​ с кнопкой​=CONCAT(A2, » Семья»)​Fleiros​ в результате необходимо​ каждой вкладки, столбцы​Есть файл с​ цикла:​ содержащие пустые ячейки,​If Selection.Cells(1, i)​
​ За исключением первого​ функций. Например маркером​ символом пробела (указанный​ работы с Excel​ что для​ что и в​ новый лист в​Используйте функцию​Объединить и поместить в​
​.​: Подскажите пожалуйста как​ считать несовпадение по​ «Код1» и «Код2″​ множеством вкладок, на​Next​ то после запуска​ = «» Then​ квартала так как​ для расцепления текста​ в формуле между​ часто приходиться объединять​текстового​ предыдущем примере, но​ ячейку A1.​СЦЕПИТЬ​ центре​Примечание:​ правильно сводную таблицу​

​ 5 ячейкам: это​​ не являются уникальными​ каждой из которых​Во всех экземплярах объекта​ макроса будут объединены​ActiveSheet.Range(Selection.Cells(1, i -​
​ год уже не​

​ послужит символ пробела​​ кавычками как текстовое​​ Имена и Фамилии​

​аргумента не хватает​​ с помощью оператора​
​Данные​, относящуюся к текстовым​.​
​ Мы стараемся как можно​ делать? я пробовал​ Фамилия+Имя+Отчество+Серия+Номер​ и могут повторяться.​ данные об учениках​ Cells, для второго​ ячейки только в​ 1), Selection.Cells(1, i)).Merge​ полный по состоянию​
​ « » ,​ значение).​ сотрудников в одну​ кавычек.​&​вида​ функциям, для объединения​Выберите​ оперативнее обеспечивать вас​ но не получилось.​Michael_S​ Уникальность каждой строки​ и их оценках​ аргумента вместо числа​ первой строке. Далее​End If​ на дату формирования​ а дальше:​Для объединения текстов в​

​ ячейку.​​Действие​(амперсанд) вместо функции​Виталий​
​ двух или нескольких​Отменить объединение ячеек.​

​ актуальными справочными материалами​​ Все в одну​: да на 11​ в результате необходимо​ по конкретному предмету.​ 1 введем переменную​

​ рассмотрим, как модифицировать​​Next​ отчета. Как показано​чтобы расцепить только имя​ одну строку программа​
​В примере показанным на​Описание​ СЦЕПИТЬ. Результат: Fourth​Токарев​ текстовых строк в​Важно:​ на вашем языке.​ колонку с вложениями​
​ предметов… 900 ДВССЫЛ​ считать несовпадение по​ Нужно все данные​

​ j:​​ наш макрос, чтобы​Selection.HorizontalAlignment = xlVAlignCenter​ ниже на рисунке:​

​ используем формулу: =ЛЕВСИМВ(C2;ПОИСК(«​​ Excel предлагает встроенную​ рисунке таблица содержит​:)

​Вместо функции СЦЕПИТЬ используйте​​ & Pine.​речная форель​ одну.​
​ ​ Эта страница переведена​ сводится​ будет сильно тормозить.​ 5 ячейкам: это​

​ объединить так, чтобы​​Selection.Cells(i,j)​ он был применим​End Sub​Формат бюджета для ежемесячных​ «;C2;1))​ функцию​ первые два столбца:​

excelworld.ru

​ знак & (амперсанд).​

Макрос соединения текста в Excel

Макрос соединения текста в Excel

Ранее уже рассказывал о замечательной функции в программе Excel,  которая называется «СЦЕПИТЬ».

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

Для больших объемов сцепки (слияния текста)  требуются значительные трудозатраты.

Достойных аналогов этой функции, к сожалению, найти не удалось.

На помощь пришел язык VBA для написания макросов в «Excel».

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

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

  1. Sub Sliyanie()
  2. Dim txt As String ‘Объявляем переменную ТХТ
  3. txt = «» ‘присваиваем объявленной переменной пустое значение
  4. Dim cell
  5. For Each cell In Selection ‘ для всех ячеек в выделении выполняем следующие действия
  6. txt = txt + cell.text ‘к значению переменной txt добавляем значение ячейки
  7. Next
  8. MsgBox (txt) ‘выводим итоговое значение
  9. End Sub

Это самый простой вариант макроса слияния текстовых значений ячеек в выделенном диапазоне.

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

Например:

Фрагмент макроса сцепки текста

Фрагмент макроса сцепки текста

Добавить форму UserForm с двумя полями TextBox. В одном поле указывать разделитель ( «/», «;», «.», и т.д.) а в другое поле выводить результат для удобства копирования.

Можно на форму UserForm вывести кнопки активации макроса «Соединить» и для ленивых кнопку «Копировать» — для копирования содержимого поля с результатом в буфер обмена.

Макрос копирования по ссылке: http://ruexcel.ru/ctrlc/

Можно добавить чек бокс (checkbox) для выбора учитывать пустые ячейки или пропускать их.

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

Понравилась статья? Поделить с друзьями:
  • Макрос как закрыть книгу в excel
  • Макрос копирующий таблицу в excel
  • Макрос как выделить диапазон ячеек в excel
  • Макрос копирующий строки excel
  • Макрос как вставить символ в excel