У меня есть кусок кода, который работал для части, но потребовалось много времени (около 1700 строк). Когда я обновил его для выполнения всей функции, он теперь ничего не делает - не уверен, где я ошибся, и есть ли версия кода, которая была бы быстрее?
Я все еще очень новичок, поэтому делайте мой код, ища то, что я хочу сделать, затем сгибая его под себя.
Я хотел бы проверить в столбце I все даты, которые меньше даты в ячейке Z1. Если в какой-либо ячейке в соответствующем ряду указано «Выдано», я бы хотел изменить его на «Просрочено».
Sub updateoverdue()
Application.ScreenUpdating = True
Dim j As Long, i As Long, lastRow1 As Long, lastRow2 As Long
Dim sh_1, sh_3 As Worksheet
Set sh_1 = Sheet6
Set sh_3 = Sheet6
lastRow1 = sh_1.UsedRange.Rows.Count
For j = 2 To lastRow1
Sheet6.Range("z1") = sh_1.Cells(j, 9).Value
lastRow2 = sh_3.UsedRange.Rows.Count
For i = 2 To lastRow2
If sh_3.Cells(i, 9).Value < Sheet6.Range("z1") And sh_3.Cells(i, 10).Value = "Issued" Then
sh_3.Cells(i, 10).Value = "Overdue"
End If
Next i
Next j
Application.ScreenUpdating = True
End Sub
Я заставил его работать только над столбцом J, но потом он не сработал, когда я добавил в выпущенную часть. Кроме того, я не могу изменить более одного столбца (от J до W).