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

Объединение диапазона ячеек в одну или построчно с помощью кода VBA Excel. Метод Range.Merge и свойство MergeCells. Отмена объединения ячеек. Примеры.

Метод Range.Merge

Метод Merge объекта Range объединяет ячейки заданного диапазона в одну или построчно из кода VBA Excel.

Синтаксис метода:

  1. Expression — выражение, возвращающее объект Range.
  2. Across — логическое значение, определяющее характер объединения ячеек:
    • True — ячейки объединяются построчно: каждая строка заданного диапазона преобразуется в одну ячейку.
    • False — весь диапазон преобразуется в одну ячейку. False является значением по умолчанию.

Преимущество метода Range.Merge перед свойством MergeCells заключается в возможности построчного объединения ячеек заданного диапазона без использования цикла.

Свойство MergeCells

Свойство MergeCells объекта Range применяется как для объединения ячеек, так и для его отмены.

Синтаксис свойства с присвоением значения:

Expression.MergeCells = Boolean

  1. Expression — выражение, представляющее объект Range.
  2. Boolean — логическое значение, определяющее необходимость объединения ячеек или его отмены:
    • True — объединение ячеек заданного диапазона.
    • False — отмена объединения ячеек.

С помощью свойства MergeCells можно из кода VBA Excel проверять диапазон (отдельную ячейку), входит ли он (она) в объединенную ячейку (True) или нет (False). Если проверяемый диапазон окажется комбинированным, то есть содержащим объединенные и необъединенные ячейки, компилятор сгенерирует ошибку.

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

Метод Range.UnMerge

Метод UnMerge объекта Range разделяет объединенную область на отдельные ячейки из кода VBA Excel.

Синтаксис метода:

Expression — выражение, возвращающее объект Range.

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

Примеры объединения ячеек и его отмены

Пример 1
Наблюдаем, как происходит объединение ячеек при разных значениях параметра Across:

Sub Primer1()

‘Объединяем ячейки диапазона «A1:D4» построчно

   Range(«A1:D4»).Merge (True)

‘Объединяем диапазон «A5:D8» в одну ячейку

‘Across принимает значение False по умолчанию

   Range(«A5:D8»).Merge

End Sub

Не забываем, что логическое выражение True можно заменить единичкой, а False — нулем.

Пример 2
Отменяем объединение ячеек в диапазонах из первого примера:

Sub Primer2()

   Range(«A1:D8»).MergeCells = False

End Sub

Пример 3
Предполагается, что перед этим примером отменено объединение ячеек кодом из предыдущего примера.

Sub Primer3()

‘Объединяем ячейки диапазона «A1:D4»

   Range(«A1:D4»).MergeCells = 1

‘Проверяем принадлежность диапазона

‘объединенной ячейке*

   MsgBox Range(«A1:C2»).MergeCells

   MsgBox Range(«A6:C7»).MergeCells

‘Ячейки диапазона «A5:D8»

‘можно объединить и так

   Cells(5, 1).Resize(4, 4).Merge

End Sub

*Если проверяемый диапазон окажется комбинированным, VBA Excel сгенерирует ошибку.
Пример 4
Отмена объединения ячеек с помощью метода Range.UnMerge:

Sub Primer4()

‘Объединяем ячейки диапазона «A1:C4»

    Range(«A1:C4»).Merge

    MsgBox «Ячейки диапазона ««A1:C4»» объединены»

‘Смотрим адрес диапазона, входящего в объединенную ячейку

    MsgBox Range(«A2»).MergeArea.Address

‘Отменяем объединение ячеек диапазона «A1:C4»

    Range(«B3»).UnMerge  ‘или: Range(«B3»).MergeArea.UnMerge

    MsgBox «Объединение ячеек диапазона ««A1:C4»» отменено»

End Sub

Предупреждение перед объединением

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

Пример 5
Наблюдаем появление предупреждающего окна:

Sub Primer5()

‘Отменяем объединение ячеек в диапазоне «A1:D4»

   Range(«A1:D4»).MergeCells = 0

‘Заполняем ячейки диапазона текстом

   Range(«A1:D4») = «Ячейка не пустая»

‘Объединяем ячейки диапазона «A1:D4»

   Range(«A1:D4»).MergeCells = 1

‘Наблюдаем предупреждающее диалоговое окно

End Sub

Предупреждающее окно перед объединением ячеек

Чтобы избежать появление предупреждающего окна, следует использовать свойство Application.DisplayAlerts, с помощью которого можно отказаться от показа диалоговых окон при работе кода VBA Excel.

Пример 6

Sub Primer6()

‘Отменяем объединение ячеек в диапазоне «A5:D8»

   Range(«A5:D8»).MergeCells = 0

‘Заполняем ячейки диапазона «A5:D8» текстом

   Range(«A5:D8») = «Ячейка не пустая»

Application.DisplayAlerts = False

   Range(«A5:D8»).MergeCells = 1

Application.DisplayAlerts = True

End Sub

Теперь все прошло без появления диалогового окна. Главное, не забывать после объединения ячеек возвращать свойству Application.DisplayAlerts значение True.

Кстати, если во время работы VBA 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, то объединение строк по столбцам будет выполнено только для первого диапазона.

Надпись на заборе: «Катя + Миша + Семён + Юра + Дмитрий Васильевич +
товарищ Никитин + рыжий сантехник + Витенька + телемастер Жора +
сволочь Редулов + не вспомнить имени, длинноволосый такой +
ещё 19 мужиков + муж = любовь!»

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

В категории Текстовые есть функция СЦЕПИТЬ (CONCATENATE), которая соединяет содержимое нескольких ячеек (до 255) в одно целое, позволяя комбинировать их с произвольным текстом. Например, вот так:

Склейка текста функцией СЦЕПИТЬ

Нюанс: не забудьте о пробелах между словами — их надо прописывать как отдельные аргументы и заключать в скобки, ибо текст. 

