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

Объединение диапазона ячеек в одну или построчно с помощью кода 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 предупреждающее окно не показывается, это не означает, что оно игнорируется. Просто программа самостоятельно принимает к действию ответное значение диалогового окна по умолчанию.

Надпись на заборе: «Катя + Миша + Семён + Юра + Дмитрий Васильевич +
товарищ Никитин + рыжий сантехник + Витенька + телемастер Жора +
сволочь Редулов + не вспомнить имени, длинноволосый такой +
ещё 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

Макросы объединения ячеек в EXEL.

Иногда бывает необходимо провести объединение ячеек в EXEL.
Стандартно и просто EXEL этого делать не умеет.
Нужно писать макросы.
Вот два из них.

1) Данный макрос объединяет данные из выделенных ячеек в одну.

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 Su

2) Данный макрос объединяет данные во всех строках (горизонтальное расположение) в одну ячейку. То есть, если выделить пять строк с данным,то мы получим 5 объединенных строк:

Sub Merge_Cells()
tStr = «»
cs = Selection.Item(1).Column
cf = Selection.Item(Selection.Count).Column
   For Each Cell In Selection.Cells
       tStr = tStr & » » & Cell
       If cf = Cell.Column Then
           Application.DisplayAlerts = False
           Range(Cells(Cell.Row, cs), Cells(Cell.Row, cf)).MergeCells = True
           Application.DisplayAlerts = True
           Cells(Cell.Row, cs) = Mid(tStr, 2)
           tStr = «»
       End If
   Next Cell
End Sub


Как пользоваться макросами в EXEL? А вот так:
Открываем редактор Visual Basic  через меню Сервис — Макрос — Редактор Visual Basic (Tools — Macro — Visual Basic Editor) или сочетанием клавиш ALT+F11, вставим в нашу книгу новый программный модуль (меню Insert — Module) и скопируем туда текст такого простого макроса.
Теперь, если выделить несколько ячеек и запустить этот макрос с помощью сочетания клавиш ALT+F8 или в меню Сервис — Макрос — Макросы (Tools — Macro — Macros), то Excel объединит выделенные ячейки в одну, слив туда же и текст через пробелы.
Также стоит отметить, что каждому макросу можно назначить «быстрые клавиши».
А еще, если решили сохранить EXEL-евскую таблицу с макросами, не забудьте сохранить ее в формате, поддерживающем эти самые макросы.

На этом пока все. Спасибо.

Популярные сообщения из этого блога

Как увидеть список выданных адресов в DHCP на Debian или CentOS.

В Debian: Информация о выданных адресах хранится в: dhcpd.leases внутри каталога /var/lib/dhcp/dhcpd.leases Открываем файл с помощью «cat» и смотрим, кто что получил. В CentOS: cd /var/lib/dhcpd cat dhcpd.leases OR TO EDIT nano dhcpd.leases

Получение доступа к серверу SQL при отсутствии пароля администратора SQL.

Изображение

Столкнулся я тут с проблемой: после смены пароля от учетной записи, из под которой работал сервер централизованного управления «Kaspersky Security Center 10», данная служба перестала работать. Подменили учётную запись, из под которой запускается служба приложения — безрезультатно. В итоге выяснили, что проблема уходят корнями в «Microsoft SQL Server», доступ к которому также осуществлялся из под этой УЗ. Чтобы сменить УЗ, из под которой «Kaspersky Security Center 10» «ломится» к базе данных, нужны административные права от «Microsoft SQL Server», которых ни у локального администратора ни у доменных администраторов не оказалось. ВНИМАНИЕ: ВСЕ КОМАНДЫ НУЖНО ЗАПУСКАТЬ ИЗ ПОД «CMD» или «Poweshell», которые в свою очередь запущены с повышением прав!!! (Правой кнопкой мыши на запускаемом приложении и далее, ЗАПУСТИТЬ ОТ АДМИНИСТРАТОРА). В итоге, пришлось запускать базу данных в специальном режиме: 1) Останавливаем э

Powershell- иероглифы; Кодировка командной строки – иероглифы и кракозябры

Часто приходиться видеть ИЕРОГЛИФЫ и КРАКОЗЯБРЫ в консоли PowerShell или DOS-окна после выполнения кода? РЕШЕНИЕ ЕСТЬ! Поменять кодировку можно с помощью команды: chcp 1251 chcp в качестве параметра принимает номер кодовой страницы: 866    — установлена по умолчанию 1251    — Windows кодировка 65001    — UTF Для изменения кодовой страницы в консоли по умолчанию рекомендую прочитать статью: http://support.microsoft.com/kb/262283/ru

групповое объединение ячеек построчно

Лехаа

Дата: Вторник, 03.06.2014, 11:56 |
Сообщение № 1

Группа: Пользователи

Ранг: Участник

Сообщений: 68


Репутация:

4

±

