В D2:D7 запишите то же, что макрос: «Просрочено», если срок оплаты раньше даты в F1, иначе «В срок».
Теория урока
Три цикла, которыми закрывается большинство задач:
For r = 2 To lastRow … Next r— по номерам строк, когда нужно обращаться к разным столбцам одной строки черезCells(r, n).Step 2— шаг 2,Step -1— обратный ход;For Each cell In Range("B2:B100") … Next cell— по каждой ячейке диапазона;Do While условие … Loop— пока условие верно, например пока ячейка не пустая. Не забудьте увеличить счётчик, иначе цикл будет бесконечным.
Последняя заполненная строка: lastRow = Cells(Rows.Count, 1).End(xlUp).Row — как нажать Ctrl+↑ из самого низа столбца A.
Exit For досрочно выходит из цикла. Если в цикле удаляются строки, идите снизу вверх (Step -1), иначе строки сдвинутся и часть пропустится.
Sub СтатусыСчетов()
Dim r As Long, lastRow As Long, cnt As Long
Dim total As Double
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
For r = 2 To lastRow
If Cells(r, 3).Value < Range("F1").Value Then
Cells(r, 4).Value = "Просрочено"
cnt = cnt + 1
total = total + Cells(r, 2).Value
Else
Cells(r, 4).Value = "В срок"
End If
Next r
Range("F2").Value = cnt
Range("F3").Value = total
End SubСчёт просрочен, если срок оплаты (столбец C) раньше даты отчёта в F1. Воспроизведите результат макроса формулами. Хорошая привычка: если задачу решает одна формула, макрос не нужен. Макрос полезен, когда действие повторяется каждый день на новых файлах.
Скорость: чтение каждой ячейки по отдельности медленное. Для тысяч строк загрузите диапазон в массив
(arr = Range("A2:C5000").Value), обработайте его в памяти и запишите обратно одной строкой; на время работы
выключайте перерисовку: Application.ScreenUpdating = False.
Тренажёр не выполняет макросы и скрипты. Код из урока запускайте в настольном Excel (VBA) или в Excel для Интернета (Office Scripts). Здесь вы учитесь читать код и проверяете себя формулами и тестом.
Проверьте себя
Практика — в Pro
Живая таблица, проверка заданий и файлы .xlsx во всех 170 уроках. Прогресс хранится в этом браузере; синхронизация между устройствами появится позже.