Очевидно, что если нужно собрать много фрагментов, то использовать эту функцию уже не очень удобно, т.к. придется прописывать ссылки на каждую ячейку-фрагмент по отдельности. Поэтому, начиная с 2016 версии Excel, на замену функции СЦЕПИТЬ пришла ее более совершенная версия с похожим названием и тем же синтаксисом — функция СЦЕП (CONCAT). Ее принципиальное отличие в том, что теперь в качестве аргументов можно задавать не одиночные ячейки, а целые диапазоны — текст из всех ячеек всех диапазонов будет объединен в одно целое:

Склейка функцией СЦЕП

Для массового объединения также удобно использовать новую функцию ОБЪЕДИНИТЬ (TEXTJOIN), появившуюся начиная с Excel 2016. У нее следующий синтаксис:

=ОБЪЕДИНИТЬ(Разделитель; Пропускать_ли_пустые_ячейки; Диапазон1; Диапазон2 … )

где

  • Разделитель — символ, который будет вставлен между фрагментами
  • Второй аргумент отвечает за то, нужно ли игнорировать пустые ячейки (ИСТИНА или ЛОЖЬ)
  • Диапазон 1, 2, 3 … — диапазоны ячеек, содержимое которых хотим склеить

Например:

Склейка текста функцией ОБЪЕДИНИТЬ

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

Это универсальный и компактный способ сцепки, работающий абсолютно во всех версиях Excel. 

Для суммирования содержимого нескольких ячеек используют знак плюс «+«, а для склеивания содержимого ячеек используют знак «&» (расположен на большинстве клавиатур на цифре «7»). При его использовании необходимо помнить, что:

  • Этот символ надо ставить в каждой точке соединения, т.е. на всех «стыках» текстовых строк также, как вы ставите несколько плюсов при сложении нескольких чисел (2+8+6+4+8)
  • Если нужно приклеить произвольный текст (даже если это всего лишь точка или пробел, не говоря уж о целом слове), то этот текст надо заключать в кавычки. В предыдущем примере с функцией СЦЕПИТЬ о кавычках заботится сам Excel — в этом же случае их надо ставить вручную.

Вот, например, как можно собрать ФИО в одну ячейку из трех с добавлением пробелов:

Сцепка текста амперсандом

Если сочетать это с функцией извлечения из текста первых букв — ЛЕВСИМВ (LEFT), то можно получить фамилию с инициалами одной формулой:

Склейка ФИО

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

Имеем текст в нескольких ячейках и желание — объединить эти ячейки в одну, слив туда же их текст. Проблема в одном — кнопка Объединить и поместить в центре (Merge and Center) в Excel объединять-то ячейки умеет, а вот с текстом сложность — в живых остается только текст из верхней левой ячейки. 

Чтобы объединение ячеек происходило с объединением текста (как в таблицах Word) придется использовать макрос. Для этого откройте редактор Visual Basic  на вкладке Разработчик — Visual Basic (Developer — Visual Basic) или сочетанием клавиш Alt+F11, вставим в нашу книгу новый программный модуль (меню Insert — Module) и скопируем туда текст такого простого макроса:

Sub MergeToOneCell()
    Const sDELIM As String = " "     'символ-разделитель
    Dim rCell As Range
    Dim sMergeStr As String
    If TypeName(Selection) <> "Range" Then Exit Sub   'если выделены не ячейки - выходим
    With Selection
        For Each rCell In .Cells
            sMergeStr = sMergeStr & sDELIM & rCell.Text  'собираем текст из ячеек
        Next rCell
        Application.DisplayAlerts = False   'отключаем стандартное предупреждение о потере текста
        .Merge Across:=False                'объединяем ячейки
        Application.DisplayAlerts = True
        .Item(1).Value = Mid(sMergeStr, 1 + Len(sDELIM))    'добавляем к объед.ячейке суммарный текст
    End With
End Sub

Теперь, если выделить несколько ячеек и запустить этот макрос с помощью сочетания клавиш Alt+F8 или кнопкой Макросы на вкладке Разработчик (Developer — Macros), то Excel объединит выделенные ячейки в одну, слив туда же и текст через пробелы.

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

  • Делим текст на куски
  • Объединение нескольких ячеек в одну с сохранением текста с помощью надстройки PLEX
  • Что такое макросы, как их использовать, куда вставлять код макроса на VBA

В общем-то создаю программно Excel файл и записываю в него данные. Как объединить несколько ячеек в одну?

