![]() |
Объединить ячейки в одном столбце
В общем надо объединить ячейки в одном столбце, при условии что ячейки в другом столбце одинаковые.
То есть если содержимое столбца 1 повторяется от строки к строке, то в столбце 2 объединяем. За основу брал такой код Код:
Sub MergeCls() |
blackeangel, что-то не соображу. Образец Рабочей книги в архиве приложите, на одном рабочем листе — пример исходника, на другом — полученный с примера результат.
|
Вложений: 1
Вот там 2 листа
|
blackeangel, это может выглядеть примерно так:
Скрытый текст
Код:
Option Explicit |
Iska, это здорово. Но вот теперь стала необходимость обьединять последовательно сначала второй, потом третий, потом произвольный, а в самом конце первый столбец. То есть примерно все останется так же, но куда надо и что добавить чтоб заработало поновым условиям? Просто в текущем коде ничего непонял.
|
blackeangel, чтобы мы продолжили понимать друг друга — от Вас новая рабочая книга с иллюстрацией:
Цитата:
|
Цитата:
Работаем с первым столбцом использованного диапазона (.UsedRange) активного рабочего листа (ActiveSheet). Предполагаем, что данные тупо расположены с первой же ячейки и имеют заголовки столбцов. Посему начинаем с того, что диапазону для объединения (objRange4Union) присваиваем диапазон, состоящий из ячейки A2, и запоминаем значение из той же самой ячейки A2. Далее перебираем все строки из первого столбца от третьей строки до последней строки использованного диапазона. Если значение в очередной ячейке совпадает с запомненным значением (из ячейки выше) — включаем в диапазон для объединения эту ячейку (путём операции Union() над ним самим и этой самой очередной ячейкой). Если не совпадает — то на всякий случай сначала проводим разъединение ячеек, расположенными в столбце правее (.Offset(0, 1)) диапазона для объединения (objRange4Union), затем объединение этих ячеек, делаем выравнивание содержимого. Ту же операцию проделываем с ячейками, расположенными на два стобца правее (.Offset(0, 2)) диапазона для объединения. Наконец, начинаем заново собирать новый диапазон для объединения, начиная с текущей очередной ячейки. После завершения проверки условия в конце цикла запоминаем в переменной значение текущей очередной ячейки и повторяем весь цикл. По завершении цикла нам остаётся повторить операции объединения над текущим вычисленным диапазоном для объединения. |
Iska, ну в общем всё на самом деле просто.необходима функция, котороя обьединяла бы любые ячейки в столбцах в указанном порядке. Пример вызова функции какой то такой
Функция(1,5,7,9,12,3) Если подается нулевое значение, значит столбец пропускаем. И ещё один момент, объединенять ячейки надо только с повторяющимися значениями. |
Вложений: 1
Вот пример второй чтоб понятнее стало
|
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
Единственное, что здесь можно пояснить, это то что цифры это номера столбцов.Где первый столбец - опорный(в текущих книгах он был первым), по нему проходит цикл и по нему объединять надо в последнюю очередь. Остальные цифры это тоже столбцы, но уже не опорные. |
Цитата:
Цитата:
Цитата:
|
Iska,
1. Функция(1,5,7,0,12,3) 2. Нет, но вызове функции стоять первым Как то так Функция(опорный As Integer, неопорные As Variant) |
Цитата:
|
Цитата:
Если 0, то понятно что этого столбца не существует и его следует пропустить. Так же опорный столбец не может быть 0. |
Цитата:
|
Цитата:
|
Время: 19:25. |
Время: 19:25.
© OSzone.net 2001-