#excel #vba
#excel #vba
Вопрос:
Dim I As Long
For I = 2 To lastrow
If Not IsEmpty(Cells(I, "f")) And IsEmpty(Cells(I, "j")) Then
Cells(I, "j").Value = "unregister"
End If
Next I
Dim I2 As Long
For I2 = 2 To lastrow
If IsEmpty(Cells(I2, "f")) Then
Cells(I2, "i").Value = Cells(I2 - 1, "i").Value
End If
Next I2
можете ли вы сделать этот код более простым, я хочу скопировать строку выше для 3 разных столбцов, если столбец f пуст
Комментарии:
1.
Cells(I2, "i").Value = Cells(I2 - 1, "i", "l").Value
— что вы пытаетесь сделать, что это?
Ответ №1:
Вы можете сделать что-то подобное, используя один цикл и Offset(-1, 0)
чтобы получить ячейку выше:
Dim i As Long, ws As Worksheet
Set ws = ActiveSheet
For i = 2 To ws.Cells(ws.Rows.Count, "F").End(xlUp).Row
With ws.Rows(i)
If Not IsEmpty(.Columns("F")) Then
If IsEmpty(.Columns("J")) Then .Columns("J").Value = "unregister"
Else
.Columns("I").Value = .Columns("I").Offset(-1, 0).Value
.Columns("L").Value = .Columns("L").Offset(-1, 0).Value
'etc
End If
End With
Next I2