Страницы: 1
RSS
VBA. Одновременный сдвиг ячеек вниз или центрирование ячеек по высоте относительно ячеек другого столбца.
 
Доброго времени суток!

Подскажите, пожалуйста, макрос для одновременного сдвига ячеек столбцов А, I (красный цвет) вниз на одну ячейку.
Или, может, макрос, который сможет центрировать ячейки (красный цвет) относительно ячеек столбца В, игнорируя ячейки, ниже которых есть непустые. Количество ячеек, относительно которых нужно центрировать, будет всегда разным.
Если не спросить — никогда не узнаешь, если знаешь — нужно лишь спросить.
 
А что делать, если
1. Будет всего две строки между зелёными?
2. Будет три подряд красных?
 
Юрий М,вот так будет. А 3 подряд красных в изначальном варианте никогда не будет.
Изменено: flower - 17.08.2019 22:00:33
Если не спросить — никогда не узнаешь, если знаешь — нужно лишь спросить.
 
Ещё вопрос: красные в столбцах 1 и 9 всегда синхронно?
 
Юрий М,да
Если не спросить — никогда не узнаешь, если знаешь — нужно лишь спросить.
 
А можно заменить условное форматирование обычной заливкой?
 
Юрий М,для зеленого цвета? можно, но с ним мне удобней ориентироваться по листу
Если не спросить — никогда не узнаешь, если знаешь — нужно лишь спросить.
 
С УФ будут проблемы. По крайней мере у меня.
 
Юрий М,у меня есть вот такой макрос, но он не подходит для моего случая, таблица изменилась.
не могу найти, как здесь правильно макрос оформить.
Если не спросить — никогда не узнаешь, если знаешь — нужно лишь спросить.
 
Юрий М,
Код
Sub ToCentre()
  Dim Lr&, R&, R1&, rg As Range
  Lr = ActiveCell.End(xlDown).Row:   Set rg = ActiveCell.Offset(0, -1)
  Do While R < Lr
    If Not IsEmpty(rg.Offset(1, 0)) Then R = rg.Row + 1 Else R = rg.End(xlDown).Row - 1: If R > Lr Then R = Lr
    If R - rg.Row > 3 Then
      R1 = Int((rg.Row + R) / 2): Cells(R1, 1) = rg:  Cells(R1, 9) = rg.Offset(0, 
      rg = Empty:  rg.Offset(0,  = Empty
    End If
    Set rg = Cells(R, 1)
  Loop
End Sub 
Изменено: flower - 17.08.2019 22:40:32
Если не спросить — никогда не узнаешь, если знаешь — нужно лишь спросить.
 
Юрий М,что такое УФ?) поняла) ну раз так, то, конечно, можно его убрать
Изменено: flower - 17.08.2019 22:48:13
Если не спросить — никогда не узнаешь, если знаешь — нужно лишь спросить.
 
УФ - условное форматирование. Насколько я помню, в 2003 ещё не было возможности с помощью VBA работать с УФ.
 
Юрий М,вы привязываетесь к цветам ячеек? Макрос, что выше в сообщении, работал, пока не появились в таблице одиночные строки (поз.3 и 7). Т.е. он останавливается на этих строках и если его запустить ниже, то работает некорректно.
Изменено: flower - 17.08.2019 22:57:02
Если не спросить — никогда не узнаешь, если знаешь — нужно лишь спросить.
 
Что такое поз.3 и 7?
 
Юрий М,строки 18 и 34
Если не спросить — никогда не узнаешь, если знаешь — нужно лишь спросить.
 
На работе - отвлекают, гады ))
См. вариант.
 
Юрий М, Спасибо! Опробовала макрос на другой табличке, не везде центрирует (лист 2 - новая табличка, лист 3 - результат).

а макросы для разового синхронного смещения вниз (вверх) ячеек столбцов А и I (чтобы макрос запускался, когда активна нужная ячейка столбца А), чтобы при этом все остальные ячейки оставались на своих местах не подскажете? думаю, они тоже пригодились бы для разовых операций
Изменено: flower - 18.08.2019 11:50:05
Если не спросить — никогда не узнаешь, если знаешь — нужно лишь спросить.
 
Цитата
flower написал:
макрос на другой табличке, не везде центрирует
В предыдущем Вашем файле в блоке, ограниченном словами "запас" (от этого и отталкивался), всегда было не более двух красных ячеек. Теперь есть и три. Следовательно, на такой таблице макрос будет работать не корректно. Напишите в ячейке С18 слово "запас" и всё сработает правильно. Другими словами: макрос "центрирует" между строками, в которых имеется слово "запас".
 
Юрий М,все, разобралась, спасибооо!!! :-)
Если не спросить — никогда не узнаешь, если знаешь — нужно лишь спросить.
Страницы: 1
Наверх