Вот так происходит создание и запись у меня:

    private void CreateExcelDocument()
    {
        excelApp = new Excel.Application();

        FileInfo fileInfo = new FileInfo(Application.StartupPath + "\" + DateTime.Now.Year.ToString() + " " + DateTime.Now.Month.ToString() + ".xlsx");

        if (fileInfo.Exists)
        {
            excelApp.Workbooks.Open(fileInfo.FullName);
            workSheet = (Excel.Worksheet)excelApp.ActiveSheet;
            curRow = workSheet.UsedRange.Rows.Count;
        }
        else
        {
            excelApp.Workbooks.Add();
            workSheet = (Excel.Worksheet)excelApp.ActiveSheet;
            curRow = 2;

            workSheet.Cells[1, 8] = "Общая";
            workSheet.Cells[1, 9] = "Общая";
            workSheet.Cells[1, 10] = "Общая";
            workSheet.Cells[1, 11] = "Общая";

            workSheet.Cells[1, 15] = "Общая";
            workSheet.Cells[1, 16] = "Общая";
            workSheet.Cells[1, 17] = "Общая";

            workSheet.Cells[2, 1] = "ФИО";
            workSheet.Cells[2, 2] = "Данные1";
            workSheet.Cells[2, 3] = "Данные2";
            workSheet.Cells[2, 4] = "Данные3";
            workSheet.Cells[2, 5] = "Данные4";
            workSheet.Cells[2, 6] = "Данные5";
            workSheet.Cells[2, 7] = "Данные6";

            workSheet.Cells[2, 8] = "Данные7";
            workSheet.Cells[2, 9] = "Данные8";
            workSheet.Cells[2, 10] = "Данные9";
            workSheet.Cells[2, 11] = "Данные10";

            workSheet.Cells[2, 12] = "Данные11";
            workSheet.Cells[2, 13] = "Данные12";
            workSheet.Cells[2, 14] = "Данные13";

            workSheet.Cells[2, 15] = "Данные14";
            workSheet.Cells[2, 16] = "Данные15";
            workSheet.Cells[2, 17] = "Данные16";
        }
    }

    private void SaveAndQuit()
    {
        try
        {
            excelApp.ActiveWorkbook.SaveAs(Application.StartupPath + "\" + DateTime.Now.Year.ToString() + " " + DateTime.Now.Month.ToString());
            excelApp.Quit();
        }
        catch (Exception e)
        {
            excelApp.Quit();
        }
    }

    private void WriteToExcel()
    {
        int i = 0;
        curRow++;

        i++;
        workSheet.Cells[curRow, i] = RashodMatTextBoxFamil.Text;
        ((Excel.Range)workSheet.Columns[i]).AutoFit();
        i++;    // 2
        workSheet.Cells[curRow, i] = label123.Text;
        ((Excel.Range)workSheet.Columns[i]).AutoFit();
        i++;    // 3
        workSheet.Cells[curRow, i] = label124.Text;
        ((Excel.Range)workSheet.Columns[i]).AutoFit();
        i++;    // 4
        workSheet.Cells[curRow, i] = label125.Text;
        ((Excel.Range)workSheet.Columns[i]).AutoFit();
        i++;    // 5
        workSheet.Cells[curRow, i] = label126.Text;
        ((Excel.Range)workSheet.Columns[i]).AutoFit();
        i++;    // 6
        workSheet.Cells[curRow, i] = label127.Text;
        ((Excel.Range)workSheet.Columns[i]).AutoFit();
        i++;    // 7
        workSheet.Cells[curRow, i] = label128.Text;
        ((Excel.Range)workSheet.Columns[i]).AutoFit();
        i++;    // 8
        workSheet.Cells[curRow, i] = label129.Text;
        ((Excel.Range)workSheet.Columns[i]).AutoFit();
        i++;    // 9
        workSheet.Cells[curRow, i] = label130.Text;
        ((Excel.Range)workSheet.Columns[i]).AutoFit();
        i++;    // 10
        workSheet.Cells[curRow, i] = label131.Text;
        ((Excel.Range)workSheet.Columns[i]).AutoFit();
        i++;    // 11
        workSheet.Cells[curRow, i] = label143.Text;
        ((Excel.Range)workSheet.Columns[i]).AutoFit();
        i++;    // 12
        workSheet.Cells[curRow, i] = label132.Text;
        ((Excel.Range)workSheet.Columns[i]).AutoFit();
        i++;    // 13
        workSheet.Cells[curRow, i] = label133.Text;
        ((Excel.Range)workSheet.Columns[i]).AutoFit();
        i++;    // 14
        workSheet.Cells[curRow, i] = label135.Text;
        ((Excel.Range)workSheet.Columns[i]).AutoFit();
        i++;    // 15
        workSheet.Cells[curRow, i] = label138.Text;
        ((Excel.Range)workSheet.Columns[i]).AutoFit();
        i++;    // 16
        workSheet.Cells[curRow, i] = label137.Text;
        ((Excel.Range)workSheet.Columns[i]).AutoFit();
        i++;    // 17
        workSheet.Cells[curRow, i] = label136.Text;
        ((Excel.Range)workSheet.Columns[i]).AutoFit();
    }

Объединить нужно ячейки H1-K1 и O1-Q1, подскажите как это делается программно. Буду очень благодарен

Хитрости »

5 Август 2013              151234 просмотров


Сцепить много ячеек с указанным разделителем

Часто бывает ситуация, когда необходимо из трех разных столбцов сцепить данные в одну строку с разделителем. Допустим в А1 Фамилия, в В1Имя, в С1Отчество, а надо получить все вместе Фамилия Имя Отчество. Как обычно в Excel объединяют значения нескольких ячеек в одну? Правильно, при помощи функции СЦЕПИТЬ или при помощи амперсанда:
=СЦЕПИТЬ(A1;» «;B1;» «;C1;» «)
=A1&» «&B1&» «&C1&» «
Это достаточно эффективно, если необходимо сцепить значения из трех-пяти ячеек. А если ячеек 50? Или того больше? Не очень удобно объединять их все описанными выше способами. А других встроенных функций в Excel для подобных операций не существует. С момента написания статьи Microsoft порадовал нас новыми функциями и теперь в составе функций есть функция ОБЪЕДИНИТЬ(TEXTJOIN), которая способна решить задачу без лишних телодвижений.
=ОБЪЕДИНИТЬ(«, «;ИСТИНА;A2:A100)
=TEXTJOIN(«, «,TRUE,A2:A100)

    Разделитель(«, «) — разделитель, с которым объединять текст из указанных ячеек
    Пропускать пустые(ИСТИНА) — указывает пропускать ли пустые ячейки. Т.е. если указано ИСТИНА или 1(а так же если аргумент вовсе не указан) — пустые ячейки будут пропускаться и не попадут в общую строку сцепки. Если указано ЛОЖЬ — сцепляться будут все ячейки, независимо от их содержимого. Например, если указать три ячейки A1:A3 в которых А2 пустая, то при указании ИСТИНА результат будет таким: «один, два». Если указать ЛОЖЬ, то пустая ячейка тоже попадет в сцепку: «один, , два».
    Так же этот аргумент удобен, если неизвестен заранее размер диапазона сцепления. Можно указать ячейки чуть с запасом(A1:A300) и тогда сцепляться будут только ячейки заполненного диапазона.
    Текст(A2:A100) — указывается непосредственно диапазон либо текст для сцепления. Этот аргумент расширяемый — т.е. можно указать не один диапазон, а несколько или просто текст: =ОБЪЕДИНИТЬ(«, «;ИСТИНА;A2:A100;B2:B70;»текст»)

Правда и здесь не все так радужно: эта функция доступна только пользователям версий 2019 и выше, а так же офиса 365.


Поэтому я написал функцию пользователя, которая сцепляет данные из указанных ячеек в одну строку и использовать её можно в любой версии офиса. Чем отличается от стандартной функции СЦЕПИТЬ()? Тем, что в качестве ячеек для сцепки указывается не каждая из ячеек по очереди, а сразу весь диапазон с возможностью указания разделителя между значениями каждой ячейки. Так же, в функции сразу заложен алгоритм пропуска пустых ячеек и возможность сцеплять исключительно уникальные значения — т.е. в результате будут сцепляться только те ячейки, значения которых ранее еще не были добавлены в сцепку.

Option Explicit
'---------------------------------------------------------------------------------------
' Procedure : СцепитьМного
'             http://www.excel-vba.ru
' Purpose   : Функция сцепляет все указанные ячейки в одну с указанным разделителем.
' Аргументы функции:
' Диапазон    — диапазон ячеек, значения которых необходимо объединить в строку.
' Разделитель — необязательный аргумент.
'               Один или несколько символов, которые будут вставлены между каждым словом.
'               По умолчанию пробел.
' БезПовторов — необязательный аргумент.
'               Если указан как ИСТИНА или 1 — в результирующей строке будут значения без дубликатов.
'               Для английской локализации данный параметр указывается как TRUE и FALSE соответственно.
'---------------------------------------------------------------------------------------
Function СцепитьМного(Диапазон As Range, Optional Разделитель As String = " ", Optional БезПовторов As Boolean = False)
    Dim avData, lr As Long, lc As Long, sRes As String
    Dim oDict As Object, sTmpStr
    Set oDict = CreateObject("Scripting.Dictionary")
    oDict.comparemode = 1
 
    avData = Диапазон.Value
    If Not IsArray(avData) Then
        СцепитьМного = avData
        Exit Function
    End If
 
    For lc = 1 To UBound(avData, 2)
        For lr = 1 To UBound(avData, 1)
            If Len(avData(lr, lc)) Then
                sRes = sRes & Разделитель & avData(lr, lc)
                If БезПовторов Then
                    If Not oDict.exists(avData(lr, lc)) Then
                        oDict.Add avData(lr, lc), 0&
                    End If
                End If
            End If
        Next lr
    Next lc
    If Len(sRes) Then
        sRes = Mid(sRes, Len(Разделитель) + 1)
    End If
 
    If БезПовторов Then
        sRes = ""
        sTmpStr = oDict.keys
        For lr = LBound(sTmpStr) To UBound(sTmpStr)
            sRes = sRes & IIf(sRes <> "", Разделитель, "") & sTmpStr(lr)
        Next lr
    End If
    СцепитьМного = sRes
End Function

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

Синтаксис функции:
=СцепитьМного(A2:A100;», «;ИСТИНА)

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

Скачать пример

  СцепитьМного.xls (52,5 KiB, 11 996 скачиваний)


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

Option Explicit
'---------------------------------------------------------------------------------------
' Procedure : СцепитьМного
'             http://www.excel-vba.ru
' Purpose   : Функция сцепляет все указанные ячейки в одну с указанным разделителем. Допускается указание несмежных диапазонов
' Аргументы функции:
' Диапазон    — диапазон ячеек, значения которых необходимо объединить в строку.
' Разделитель — необязательный аргумент.
'               Один или несколько символов, которые будут вставлены между каждым словом.
'               По умолчанию пробел.
' БезПовторов — необязательный аргумент.
'               Если указан как ИСТИНА или 1 — в результирующей строке будут значения без дубликатов.
'               Для английской локализации данный параметр указывается как TRUE и FALSE соответственно.
'---------------------------------------------------------------------------------------
Function СцепитьМного(диапазон As Range, Optional разделитель As String = " ", Optional БезПовторов As Boolean = False)
    Dim avData, lr As Long, lc As Long, sRes As String
    Dim ra As Range
 
    For Each ra In диапазон.Areas
      avData = ra.Value
      If Not IsArray(avData) Then
          ReDim avData(1 To 1, 1 To 1)
          avData(1, 1) = ra.Value
      End If
 
      For lc = 1 To UBound(avData, 2)
          For lr = 1 To UBound(avData, 1)
              If Len(avData(lr, lc)) Then
                  sRes = sRes & разделитель & avData(lr, lc)
              End If
          Next lr
      Next lc
    Next
    If Len(sRes) Then
        sRes = Mid(sRes, Len(разделитель) + 1)
    End If
 
    If БезПовторов Then
        Dim oDict As Object, sTmpStr
        Set oDict = CreateObject("Scripting.Dictionary")
        sTmpStr = Split(sRes, разделитель)
        On Error Resume Next
        For lr = LBound(sTmpStr) To UBound(sTmpStr)
            oDict.Add sTmpStr(lr), sTmpStr(lr)
        Next lr
        sRes = ""
        sTmpStr = oDict.Keys
        For lr = LBound(sTmpStr) To UBound(sTmpStr)
            sRes = sRes & IIf(sRes <> "", разделитель, "") & sTmpStr(lr)
        Next lr
    End If
    СцепитьМного = sRes
End Function

Однако в таком случае слегка изменится и синтаксис — такие диапазоны обязательно надо будет записывать в скобках:
Синтаксис функции:
=СцепитьМного((A2:A100;F4:F60;Y2:Z43);», «;ИСТИНА)
Иначе функция просто не сработает и выдаст ошибку #ЗНАЧ!(#VALUE!)


И еще одна реализация — в ней допускается указывать не только отдельные диапазоны, но и вообще все что угодно(ячейки, отдельный текст, числа и т.п.). Единственная проблема — в этой функции иначе организован порядок аргументов: сначала указывается разделитель, а уже потом значения для сцепления. Более подробно эта функция рассмотрена в статье Что такое функция пользователя(UDF)?. Так же эта функция не убирает дубли, что впрочем, не так сложно добавить, ориентируясь на функции выше.

Function ОбъединитьВсеСРазделителем(Разделитель As String, ParamArray Значения()) As String
    Dim result As String, arg, x, rc As Range
    For Each arg In Значения
        Select Case TypeName(arg)
        Case "Range"                     'это диапазон
            'цикл по всем ячейкам
            For Each rc In arg.Cells
                If result = "" Then
                    result = rc.Value
                Else
                    result = result & Разделитель & rc.Value
                End If
            Next
        Case "Variant()"                 'это произвольный массив({"а";"б";"в"})
            'цикл по всем ячейкам
            For Each x In arg
                If result = "" Then
                    result = x
                Else
                    result = result & Разделитель & x
                End If
            Next
        Case Else 'это любой другой тип
            'суммируем
            If result = "" Then
                result = arg
            Else
                result = result & Разделитель & arg
            End If
        End Select
    Next
    ОбъединитьВсеСРазделителем = result
End Function

Также см.:
Сцепить_МН
Как сцепить несколько значений в одну ячейку по критерию? СцепитьЕсли
Что такое функция пользователя(UDF)?


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

  Плейлист   Видеоуроки


Поиск по меткам



Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика

I have a database which contains 5 tables. Each table contains 24 rows and each row contains 4 columns.

I want to display these records in Excel sheet. The heading of each table is the name of the table, but I am unable to merge the columns for heading.

Please help me.

Philip Morton's user avatar

asked Feb 10, 2009 at 12:58

Using the Interop you get a range of cells and call the .Merge() method on that range.

eWSheet.Range[eWSheet.Cells[1, 1], eWSheet.Cells[4, 1]].Merge();

answered Feb 10, 2009 at 13:10

C. Ross's user avatar

C. RossC. Ross

30.8k42 gold badges145 silver badges235 bronze badges

2

oSheet.get_Range("A1", "AS1").Merge();

C. Ross's user avatar

C. Ross

30.8k42 gold badges145 silver badges235 bronze badges

answered Feb 6, 2013 at 4:30

Imamul Karim Tonmoy's user avatar

Excel.Application xl = new Excel.ApplicationClass();

Excel.Workbook wb = xl.Workbooks.Add(Excel.XlWBATemplate.xlWBATWorkshe et);

Excel.Worksheet ws = (Excel.Worksheet)wb.ActiveSheet;

ws.Cells[1,1] = "Testing";

Excel.Range range = ws.get_Range(ws.Cells[1,1],ws.Cells[1,2]);

range.Merge(true);

range.Interior.ColorIndex =36;

xl.Visible =true;

Шыназ Алиш's user avatar

Шыназ Алиш

4012 gold badges6 silver badges23 bronze badges

answered Jul 13, 2015 at 9:05

Ahmad naser's user avatar

1

Code Snippet

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private Excel.Application excelApp = null;
    private void button1_Click(object sender, EventArgs e)
    {
        excelApp.get_Range("A1:A360,B1:E1", Type.Missing).Merge(Type.Missing);
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        excelApp = Marshal.GetActiveObject("Excel.Application") as Excel.Application ;
    }
}

Thanks

Mo Patel's user avatar

Mo Patel

2,3014 gold badges22 silver badges37 bronze badges

answered Aug 25, 2009 at 10:55

You can use Microsoft.Office.Interop.Excel:

worksheet.Range[worksheet.Cells[rowNum, columnNum], worksheet.Cells[rowNum, columnNum]].Merge();

You can also use NPOI:

var cellsTomerge = new NPOI.SS.Util.CellRangeAddress(firstrow, lastrow, firstcol, lastcol);
_sheet.AddMergedRegion(cellsTomerge);

answered Jul 28, 2016 at 11:26

Sobhan's user avatar

SobhanSobhan

7461 gold badge9 silver badges31 bronze badges

This solves the issue in the appropriate way

// Merge a row
            ws.Cell("B2").Value = "Merged Row(1) of Range (B2:D3)";
            ws.Range("B2:D3").Row(1).Merge();

answered Apr 8, 2016 at 17:55

Shalin Jirawla's user avatar

Shalin JirawlaShalin Jirawla

4791 gold badge5 silver badges24 bronze badges

You can use NPOI to do it.

Workbook wb = new HSSFWorkbook();
Sheet sheet = wb.createSheet("new sheet");

Row row = sheet.createRow((short) 1);
Cell cell = row.createCell((short) 1);
cell.setCellValue("This is a test of merging");

sheet.addMergedRegion(new CellRangeAddress(
        1, //first row (0-based)
        1, //last row  (0-based)
        1, //first column (0-based)
        2  //last column  (0-based)
));

// Write the output to a file
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.close();

answered Aug 2, 2016 at 17:11

Ana Carolina Manzan's user avatar

Try it.

ws.Range("A1:F2").Merge();

answered May 18, 2019 at 1:35

Ly Thanh Ngo's user avatar

Ly Thanh NgoLy Thanh Ngo

3841 gold badge2 silver badges15 bronze badges

1

take a list of string as like

List<string> colValListForValidation = new List<string>();

and match string before the task. it will help you bcz all merge cells will have same value

answered Mar 17, 2015 at 14:01

Vipswelt's user avatar

VipsweltVipswelt

3451 gold badge2 silver badges6 bronze badges

Worksheet["YourRange"].Merge();

Adam's user avatar

Adam

4,3671 gold badge34 silver badges49 bronze badges

answered Apr 12, 2017 at 14:57

Subha8's user avatar

2

using Excel = Microsoft.Office.Interop.Excel;
// Your code...
yourWorksheet.Range[yourWorksheet.Cells[rowBegin,colBegin], yourWorksheet.Cells[yourWorksheet.rowEnd, colEnd]].Merge();

Row and Col start at 1.

answered Dec 27, 2019 at 23:47

Nguyen Van Thanh's user avatar

My simple solution would be with .Merge() method.

  • X — cell letter
  • Y — cell number
ws.Range["XY:XY"].Merge();

answered Jan 12 at 8:25

Ivan Sambol's user avatar

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

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

Как объединить текст (значения) ячеек при помощи формул?

Стандартное средство Excel для объединения значений нескольких ячеек в одной ячейке — это функция «СЦЕПИТЬ», позволяющая объединять до 255 текстовых значений в одно. Объединяемые элементы могут быть как текстовыми, так и числовыми, а также ссылками на ячейки или сочетанием этих элементов. Функция «СЦЕПИТЬ» находится в категории «Текстовые», вызвать ее можно как через мастер функций, так и через вкладку «Формулы», которая находится на ленте Excel 2007 и выше.

Если ячейка A1 листа содержит имя человека, в ячейке B1 содержится его отчество, а в ячейке C1 — фамилия, объединить эти три значения в отдельной ячейке можно с помощью следующей формулы:

=СЦЕПИТЬ(A1,» «,B1,» «,C1)

Для объединения текстовых элементов вместо функции «СЦЕПИТЬ» можно также использовать оператор & (амперсанд). Например, формула

=A1 & B1 & C1

возвращает то же значение, что и вышеописанная формула.

Как найти все объединенные ячейки и разъединить их

Чтобы разъединить все ячейки и удалить объединенные, достаточно выполнить следующие действия:

  1. Выделить все ячейки на листе. Это можно сделать путем нажатия сочетания клавиш Ctrl + A или кликнуть на черный треугольник между заголовками строк и столбцов на листе.
  2. Нажать на команду Главная -> Выравнивание -> Объединить и поместить в центре если она выделена. Если же она не выделена, значит выбранный лист не содержит объединенных ячеек.

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

  1. Откройте окно Найти и заменить. Сделать это можно сочетанием клавиш Ctrl + F.
  2. Поле Найти оставьте пустым и нажмите на кнопку Параметры.
  3. Должна отобразиться кнопка Формат. Нажмите левой кнопкой мыши по ней.

    Поиск объединенных ячеек

  4. В диалоговом окне Найти формат на вкладке Выравнивание выберите опцию Объединение ячеек. Далее нажмите Ok.

    Диалоговое окноНайти формат

  5. В диалоговом окне Найти и заменить нажмите Найти далее или Найти все в зависимости от вашей дальнейшей задачи.

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

Sub obedinenie_teksta() ‘ Объединение текста ячеек выделенного диапазона Dim iCell As Range Dim Str As String For Each iCell In Selection Str = Str & iCell.Value Next iCell ‘Вывод объединенного текста в ячейку «A1» Range(«A1») = Str ‘Вывод объединенного текста в сообщение MsgBox Str End Sub

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

Sub obedinenie_teksta_s_razdelitelyami() ‘Объединение текста в ячейках выделенного диапазона с использованием разделителя Dim i As Long Dim Str As String Dim Razdelitel As String Razdelitel = «;» Str = Selection.Cells(1) For i = 2 To Selection.Cells.Count Str = Str & Razdelitel & Selection.Cells(i).Value Next i ‘Вывод объединенного текста в ячейку «A1» Range(«A1») = Str ‘Вывод объединенного текста в сообщении MsgBox Str End Sub

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

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

Предположим, у вас есть столбцы с данными и вам нужно объединить данные в один столбец, как показано на скриншоте ниже.

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

  1. Выберите ячейку, где вы хотите разместить комбинированный текст.
  2. В выбранную ячейку введите формулу со своими значениями “=А1&В1&С1” , “=А1&» «&В1&» «&С1” или =СЦЕПИТЬ(B3;» «;C3).
  3. После ввода формулы нужно нажать на клавишу «Enter», для применения формулы.

Объединить столбцы данных без пробелов между данными: =А1&В1&С1&…

Объединить столбцы данных с пробелами между данными: =А1&» «&В1&» «&С1&…

Объединить столбцы данных с пробелами между данными: =СЦЕПИТЬ(B3;» «;C3).

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

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

  • Если диапазон содержит объединенные ячейки, то пользоваться сортировкой и фильтрацией в этом диапазоне будет невозможно.
  • Также невозможно будет преобразовать такой диапазон в таблицу (форматировать как таблицу).
  • Также можно забыть об автоматическом выравнивании ширины или высоты ячейки. Например если имеется объединенная ячейка A1:B1, то выравнять ширину столбца A уже не получится.
  • Если Вы пользуетесь горячими клавишами для навигации, например переходите в начало и конец таблицы путем сочетания клавиш Ctrl + стрелка вверх и вниз, то переход не удастся, и курсор будет “упираться” в объединенные ячейки.
  • Если вы выделяете столбцы (или строки) с помощью горячих клавиш Ctrl (Shift) +Пробел, то при наличии объединенных ячеек, вы не сможете выделить 1 столбец (или строку).

Как объединить диапазон.

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

Чтобы интегрировать несколько ячеек, скажем, от А1 до А4, вам понадобится что-то подобное:

=СЦЕПИТЬ(A1; A2; A3; A4)

или

=A1 & A2 & A3 & A4

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

Метод 1. Используем клавишу CTRL.

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

  1. Выберите куда вы хотите ввести формулу.
  2. Введите =СЦЕПИТЬ( в строке формул.
  3. Нажмите и удерживайте Ctrl и одновременно щелкните по каждой клетке, которые вы хотите слить вместе.
  4. Отпустите Ctrl и введите закрывающую скобку. Нажмите ENTER.

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

Способ 2. Используйте ТРАНСП

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

В этом случае лучше использовать функцию ТРАНСП (TRANSPOSE в английской версии) для возврата массива, а затем заменить его ссылками одним махом.

  1. Там, где вы хотите вывести объединенный диапазон, запишите:

=ТРАНСП(A1:A10)

  1. На панели формул нажмите клавишу F9, чтобы заменить выражение результатом вычисления. В результате у вас будет массив чисел для объединения.
  2. Удалите фигурные скобки, окружающие значения массива.

  1. Введите = СЦЕПИТЬ (перед первым значением), затем введите закрывающую скобку после последнего и нажмите Enter.

Замечание. Какой бы метод вы ни использовали, объединенное значение в С1 является текстом (обратите внимание на выравнивание по левому краю), даже если каждое из исходных значений является числом. Это связано с тем, что СЦЕПИТЬ всегда возвращает текстовую фразу независимо от типа данных источника.

Удаление

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

Удалить соединение

Также можно перейти в раздел «Формат ячеек» через контекстное меню, как это было описано в начале статьи и убрать галочку у строки «объединение ячеек».

Формат ячеек

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

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

Виды объединения

У работающего в табличном редакторе Эксель пользователя время от времени появляется необходимость в объединении столбцов в документе. Для кого-то это будет несложной задачей, которую удастся решить посредством одного нажатия клавиши мыши, для других это станет затруднительным вопросом. Все способы объединения столбцов в Эксель возможно распределить на 2 группы, отличающиеся по принципу осуществления. Некоторые предполагают применение инструментов форматирования, остальные используют функции редактора. Когда речь идет о простоте осуществления задачи, то бесспорным лидером станет непосредственно 1 группа. Однако не в каждом случае, применяя настройки форматирования, возможно достичь требуемых результатов.

Способ 1: объединение через окно форматирования

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

  • Чтобы выделить строчки, которые необходимо объединить, возможно воспользоваться 2 приемами. Первый: зажимаем ЛКМ и проводим по строчкам – произойдет выделение.

  • Второй: на этой панели также кликаем ЛКМ по начальному строчному элементу, подлежащему объединению. Далее – по крайней строчке, в это время необходимо зажать «Shift». Выделяется весь промежуток, который расположен между этих 2-х секторов.

  • Когда требуемый промежуток отмечен, можно начать процесс группирования. В этих целях кликается ПКМ в любом месте указанного диапазона. Появляется меню, после чего открывается раздел «Формат ячеек».

  • После необходимо выполнить активацию меню форматирования. Нужно открыть раздел «Выравнивание». Далее в «Отображение» устанавливается отметка возле показателя «Объединение ячеек». После нажимается клавиша «OK» внизу окна.

  • Затем отмеченные строчные элементы объединяются. Само объединение элементов произойдет по всему документу.

Внимание! Для достижения необходимого результата могут использоваться иные способы перехода на окно с форматированием. К примеру, после выделения строк требуется открыть меню «Главная», а затем кликнуть «Формат», находящийся в блоке «Ячейки». Во всплывающем перечне находится «Формат ячеек…».

Также переход в подобное окно возможен с помощью нажатия сочетания горячих кнопок «Ctrl+1», если выделены требуемые элементы. Однако этой ситуации переход осуществляется в ту вкладку «Формат ячеек», что была посещена последней.

При различных иных вариантах перехода последующие операции по группировке строчных элементов проводятся в соответствии с вышеописанным алгоритмом.

Способ 2: использование инструментов на ленте

Кроме того, объединить строки возможно с помощью клавиши на ленте инструментов.

  • Изначально выделяем необходимые строки. Далее нужно переместиться в меню «Главная» и щелкнуть на «Объединить и поместить в центре». Клавиша размещена в разделе «Выравнивание».

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

  • Выделяются строки, которые требуется объединить. Открывается вкладка «Главная», щелкается треугольник, расположенный с правой стороны от «Объединить и поместить в .

  • Готово! Строки объединились в одну.

Способ 3: объединение строк внутри таблицы

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

  • Выделяются элементы строк в документе, которые необходимо объединить. Это возможно осуществить 2 методами. Первый – зажимается ЛКМ и обводится курсором весь участок, который нужно выделить.

  • Второй метод будет удобным в процессе объединения в 1 строку значительного массива информации. Требуется нажать сразу по начальному элементу объединяемого промежутка, а после, удерживая «Shift», – по нижнему справа. Возможно поменять распорядок действий, эффект будет тот же.

  • Когда выделение проведено, следует перейти посредством одного из вышеуказанных методов в окно форматирования. В нем производятся аналогичные действия. Затем строки в пределах документа объединяются. Сохранены будут лишь те сведения, которые расположены слева вверху.

  • Выделяются требуемые строки в документе одним из вышеуказанных вариантов. Далее во вкладке «Главная» кликается «Объединить и поместить в центре».

  • Либо щелкается треугольник, находящийся слева от клавиши, с дальнейшим кликом по «Объединить ячейки».

  • Группирование осуществляется в соответствии с тем типом, который выбран юзером.

Способ 4: объединение информации в строках без потери данных

Вышеуказанные способы группирования предполагают, что по окончании процедуры уничтожаются все сведения в обрабатываемых элементах, кроме размещенных в верхнем левом элементе диапазона. Однако в ряде случаев необходимо без потерь группировать значения, находящиеся в различных элементах документа. Это возможно осуществить посредством крайне удобной функции СЦЕПИТЬ. Подобную функцию относят к классу операторов текста. Она используется в целях группировки нескольких строк в 1 элемент. Синтаксис подобной функции выглядит так: =СЦЕПИТЬ(текст1;текст2;…).

Важно! Аргументы блока «Текст» являются отдельным текстом либо ссылками на элементы, где он находится. Последнее свойство применяется для осуществления разрешаемой задачи. Возможно использовать 255 подобных аргументов.

У нас есть таблица, где указывается список компьютерной техники со стоимостью. Задачей будет объединение всех данных, находящихся в графе «Устройство», в 1 строчный элемент без потерь.

  • Ставим курсор в любом месте документа, где выводится результат, и нажимаем «Вставить функцию».

  • Запускаем «Мастер функций». Необходимо перейти в блок «Текстовые». Затем находим и выделяем «СЦЕПИТЬ», после чего нажимаем клавишу «OK».

  • Появится окно с настройками функции «СЦЕПИТЬ». По количеству аргументов возможно воспользоваться 255 формами с именем «Текст», однако для разрешения такой задачи потребуется то количество строчек, которое есть в таблице. В конкретной ситуации их 6. Устанавливаем указатель в «Текст1» и, зажав ЛКМ, нажимаем начальный элемент, который содержит наименование товара в столбике «Устройство». Затем адрес объекта отображается в поле окна. Аналогично вносятся адреса следующих элементов в поля «Текст2»-«Текст6». Далее, когда адреса объектов отображены в полях, кликаем клавишу «OK».

  • Всю информацию функция выводит 1 строчкой. Однако, как можно заметить, между наименований разнообразных товаров пробела нет, что противоречит основным условиям задачи. Чтобы проставить пробел между наименований разных товаров, выделяем элемент, включающий формулу, и жмем «Вставить функцию».

  • Запустится окно аргументов. Во всех фреймах появившегося окна, помимо последнего, дописываем: &» «
  • Рассматриваемое выражение выступает в качестве знака пробела для функции «СЦЕПИТЬ». Потому в 6 поле вписывать его нет нужды. Когда процедура проведена, жмется клавиша «OK».

  • Далее можно заметить, что вся информация размещается в 1 строчке, а также разделяется пробелом.

  • Устанавливаем символ «=» в строку, где выводится результат. Щелкаем по начальному полю в столбце. Когда адрес будет отображен в строке формул, набираем такое выражение: &» «&

Затем кликаем 2-й элемент в столбце и снова вводим указанное выражение. Подобным способом будут обработаны оставшиеся ячейки, сведения в которых должны быть помещены в 1 строчку. В конкретной ситуации получится следующее выражение: =A4&» «&A5&» «&A6&» «&A7&» «&A8&» «&A9.

  • Чтобы вывести результат на монитор, нажимаем «Enter».

Способ 5: группировка

Помимо этого, возможно группировать строчки без утраты их структуры. Алгоритм действий.

  • Изначально выделяются смежные строки, которые требуется объединить. Возможно выделить обособленные элементы в строчках, а не всю ее целиком. Затем рекомендуется перейти в раздел «Данные». Нажимаем кнопку «Группировать», расположенную в блоке «Структура». В появившемся перечне из 2-х позиций выбираем «Группировать…».

  • Затем необходимо открыть небольшое окно, где выбирается, что непосредственно должно быть сгруппировано: строчки либо столбцы. Поскольку нужно группировать строки, то ставим переключатель в требуемое положение и жмем «OK».

  • Когда действие выполнено, указанные смежные строчки будут сгруппированы. Чтобы была спрятана группа, нужно кликнуть на иконку «минус», находящаяся по левую сторону от панели координат.

  • Чтобы вновь были показаны объединенные строки, требуется кликнуть символ «+» появившийся там, где раньше был знак «-».

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

Надстройка XLTools «Объединить данные» позволяет задать любой разделитель меужду значениями в объединённой текстовой строке:

  • Запятая
  • Запятая и пробел
  • Точка с запятой
  • Точка с запятой и пробел
  • Пробел
  • Новая строка
  • Или выберитеДругойи задайте свой знак разделителя, напр., вертикальную черту

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

  1. Выберите диапозон Нажмите кнопкуОбъединить данныена вкладке XLTools.
  2. ВыберитеОбъединить данные: по столбцам.
  3. Задайте подходящий разделитель.
  4. Установите флажокОбъединить ячейки после слияния данных.
  5. При необходимости отметьте дополнительные опции:
      Пропустить пустые ячейки, если они есть в выбранном диапазоне, чтобы избежать пустых значений в объединённых строках.
  6. Переносить текст по словам, чтобы переносить текст в ячейке.
  7. Нажмите ОК Готово. Все ячейки и их значения объединены по столбцам.

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

  1. Выберите диапозон Нажмите кнопкуОбъединить данныена вкладке XLTools.
  2. ВыберитеОбъединить данные: по строкам.
  3. Задайте подходящий разделитель.
  4. Установите флажокОбъединить ячейки после слияния данных.
  5. При необходимости отметьте дополнительные опции:
      Пропустить пустые ячейки, если они есть в выбранном диапазоне, чтобы избежать пустых значений в объединённой строке.
  6. Переносить текст по словам, чтобы переносить текст в ячейке.
  7. Нажмите ОК Готово. Все ячейки и их значения объединены по строкам.

Как сцепить ячейки без потери текста с помощью символа “&”

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

Для сцепки ячеек с текстом “Фамилия”, “Имя”, “Отчество” нужно в новой ячейке вставить формулу:

=A1&” “&A2&” “&A3

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

Если результат сцепки вас устраивает, то важно его зафиксировать как значения. Для этого скопируйте и вставьте полученные данные как значения с помощью клавиш Ctrl + C (копировать) и Ctrl + V (вставить):

Альтернативы использования объединенных ячеек

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

  1. Выделите диапазон ячеек, который хотите отцентрировать. При этом сам текст должен содержаться в левой верхней ячейке.
  2. Выберите команду формат ячеек или нажмите сочетание клавиш Ctrl + 1.
  3. В диалоговом окне Формат ячеек перейдите на вкладку Выравнивание.
  4. В выпадающем списке выравнивания по горизонтали выберите значение по центру выделения и нажмите OK.

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

Все способы можно скачать нажав кнопку вначале статьи.

Источник: micro-solution.ru

С помощью макроса

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

Чтобы записать макрос:

  1. В разделе «Разработчик» в графе «Код» нажмите на клавишу «Записать макрос».
  2. В появившемся окне выберите имя макроса, чтобы потом было удобнее его искать, присвойте ему сочетание клавиш и место хранения, добавьте описание.
  3. Нажмите «Ок», затем точно и без ошибок (потому что макрос записывает и ошибки тоже) проделайте алгоритм.
  4. Вернитесь во вкладку «Разработчик» и «Код» и нажмите «Остановить запись».

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

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

  • Как объединить ячейки в excel быстрые клавиши
  • Как объединить ячейки в excel без потери формул
  • Как объединить ячейки в excel без потери текста в одну ячейку в таблице excel
  • Как объединить ячейки в excel без потери содержимого в excel
  • Как объединить ячейки в excel без потери данных через

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

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