Замечаний:
0% ±


есть макрос

[vba]

Код

Sub объеденить_ячейки()

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
Selection.UnMerge
End Sub

[/vba]
Макрос объединяет все выделенные столбцы и строки в одну ячейку может быть на его основе возможно сделать следующее:
прошу помочь, нужно что бы на странице объединение было только по строчно, каждый столбец на странице в одну строку т.е. 1a <= 1a 1b 1c 1d …1v …. 2a <= 2a 2b 2 c … 2v и т.д.

 

Ответить

Russel

Дата: Вторник, 03.06.2014, 12:53 |
Сообщение № 2

Группа: Друзья

Ранг: Старожил

Сообщений: 1392


Репутация:

318

±

Замечаний:
0% ±


Excel 2010

Пишете про столбец

каждый столбец на странице в одну строку

а в т.е. про строку

1a <= 1a 1b 1c 1d …1v ….

Чего хотите-то в итоге?


QIWI 9173973973

 

Ответить

Лехаа

Дата: Вторник, 03.06.2014, 14:54 |
Сообщение № 3

Группа: Пользователи

Ранг: Участник

Сообщений: 68


Репутация:

4

±

Замечаний:
0% ±


ну как же, хочу вот что:
нужно что бы на странице объединение было только по строчно,
-все столбцы в 1й строке объединились в ячейку 1a
-все столбцы в 2й строке объединились в ячейку 2a

-все столбцы в 100й строке объединились в ячейку 100a

вот …так наверное понятно…? :)

 

Ответить

Russel

Дата: Вторник, 03.06.2014, 14:58 |
Сообщение № 4

Группа: Друзья

Ранг: Старожил

Сообщений: 1392


Репутация:

318

±

Замечаний:
0% ±


Excel 2010

Так не устроит?

К сообщению приложен файл:

7573835.jpg
(26.5 Kb)


QIWI 9173973973

 

Ответить

Rioran

Дата: Вторник, 03.06.2014, 15:04 |
Сообщение № 5

Группа: Авторы

Ранг: Ветеран

Сообщений: 903


Репутация:

290

±

Замечаний:
0% ±


Excel 2013

Лехаа, здравствуйте.

Вы хотите, чтобы объединялось содержимое ячеек или чтобы 100 ячеек строки превратились в одну мега-ячейку?


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279

 

Ответить

Alex_ST

Дата: Вторник, 03.06.2014, 16:40 |
Сообщение № 6

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3176


Репутация:

604

±

Замечаний:
0% ±


2003

Вполне возможно, что и перемудрил, но отлаживать уже некогда — начальство вызвало:[vba]

Код

Sub объеденить_ячейки_по_строкам()
    If TypeName(Selection) <> «Range» Then Exit Sub
    Const sDELIM$ = «|»
    Dim rRow As Range, i&, sMergeStr$
    With Selection
       For i = 1 To .Rows.Count
          Set rRow = Intersect(.Cells, Selection(i).EntireRow)
          sMergeStr = Join(Application.Index(rRow.Value, 1, 0), sDELIM)
          rRow.ClearContents: rRow(1).Value = sMergeStr
       Next i
    End With
End Sub

[/vba]



С уважением,
Алексей
MS Excel 2003 — the best!!!

 

Ответить

Alex_ST

Дата: Вторник, 03.06.2014, 16:43 |
Сообщение № 7

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3176


Репутация:

604

±

Замечаний:
0% ±


2003

Судя по тому, что Лехаа сначала делает .Merge, а потом .UnMerge , то он просто так очищает все ячейки кроме первой :)



С уважением,
Алексей
MS Excel 2003 — the best!!!

 

Ответить

Russel

Дата: Вторник, 03.06.2014, 16:46 |
Сообщение № 8

Группа: Друзья

Ранг: Старожил

Сообщений: 1392


Репутация:

318

±

Замечаний:
0% ±


Excel 2010

Судя по тому, что Лехаа сначала делает .Merge, а потом .UnMerge , то он просто так очищает все ячейки кроме первой

Тогда безо всяких макросов жмакнуть указанную в сообщении 4 кнопку :D


QIWI 9173973973

 

Ответить

Alex_ST

Дата: Вторник, 03.06.2014, 16:48 |
Сообщение № 9

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3176


Репутация:

604

±

Замечаний:
0% ±


2003

Стандартные кнопки объединения не делают конкатенацию текстов ячеек через разделитель, а просто забивают всё, что не в первой ячейке.



С уважением,
Алексей
MS Excel 2003 — the best!!!

 

Ответить

Лехаа

Дата: Четверг, 05.06.2014, 15:25 |
Сообщение № 10

Группа: Пользователи

Ранг: Участник

Сообщений: 68


Репутация:

4

±

Замечаний:
0% ±


Вы хотите, чтобы объединялось содержимое ячеек или чтобы 100 ячеек строки превратились в одну мега-ячейку?

