VBA, FOR LOOP, оператор IF, получить значение предыдущей ячейки

Я хотел бы написать сценарий 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 10.12.2020 13:40

Я отредактировал свой пост с кодами. Спасибо ZygD

balazs777 10.12.2020 15:26
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
3
2
584
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это должно делать то, что вы намереваетесь:

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 и т. д., поэтому программа должна остановиться, когда она достигнет последней строки данных. Спасибо за вашу помощь.

balazs777 11.12.2020 08:41

Можно, но лучше задать для этого отдельный вопрос.

ZygD 11.12.2020 09:07

Другие вопросы по теме