(excel_2010_VBA) Скрипт поиска системной датой

Автор lapin9126, 20.10.2015, 09:07

« назад - далее »

lapin9126

Добрый день. Помогите со скриптом. Нужно найти в таблице exel последнюю ячейку в столбце «С» с системной датой + один день, то есть, например, сегодня 20.10.2015 плюс один день 21.10.2015 и удалить все строки ниже этой ячейки.

cheshiki1

если сегодняшняя дата + 1 нет в списке, что тогда брать? или такого не может быть.

lapin9126

#2
Такого не может быть, По "ходу пьесы" образовалась ещё одна задача которую надо решить другим макросом: чтобы поиск был в столбце «В» и удалял все строки с кроме строк с датой завтрашнего дня. Заранее благодарен.

cheshiki1

пока такой вариант по столбцу С
Sub FIND_to_C()
Dim i#, R#, max#
Application.ScreenUpdating = False 'отключаем обновление экрана
R = Cells(Rows.Count, 3).End(xlUp).Row
For i = 2 To R
  If Cells(i, 3) = Date + 1 Then
     If i > max Then max = i
   End If
Next
Rows(max + 1 & ":" & R).Delete
Application.ScreenUpdating = True 'включаем обновление экрана
End Sub

по столбцу С даты всегда по порядку? если да то код можно немного подкорректировать, что бы он не делал лишних телодвижений.

lapin9126

Да в столбце "С" по порядку. а в "B" может быть в разнобой.

cheshiki1

проверяйте, надеюсь таблицы не на 65000 строк.
Sub FIND_to_C()
Dim i#, R#, max#
Application.ScreenUpdating = False 'отключаем обновление экрана
R = Cells(Rows.Count, 3).End(xlUp).Row
For i = 2 To R
  If Cells(i, 3) > Date + 1 Then Rows(i & ":" & R).Delete: Exit For
Next
Application.ScreenUpdating = True 'включаем обновление экрана
End Sub
Sub FIND_to_B()
Dim i#, R#, max#
Application.ScreenUpdating = False 'отключаем обновление экрана
R = Cells(Rows.Count, 2).End(xlUp).Row
For i = R To 2
  If Cells(i, 2) <> Date + 1 Then Rows(i).Delete
Next
Application.ScreenUpdating = True 'включаем обновление экрана
End Sub

lapin9126

#6
Первый макрос рабочий, второй халтурит и ошибок не выдаёт :-[

vikttur

В заголовке цикла не указан шаг:
For i = R To 2 Step -1

lapin9126

#8
работает. Огромная благодарность всем.