Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата blackeangel:
в текущем коде ничего непонял. »
Там достаточно просто.

Работаем с первым столбцом использованного диапазона (.UsedRange) активного рабочего листа (ActiveSheet). Предполагаем, что данные тупо расположены с первой же ячейки и имеют заголовки столбцов. Посему начинаем с того, что диапазону для объединения (objRange4Union) присваиваем диапазон, состоящий из ячейки A2, и запоминаем значение из той же самой ячейки A2. Далее перебираем все строки из первого столбца от третьей строки до последней строки использованного диапазона.

Если значение в очередной ячейке совпадает с запомненным значением (из ячейки выше) — включаем в диапазон для объединения эту ячейку (путём операции Union() над ним самим и этой самой очередной ячейкой).

Если не совпадает — то на всякий случай сначала проводим разъединение ячеек, расположенными в столбце правее (.Offset(0, 1)) диапазона для объединения (objRange4Union), затем объединение этих ячеек, делаем выравнивание содержимого. Ту же операцию проделываем с ячейками, расположенными на два стобца правее (.Offset(0, 2)) диапазона для объединения. Наконец, начинаем заново собирать новый диапазон для объединения, начиная с текущей очередной ячейки.

После завершения проверки условия в конце цикла запоминаем в переменной значение текущей очередной ячейки и повторяем весь цикл.

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

Отправлено: 09:33, 01-09-2017 | #7