Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Объединенные ячейки в списке: преобразование в отдельные повторяющиеся ячейки и обратно
 
Уважаемые пользователи форума,
Вот задача, которую мои очень скромные познания VBA не позволяют мне не только решить, но даже понять, решаема ли она в принципе:

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

Подскажите, пожалуйста, можно ли средствами VBA разделы (горизонтальные объединенные ячейки) и проекты (вертикальные объединенные ячейки) преобразовать в отдельные ячейки и расставить их напротив соответствующих им задач? А затем провести обратную процедуру (повторяющиеся ячейки сделать объединенными вертикально, а из самой первой колонки на второй вкладке сделать соответствующие заголовки разделов). Пример было-стало во вложении.

Еще раз уточню, что интересует возможность трансформации туда-обратно.
В существующих темах ничего подобного не нашел. В интернете на буржуйских форумах нарыл только вот такой код (только для разбора объединенных ячеек):
Код
Dim oneCell As Range, onesFriends As RangeWith ThisWorkbook.Sheets("RAW")
For Each oneCell In .UsedRange
If oneCell.MergeCells Then
Set onesFriends = oneCell.MergeArea
oneCell.UnMerge
onesFriends.Value = oneCell.Value
End If
Next oneCell
End With

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

P.S. С праздником всех, товарищи! :)
Изменено: rkz - 2 Май 2015 18:50:39
 
1. Код следует оформлять тегом. Исправьте.
2. Файлы удалил - превышение максимально допустимого размера.
 
Уважаемый Юрий,
Спасибо за поправки, все привел в соответствие с правилами размещения сообщений.

Уважаемые пользователи форума, если кому-то еще интересно, получилось на тех же буржуйских форумах найти код по объединению одинаковых ячеек по столбцам. Собственно, вот он:
Код
Sub Merge()
           
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False

    Dim rngMerge As Range, cell As Range
    Dim i As Integer
    i = Range("A7").End(xlDown).Row
    Set rngMerge = Range("A7:A" & i) 'Set the range limits here

MergeAgain:
    For Each cell In rngMerge
        If cell.Value = cell.Offset(1, 0).Value And IsEmpty(cell) = False Then
            Range(cell, cell.Offset(1, 0)).Merge
            GoTo MergeAgain
        End If
    Next

    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub
В качестве начальной ячейки нужно задать первую, с которой начинаются объединенные. Получается, для каждого столбца нужно будет прописать аналогичный код перед Next, с добавлением порядкового номера к rngMerge (rngMerge2 для B:B, rngMerge3 для C:C и т.п.).

Думаю, аналогично можно сделать и для горизонтальных ячеек (если имеется фиксированная ширина - совсем просто, если нет - наверное тоже можно как-то извернуться).

Осталось только понять, как из первого столбца на второй вкладке сделать горизонтальные заголовки. Буду ковыряться с имеющимся кодом. Если что-то получится - тоже напишу сюда.
Изменено: rkz - 3 Май 2015 10:22:26
Страницы: 1
Читают тему (гостей: 1)