Здравствуйте, подскажите, пожалуйста, имеются ячейки идущие в столбик, объединенные в хаотичном порядке, хотелось бы, чтобы эти ячейки стали одинаковые по размеру, например 1 ячейка = 100, 2 ячейки = 50, 3 ячейки = 33,3, 4 ячейки = 25 и т.д. Пример прикладываю, оранжевым выделил исходное состояние, зеленым как хотелось бы получить. Возможно ли это как-нибудь сделать? Скриншот - https://pp.vk.me/c633725/v633725965/222f1/e8JBNLvOMws.jpg
kuklp, Да, сейчас я так и делаю, сначала выделяю все ячейки с 4 строками - увеличиваю, далее с 3 строками - увеличиваю и т.д. Но проблема в том, что этих ячеек несколько тысяч и часто пропускаю где-то или ошибаюсь, приходится много времени тратить и просматривать заново, аж в глазах рябить начинает)
kuklp, Впервые за него услышал), почитал, попробовал, но мне, кажется, что через него не получится? Включил запись макроса, выделил первые 100 ячеек имеющих 1 строчку установил размер 100, остановил запись. Далее выделил все ячейки включил макрос, но он мне увеличил только эти же первые 100 ячеек, не трогая остальные) Или вы это и имели ввиду? Так у меня каждый раз разный набор объединенных ячеек. Если бы был одинаковый, я бы просто открывал старый док и очищал его. Или я неправильно понял?)
kuklp, Я так понял данный макрос просто делает все строки = 100? Но это я могу и просто вручную сделать обвести все строчки и установить.) Мне бы, чтобы там где 1 строчка на 1 ячейку стало = 100, где 2 строки на 1 ячейку = 50, 3 строки на 1 ячейку = 33,3 и т.д. В общем, чтобы все ячейки выглядели одинаковыми по размеру.
Снова потребовалась данная процедура, так что возвращаюсь к вопросу. К сожалению, я так и не понял как можно это сделать, так что требуется помощь, готов заплатить разумную цену. Повторюсь, идут ячейки в столбик, хаотично объединены, типо такого: https://pp.vk.me/c627223/v627223965/4aa72/IE-dc8ruZBQ.jpg т.е. есть как и 1 ячейка, так и 2,3 и т.д. объединенные в одну. Если посмотреть высоту строки, то на 1 строчку она равняется 15, а мне надо, в зависимости от кол-ва строк, чтобы высота строки в сумме давала ~100. Т.е. если 1 строка, то высота 100, 2 строки = 50, 3 строки = 33,3, 4 строки = 25, 5 строк = 20, 6 строк = 16,7, 7 строк и больше = 15, т.е. без изменений. Т.е. наш пример должен стать выглядеть вот так: https://pp.vk.me/c627223/v627223965/4aa7a/-Z6xqenOdog.jpg По хорошему хотелось бы еще, чтобы это значение суммы (100) можно было бы изменять как я пожелаю, например, 1 строчка = 200, 2 строки = 100, 3 строки = 66,7 и т.д.
Dima S,Блин, точно, дурная моя голова. Просто у меня это объединение стояло во 2ом столбце, а в 1ом каждая строчка отдельно была, т.к. там идет нумерация каждой строки и макрос видимо как раз ориентировался по 1ому столбцу. Спасибо большое и извините за беспокойство.
kuklp, Здравствуйте, извините за беспокойство, пожалуйста. А не могли бы вы свой макрос отредактировать немного, если это возможно, конечно. Мне надо, чтобы он от 7 строк и больше неуменьшал строку, а оставлял ее такой какая есть. Т.е. чтобы он работал так: 1 строка - высота 100 2 строки - 50 3 строки - 33.3 4 строки - 25 5 строк - 20 6 строк 16.7 7 строк и больше оставались без изменений. Юрий М, Да, ваш файл правильно работает, но, к сожалению, такое же замечание остается, как и у kuklp...
Юрий М, Ваш файл также объединенные строки, в количестве больше 7 делает их высотой по 100, а их не надо трогать.)
Цитата
vladislav111 написал: Т.е. чтобы он работал так: 1 строка - высота 100 2 строки - 50 3 строки - 33.3 4 строки - 25 5 строк - 20 6 строк 16.7 7 строк и больше оставались без изменений.
Добавил одно условие к коду Юрия М(извиняюсь, что влез без спроса в ваш код)
Код
Sub Macro1()
Dim x As Long, i As Long, CounterRows As Long, iHeight As Double
x = Application.InputBox(Prompt:="Укажите высоту строки (0...409).", Title:="Выбираем высоту строк...", Type:=1)
If x < 0 Or x > 409 Then
MsgBox "Высота строки не может быть меньше 0 и больше 409. Повторите ввод", 48, "Ошибка!"
Exit Sub
End If
For i = 1 To 16
If Cells(i, 1).MergeCells And Cells(i, 1).MergeArea.Rows.Count <= 7 Then 'тут
r = Cells(i, 1).MergeArea.Rows.Count
iHeight = x / Cells(i, 1).MergeArea.Rows.Count
Rows(i).RowHeight = iHeight
ElseIf Not Cells(i, 1).MergeCells Then 'и тут
Rows(i).RowHeight = x
End If
Next
End Sub