надо автоматически объединить ячейки от:
— «1a» до «1w» объединить в 1а
— «2a» до «2w» объединить в 2а
— «3a» до «3w» объединить в 3а
— «4a» до «4w» объединить в 4а
— «5a» до «5w» объединить в 5а

— «100a» до «100w» объединить в 100а

 

Ответить

Russel

Дата: Четверг, 05.06.2014, 15:35 |
Сообщение № 11

Группа: Друзья

Ранг: Старожил

Сообщений: 1392


Репутация:

318

±

Замечаний:
0% ±


Excel 2010

надо автоматически объединить ячейки от:

Приложите пример файла с данными «как есть» и «что надо получить»

 

Ответить

Лехаа

Дата: Четверг, 05.06.2014, 15:52 |
Сообщение № 12

Группа: Пользователи

Ранг: Участник

Сообщений: 68


Репутация:

4

±

Замечаний:
0% ±


Alex_ST,

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

Спасибо за попытку, но моя версия делает тоже самое, выделенное объединяет в одну ячейку, хотелось бы что бы выделенное объединялось построчно схематично см рис.[url=]My WebPage[/url]

сделано:
[url=]My WebPage[/url]

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

Сообщение отредактировал ЛехааЧетверг, 05.06.2014, 16:12

 

Ответить

Лехаа

Дата: Четверг, 05.06.2014, 16:32 |
Сообщение № 13

Группа: Пользователи

Ранг: Участник

Сообщений: 68


Репутация:

4

±

Замечаний:
0% ±


Приложите пример файла с данными «как есть» и «что надо получить»

 

Ответить

Russel

Дата: Четверг, 05.06.2014, 16:38 |
Сообщение № 14

Группа: Друзья

Ранг: Старожил

Сообщений: 1392


Репутация:

318

±

Замечаний:
0% ±


Excel 2010

К сообщению приложен файл: 7911279.xlsx(10Kb)

Ну и где здесь исходная таблица и необходимый результат работы макроса?

 

Ответить

Лехаа

Дата: Пятница, 06.06.2014, 12:24 |
Сообщение № 15

Группа: Пользователи

Ранг: Участник

Сообщений: 68


Репутация:

4

±

Замечаний:
0% ±


Ну и где здесь исходная таблица и необходимый результат работы макроса?

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

К сообщению приложен файл:

7750506.xlsm
(15.1 Kb)

Сообщение отредактировал ЛехааПятница, 06.06.2014, 12:34

 

Ответить

китин

Дата: Пятница, 06.06.2014, 12:27 |
Сообщение № 16

Группа: Модераторы

Ранг: Экселист

Сообщений: 6973


Репутация:

1063

±

Замечаний:
0% ±


Excel 2007;2010;2016

просто тест.удалите,плз

Сообщение отредактировал китинПятница, 06.06.2014, 12:34

 

Ответить

Лехаа

Дата: Пятница, 06.06.2014, 12:30 |
Сообщение № 17

Группа: Пользователи

Ранг: Участник

Сообщений: 68


Репутация:

4

±

Замечаний:
0% ±


 

Ответить

Лехаа

Дата: Пятница, 06.06.2014, 12:46 |
Сообщение № 18

Группа: Пользователи

Ранг: Участник

Сообщений: 68


Репутация:

4

±

Замечаний:
0% ±


Alex_ST, может на примере будет понятнее? см.вложение

как на основе его так же объединить построчно остальное? пытался сделать повтор …но что то не получается…

К сообщению приложен файл:

4698290.xlsm
(15.1 Kb)

Сообщение отредактировал ЛехааПятница, 06.06.2014, 12:46

 

Ответить

Alex_ST

Дата: Пятница, 06.06.2014, 13:12 |
Сообщение № 19

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3176


Репутация:

604

±

Замечаний:
0% ±


2003

Я не могу с работы качать файлы с макросами (Спасибо собакам-сисадминам! Чтобы у них за это все аккаунты покоцались! shock ).
А дома занимаюсь в основном домашними делами :)
Если выложите файл без макросов в формате 2003 и текст процедур, то может быть посмотреть и смогу.

 

Ответить

Russel

Дата: Пятница, 06.06.2014, 13:25 |
Сообщение № 20

Группа: Друзья

Ранг: Старожил

Сообщений: 1392


Репутация:

318

±

Замечаний:
0% ±


Excel 2010

Держите вариант формулой

К сообщению приложен файл:

0488387.xlsm
(17.9 Kb)

 

Ответить

Понравилась статья? Поделить с друзьями:
  • Как объединить ячейки для функции если в excel
  • Как объединить ячейки в excel если они не объединяются
  • Как объединить ячейки в электронной таблице excel
  • Как объединить ячейки в excel если кнопка объединить ячейки не работает
  • Как объединить ячейки в форматированной таблице excel