Ячейки слияния Vba Excel

Обновлено: 23.11.2024

В VBA есть метод MERGE, который можно использовать для объединения диапазона ячеек или даже нескольких диапазонов в один. Этот метод имеет необязательный аргумент «Across». Если вы укажете TRUE, каждая строка в диапазоне будет объединена отдельно, а если вы укажете FALSE, будет объединен весь диапазон как один.

И если вы хотите объединить строки по всему диапазону, вы можете использовать TRUE для аргумента.

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

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

Точно так же вы можете ссылаться на книгу, указав имя книги.

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

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

Объединить текст, а затем объединить

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

В Excel, чтобы объединить несколько ячеек или диапазонов и сделать их одной единственной ячейкой, используется метод Range.Merge. В этой статье мы покажем вам, как объединить несколько ячеек в Excel с помощью VBA.

Скачать книгу

Вы можете скачать бесплатную практическую рабочую тетрадь Excel отсюда.

Метод Range.Merge в Excel

Создать объединенные ячейки из нескольких указанных ячеек.

Диапазон(ваш_диапазон).Объединить(поперек)

Значение по умолчанию — False. Если вы хотите объединить ячейки в каждой строке указанного диапазона как отдельные объединенные ячейки, установите значение True.

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

9 методов объединения ячеек в Excel с помощью VBA

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

1. Внедрение VBA для объединения ячеек в Excel

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

Шаги:

  • Нажмите Alt + F11 на клавиатуре или перейдите на вкладку "Разработчик" -> Visual Basic, чтобы открыть редактор Visual Basic.

  • Во всплывающем окне кода в строке меню выберите Вставить -> Модуль.

  • Скопируйте следующий код и вставьте его в окно кода.

Теперь ваш код готов к запуску.

  • Нажмите клавишу F5 на клавиатуре или в строке меню выберите «Выполнить» -> «Выполнить подчиненную/пользовательскую форму». Вы также можете просто нажать на маленький значок воспроизведения в строке подменю, чтобы запустить макрос.

Вы увидите, что ячейки B5 и C5 объединились и стали одной ячейкой.

2. Реализовать макрос для объединения строк в Excel

Здесь вы увидите, как объединять строки в Excel с макросом VBA. Мы объединим строки с 7 по 9 с помощью VBA из приведенного примера.

Шаги по объединению строк с помощью VBA показаны ниже.

Шаги:

  • Так же, как и раньше, откройте редактор Visual Basic на вкладке "Разработчик" и вставьте модуль в окно кода.
  • В окне кода скопируйте следующий код и вставьте его.

Теперь ваш код готов к запуску.

  • Так же, как и раньше, запустите код, и вы получите строки 7, 8 и 9 в виде объединенной строки.

3. Макрос VBA для объединения столбцов в Excel

В предыдущем разделе вы видели, как объединять строки; в этом разделе вы узнаете, как объединять столбцы с помощью VBA в Excel. Мы объединим столбцы B и C из показанного ниже набора данных.

Шаги по объединению столбцов в Excel с VBA показаны ниже.

Шаги:

  • Аналогичным образом откройте редактор Visual Basic на вкладке "Разработчик" и вставьте модуль в окно кода.
  • В окне кода скопируйте следующий код и вставьте его.

Теперь ваш код готов к запуску.

  • Запустите код, и столбцы, которые вы хотели объединить, будут объединены после выполнения кода.

4. Вставка макроса VBA для объединения ячеек на основе значения ячейки

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

Шаги по объединению ячеек на основе значения ячейки с помощью VBA приведены ниже.

Шаги:

  • Откройте редактор Visual Basic на вкладке "Разработчик" и вставьте модуль в окно кода.
  • В окне кода скопируйте следующий код и вставьте его.

Теперь ваш код готов к запуску.

  • FirstRow = 5 -> Наш набор данных начался со строки 5.
  • iColumn = 2 ->Column B, столбец, который содержит значение в нашем случае.
  • FirstColumn = 2 ->Column B, первый столбец в нашем наборе данных.
  • LastColumn = 5 -> Мы объединимся до столбца E.
  • iValue = «Алистер Кук» -> Установите значение ячейки.
  • Установите iWorksheet = Worksheets("Значение ячейки") -> имя рабочего листа для нашего набора данных.
  • Запустите этот код и обратите внимание, что ячейка, в которой хранится имя «Алистер Кук», теперь объединена со столбцом E.

5. Объединить текст и ячейки с помощью VBA в Excel

До сих пор мы объединяли только ячейки в Excel. Но что, если вы хотите объединить не только ячейки, но и текст внутри них.

