Всем привет. Есть пример таблицы. Нужно задать условие так, чтобы в зависимости от значения в столбце Е (дадим им переменную Х), ячейки в столбце F (дадим им переменную У) смещались вправо на Х*2. Т.е. Если Х=1, У "смещается на" 2Х. Вот это "смещается на" я не пойму, как задать.
Заранее спасибо!
Всем привет. Есть пример таблицы. Нужно задать условие так, чтобы в зависимости от значения в столбце Е (дадим им переменную Х), ячейки в столбце F (дадим им переменную У) смещались вправо на Х*2. Т.е. Если Х=1, У "смещается на" 2Х. Вот это "смещается на" я не пойму, как задать.
Здравствуйте. По правилам форума один вопрос - одна тема. Модераторы могут заблокировать. Для вопроса по теме попробуйте такой макрос. [vba]
Код
Sub OffsetColumn() Dim Cl As Range For Each Cl In Range("E1:E" & Cells(Rows.Count, 4).End(xlUp).Row) If Cl > 0 Then Cl.Offset(, 1).Cut Destination:=Cl.Offset(, 1 + Cl * 2) Next End Sub
[/vba]
Здравствуйте. По правилам форума один вопрос - одна тема. Модераторы могут заблокировать. Для вопроса по теме попробуйте такой макрос. [vba]
Код
Sub OffsetColumn() Dim Cl As Range For Each Cl In Range("E1:E" & Cells(Rows.Count, 4).End(xlUp).Row) If Cl > 0 Then Cl.Offset(, 1).Cut Destination:=Cl.Offset(, 1 + Cl * 2) Next End Sub
i691198, Это работает, спасибо большое. Тему отредактирую по Вашему совету) А можете пояснить, как и за что отвечают эти 2 строки:
1 For Each Cl In Range("E1:E" & Cells(Rows.Count, 4).End(xlUp).Row) 2 If Cl > 0 Then Cl.Offset(, 1).Cut Destination:=Cl.Offset(, 1 + Cl * 2)
i691198, Это работает, спасибо большое. Тему отредактирую по Вашему совету) А можете пояснить, как и за что отвечают эти 2 строки:
1 For Each Cl In Range("E1:E" & Cells(Rows.Count, 4).End(xlUp).Row) 2 If Cl > 0 Then Cl.Offset(, 1).Cut Destination:=Cl.Offset(, 1 + Cl * 2)alexey-tank98
Сообщение отредактировал alexey-tank98 - Суббота, 24.02.2024, 12:13
1. Оператор Cells(Rows.Count, 4).End(xlUp).Row определяет номер строки последней непустой ячейки в столбце D. В вашем примере это 7. Таким образом получаем цикл для переменной CL по всем ячейкам в диапазоне "E1:E7". 2. Если очередное значение ячейки из этого диапазона больше 0 (при нулевом значении ничего делать не нужно), то Cl.Offset(, 1).Cut забирает содержимое ячейки, находящейся в той же строке в столбце F (1 - это смещение по столбцам от текущего значения Cl) в буфер обмена и очищает эту ячейку. Destination:=Cl.Offset(, 1 + Cl * 2) вставляем данные из буфера в ячейку в ту же строку, а номер столбца определяется по формуле 1 + Cl * 2. (если значение Cl =1, то это столбец H, если 2, то столбец J и т.д.).
1. Оператор Cells(Rows.Count, 4).End(xlUp).Row определяет номер строки последней непустой ячейки в столбце D. В вашем примере это 7. Таким образом получаем цикл для переменной CL по всем ячейкам в диапазоне "E1:E7". 2. Если очередное значение ячейки из этого диапазона больше 0 (при нулевом значении ничего делать не нужно), то Cl.Offset(, 1).Cut забирает содержимое ячейки, находящейся в той же строке в столбце F (1 - это смещение по столбцам от текущего значения Cl) в буфер обмена и очищает эту ячейку. Destination:=Cl.Offset(, 1 + Cl * 2) вставляем данные из буфера в ячейку в ту же строку, а номер столбца определяется по формуле 1 + Cl * 2. (если значение Cl =1, то это столбец H, если 2, то столбец J и т.д.).i691198
Сообщение отредактировал i691198 - Суббота, 24.02.2024, 13:30