Я хотел бы написать сценарий VBA, который идет вниз по столбцу, например, от K2 до последней ячейки в столбце K (я хочу, чтобы он был динамическим), и он проверяет каждую ячейку, и если ячейка равна 0, то эта ячейка должна получить значение предыдущей ячейки.
Я начал таким образом. Я не уверен, что это правильный путь:
Sub getpreviouscellvalue()
For Each Cell In Range("K2:K26")
If Cell.Value = 0 Then
Cell.Value = ?
Exit For
End If
Next Cell
End Sub
Или, может быть, это должно быть похоже на этот код (python):
list= [1,2,3,0,4,5]
for i in list;
a = list.index(i)
if i== 0;
list[a]=list[a-1]
Print(list)
Надеюсь понятно. Если нет, напишите мне, и я могу объяснить это больше.
Я отредактировал свой пост с кодами. Спасибо ZygD
Это должно делать то, что вы намереваетесь:
Sub getpreviousvalue()
Dim cell As Range
For Each cell In Range("K2:K26")
If cell.Value = 0 Then
cell.Value = cell.Offset(-1).Value
End If
Next
End Sub
Большое спасибо ЗигД. Это именно то, что я намеревался сделать. Ты лучший. Могу я также спросить вас, каким был бы код, если бы вместо фиксированного диапазона, как сейчас Range("K2:K26"), это был бы динамический диапазон, который всегда меняется. Например, иногда его K30 иногда равно 40 и т. д., поэтому программа должна остановиться, когда она достигнет последней строки данных. Спасибо за вашу помощь.
Можно, но лучше задать для этого отдельный вопрос.
Пожалуйста, покажите нам, где вы находитесь: нам нужен код, который вы собрали сами.