В нашем случае мы объединим все тексты из ячеек B5 в B12, а затем также объединим ячейки.

Шаги по объединению текста и ячеек с помощью макроса VBA приведены ниже.

Шаги:

  • Откройте редактор Visual Basic на вкладке "Разработчик" и вставьте модуль в окно кода.
  • В окне кода скопируйте следующий код и вставьте его.

Теперь ваш код готов к запуску.

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

Похожие чтения

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

6. VBA для объединения ячеек по горизонтали и выравнивания содержимого ячеек по центру

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

Из приведенного выше набора данных мы объединим ячейку от B8 до E8 по горизонтали и выровняем содержимое ячейки — «Алистер Кук» — по центру.

Действия для этого описаны ниже.

Шаги:

  • Откройте редактор Visual Basic на вкладке "Разработчик" и вставьте модуль в окно кода.
  • В окне кода скопируйте следующий код и вставьте его.

Теперь ваш код готов к запуску.

  • Запустите код и обратите внимание, что ячейки, которые мы предоставили внутри кода, теперь объединены по горизонтали, а содержимое ячейки «Алистер Кук» теперь выровнено по центру.

7. Макрос VBA для объединения ячеек по вертикали и выравнивания содержимого ячеек по центру

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

Давайте посмотрим, как объединить ячейки от B5 до B8 по вертикали из нашего набора данных и поместить содержимое — «Джо Рут» — в центр.

Шаги:

  • Откройте редактор Visual Basic на вкладке "Разработчик" и вставьте модуль в окно кода.
  • В окне кода скопируйте следующий код и вставьте его.

Теперь ваш код готов к запуску.

  • Запустите код и обратите внимание, что ячейки, которые мы предоставили внутри кода, теперь объединены по вертикали, а содержимое ячейки "Джо Рут" теперь выровнено по центру.

8. Внедрение VBA для объединения ячеек по всему диапазону в Excel

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

Давайте посмотрим на код объединения ячеек от B7 в той же строке до E7 в Excel.

Шаги:

  • Откройте редактор Visual Basic на вкладке "Разработчик" и вставьте модуль в окно кода.
  • В окне кода скопируйте следующий код и вставьте его.

Теперь ваш код готов к запуску.

  • Запустите этот фрагмент кода и увидите на рисунке ниже, что ячейка B7 объединилась в той же строке, что и ячейка E7.

9. Внедрение VBA для объединения и центрирования каждых двух ячеек в диапазоне

В этой части вы узнаете, как объединить и центрировать каждые две ячейки в диапазоне в Excel с помощью макроса VBA.

Действующие действия приведены ниже.

Шаги:

  • Откройте редактор Visual Basic на вкладке "Разработчик" и вставьте модуль в окно кода.
  • В окне кода скопируйте следующий код и вставьте его.

Теперь ваш код готов к запуску.

  • Запустите макрос, и вы получите набор данных, в котором каждые две ячейки объединены и центрированы.

Заключение

В этой статье показано, как объединить ячейки в Excel с помощью макроса VBA. Я надеюсь, что эта статья была очень полезна для вас. Не стесняйтесь задавать любые вопросы по теме.

Дж.А. Гомес

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

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

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

Оглавление

Похожие руководства по VBA и макросам

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

    Общие конструкции и структуры VBA:

    Узнайте об использовании переменных здесь.

Дополнительные учебные пособия по VBA и макросам можно найти в архивах.

Код VBA для объединения ячеек

Процесс, сопровождаемый кодом VBA

Объяснение оператора VBA

    Конструкция VBA: свойство Workbook.Worksheets.

    Конструкция VBA: свойство Worksheet.Range.

Укажите FirstCell и LastCell, используя ссылку на ячейку в стиле A1. Разделите FirstCell и LastCell с помощью оператора диапазона, двоеточия (:). Заключите весь адрес диапазона ячеек в кавычки ("").

    Конструкция VBA: метод Range.Merge.

Пример макроса

Следующий макрос объединяет ячейки с A5 по E6 рабочего листа с именем «Объединить ячейки».

Эффекты выполнения примера макроса

Следующий GIF иллюстрирует результаты выполнения этого примера макроса. Как и ожидалось, ячейки с A5 по E6 будут объединены.

Код VBA для разделения ячеек

Процесс, сопровождаемый кодом VBA

Объяснение оператора VBA

    Конструкция VBA: свойство Workbook.Worksheets.

    Конструкция VBA: свойство Worksheet.Range.

    Конструкция VBA: метод Range.UnMerge.

