Добрый вечер. Есть макрос объединяет все ячейки в столбце по нужным группам, нужная группа определяется по соседнему столбцу. Если ячейки в первом столбце уже объединены, то объединяем те же ячейки во втором столбце. Количество ячеек в каждой группе разное.
[vba]
Код
Sub MergeToOneCell() Application.DisplayAlerts = False Const sDELIM As String = "; " Dim rCell As Range Dim sMergeStr As String Dim lLastRow%, mcells_count% lLastRow = Cells(Rows.Count, 2).End(xlUp).Row For i = 1 To lLastRow If Cells(i, 1).MergeCells Then mcells_count = Cells(i, 1).MergeArea.Count - 1 sMergeStr = "" For Each rCell In Range("B" & i & ":B" & i + mcells_count) sMergeStr = sMergeStr & rCell.Text & sDELIM Next rCell
Range("B" & i & ":B" & i + mcells_count).Merge Range("B" & i & ":B" & i + mcells_count).Value = sMergeStr i = i + mcells_count End If Next Application.DisplayAlerts = True End Sub
[/vba]
Но у меня возникла загвоздка: если в столбцах есть объединенные ячейки (объединение по горизонтали, как в примере2 во вложении) макрос не отрабатывает. Помогите добавить условие, чтобы объединенные по строкам ячейки пропускались. Такое возможно? И можно ли заменить ссылки в макросе на конкретные столбцы на столбцы выделенные пользователем?
Добрый вечер. Есть макрос объединяет все ячейки в столбце по нужным группам, нужная группа определяется по соседнему столбцу. Если ячейки в первом столбце уже объединены, то объединяем те же ячейки во втором столбце. Количество ячеек в каждой группе разное.
[vba]
Код
Sub MergeToOneCell() Application.DisplayAlerts = False Const sDELIM As String = "; " Dim rCell As Range Dim sMergeStr As String Dim lLastRow%, mcells_count% lLastRow = Cells(Rows.Count, 2).End(xlUp).Row For i = 1 To lLastRow If Cells(i, 1).MergeCells Then mcells_count = Cells(i, 1).MergeArea.Count - 1 sMergeStr = "" For Each rCell In Range("B" & i & ":B" & i + mcells_count) sMergeStr = sMergeStr & rCell.Text & sDELIM Next rCell
Range("B" & i & ":B" & i + mcells_count).Merge Range("B" & i & ":B" & i + mcells_count).Value = sMergeStr i = i + mcells_count End If Next Application.DisplayAlerts = True End Sub
[/vba]
Но у меня возникла загвоздка: если в столбцах есть объединенные ячейки (объединение по горизонтали, как в примере2 во вложении) макрос не отрабатывает. Помогите добавить условие, чтобы объединенные по строкам ячейки пропускались. Такое возможно? И можно ли заменить ссылки в макросе на конкретные столбцы на столбцы выделенные пользователем?olgazi
Сообщение отредактировал olgazi - Вторник, 10.01.2017, 19:25