Пример макроса

Следующий макрос разъединяет объединенную ячейку, содержащую ячейку C6 листа с именем «Объединить ячейки».

Эффекты выполнения примера макроса

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

Код VBA для объединения ячеек и центрирования

Процесс, сопровождаемый кодом VBA

Объяснение оператора VBA

    Конструкция VBA: оператор With… End With.

    Конструкция VBA: свойство Workbook.Worksheets.

    Конструкция VBA: свойство Worksheet.Range.

  1. Элемент: HorizontalAlignment = xlCenter.

    Конструкция VBA: свойство Range.HorizontalAlignment.

  1. Элемент: VerticalAlignment = xlCenter.

    Конструкция VBA: свойство Range.VerticalAlignment.

    Конструкция VBA: метод Range.Merge.

Пример макроса

Следующий макрос (i) центрирует содержимое ячеек с A8 по E9 рабочего листа с именем «Объединить ячейки» и (ii) объединяет эти ячейки.

Эффекты выполнения примера макроса

Следующий GIF иллюстрирует результаты выполнения этого примера макроса. Как и ожидалось, VBA объединяет ячейки с A8 по E9 и центрирует содержимое.

Код VBA для объединения ячеек

Процесс, сопровождаемый кодом VBA

Объяснение оператора VBA

    Конструкция VBA: свойство Workbook.Worksheets.

    Конструкция VBA: свойство Worksheet.Range.

Укажите FirstCell и LastCell, используя ссылку на ячейку в стиле A1. Разделите FirstCell и LastCell с помощью оператора диапазона, двоеточия (:). Заключите весь адрес диапазона ячеек в кавычки ("").

    Конструкция VBA: метод Range.Merge.

    Конструкция VBA: параметр Across метода Range.Merge.

Пример макроса

Следующий макрос объединяет ячейки с A11 по E15 листа с названием «Объединить ячейки». Поэтому ячейки в каждой строке с 11 по 15 объединяются в отдельные объединенные ячейки.

Эффекты выполнения примера макроса

Следующий GIF иллюстрирует результаты выполнения этого примера макроса. Как и ожидалось, VBA объединяет ячейки с A11 по E15.

Код VBA для объединения ячеек на основе значения ячейки

Процесс, сопровождаемый кодом VBA

Объяснение оператора VBA

    Конструкция VBA: оператор With… End With.

    Конструкция VBA: свойство Workbook.Worksheets.

    Конструкция VBA: For… Следующий оператор.

    Конструкция VBA: счетчик оператора For… Next.

    Конструкция VBA: счетчик запуска оператора For… Next.

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

    Конструкция VBA: Конец оператора For… Next.

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

    Конструкция VBA: шаг оператора For… Next.

    Конструкция VBA: оператор If… Then… Else.

    Конструкция VBA: свойство Worksheet.Cells и свойство Range.Item.

В любой момент времени значение счетчика циклов (Counter) совпадает со значением строки, по которой макрос в данный момент выполняет цикл. CriteriaColumn – это номер столбца, содержащего ячейки, которые вы рассматриваете для определения необходимости объединения ячеек в строке, по которой макрос в данный момент зацикливается.

    Конструкция VBA: свойство Range.Value.

    Конструкция VBA: условие оператора If… Then… Else.

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

    Конструкция VBA: свойство Worksheet.Range.

    Конструкция VBA: свойство Worksheet.Cells и свойство Range.Item.

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

    Конструкция VBA: свойство Worksheet.Cells и свойство Range.Item.

В любой момент времени значение счетчика циклов (Counter) совпадает со значением строки, по которой макрос в данный момент выполняет цикл. LastColumn — это номер последнего столбца в диапазоне ячеек, который вы хотите объединить с макросом. Если вы явно объявляете переменную для представления LastColumn, используйте тип данных Long.

    Конструкция VBA: метод Range.Merge.

Пример макроса

Следующий макрос объединяет ячейки в столбцах с myFirstColumn по myLastColumn в каждой строке между myFirstRow и myLastRow, где значением, хранящимся в столбце myCriteriaColumn, является строка, содержащаяся в переменной myCriteria.

    myFirstRow имеет значение 5.

Эффекты выполнения примера макроса

Следующий GIF иллюстрирует результаты выполнения этого примера макроса. Как и ожидалось, VBA объединяет ячейки в столбцах от A до E в каждой строке, где значение, хранящееся в столбце A, представляет собой строку «Объединить ячейки».

Код VBA для объединения ячеек в строке на основе значения ячейки

Процесс, сопровождаемый кодом VBA

Объяснение оператора VBA

    Конструкция VBA: оператор With… End With.

    Конструкция VBA: свойство Workbook.Worksheets.

    Конструкция VBA: For… Следующий оператор.

    Конструкция VBA: счетчик оператора For… Next.

    Конструкция VBA: счетчик запуска оператора For… Next.

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

    Конструкция VBA: Конец оператора For… Next.

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

    Конструкция VBA: шаг оператора For… Next.

  1. Элемент: .Cells(Counter, BaseColumn).

    Конструкция VBA: свойство Worksheet.Cells и свойство Range.Item.

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

    Конструкция VBA: свойство Range.Resize.

Это связано с тем, что первый параметр Resize (известный как RowSize) опущен. Поэтому количество строк в диапазоне ячеек остается прежним.

    Конструкции VBA: параметр ColumnSize свойства Range.Resize и свойства Range.Value.

В любой момент времени значение счетчика циклов (Counter) совпадает со значением строки, по которой макрос в данный момент выполняет цикл. SizeColumn — это номер столбца, содержащего количество ячеек, которые вы хотите объединить в строке, по которой макрос в данный момент зацикливается.

    Конструкция VBA: метод Range.Merge.

Пример макроса

Следующий макрос объединяет определенное количество ячеек, начиная с ячейки в столбце myBaseColumn, в каждой строке между myFirstRow и myLastRow. Количество объединенных ячеек равно значению, хранящемуся в mySizeColumn. Если это значение равно 1, никакие ячейки не объединяются.

Другими словами, макрос объединяет ячейки между столбцом с номером mySizeColumn и столбцом, номер которого равен номеру, хранящемуся в ячейке в myBaseColumn.

    myFirstRow имеет значение 5.

Эффекты выполнения примера макроса

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

Ссылки на конструкции VBA, используемые в этом руководстве по VBA

Используйте следующие ссылки, чтобы посетить соответствующую веб-страницу в Центре разработки Microsoft Office:

Объединение диапазонов или ячеек VBA в Excel объединит несколько ячеек на листе Excel, используя метод слияния объекта диапазона, а затем создаст объединенную ячейку. Метод Range.Merge объединит несколько ячеек или диапазонов, а затем, после объединения, сделает их одной единственной ячейкой в ​​верхнем левом углу диапазона.

Диапазон слияния VBA — синтаксис

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

Где
Поперек: это необязательно. Когда мы указываем Across как «True», это означает, что он будет объединять ячейки в каждой строке указанного диапазона как отдельные объединенные ячейки. Значение по умолчанию — False.

Диапазон слияния VBA — пример 1

Вот пример объединения нескольких ячеек с использованием метода Range.Merge объекта диапазона на листе, когда значение cross равно false.

Приведенный выше макрос или код покажет вам, как объединить диапазон («A1: D10») или несколько ячеек с помощью VBA. В этом примере мы объединяем диапазон от «A1 до D10», используя метод «Range.Merge» объекта диапазона. Теперь результатом диапазона («A1: D10») будет одна ячейка с именем «A1». В приведенном выше примере значение cross равно False. Пожалуйста, найдите скриншот ниже для того же самого после объединения ячеек, которые выделены желтым цветом.

Диапазон слияния VBA — пример 2

Вот пример объединения нескольких ячеек с использованием метода Range.Merge объекта диапазона на листе, когда значение cross равно true.

Приведенный выше макрос или код покажет вам, как объединить диапазон («A1: D10») или несколько ячеек с помощью VBA. В этом примере мы объединяем диапазон от «A1 до D10», используя метод «Range.Merge» объекта диапазона. Теперь диапазон («A1: D10») будет состоять из десяти ячеек из «A1: A10» вместо «A1: D10». В приведенном выше примере значением является True.Пожалуйста, найдите приведенный ниже снимок экрана для того же после объединения ячеек, которые выделены желтым цветом.

Объединение строк VBA — пример макроса

Вот пример кода vba для объединения нескольких строк с использованием «Range.Объединить метод объекта диапазона на листе.

Этот код объединит целые строки от строки 5 до строки 10.

Столбец слияния VBA — пример макроса

Вот пример кода vba для объединения нескольких столбцов с использованием метода Range.Merge объекта диапазона на листе.

Этот код объединит целые столбцы из столбца B в столбец E.

Обратите внимание: не тестируйте код sbMergeColumns с приведенным выше примером (sbMergeRows). Так как некоторые ячейки являются общими в обоих и он будет объединять максимально возможный диапазон. Протестируйте эти примеры на отдельных листах, чтобы увидеть результат.

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