Excel VBA - перемещать строки, если время / дата в столбце более 6 часов назад - PullRequest
0 голосов
/ 03 декабря 2018

Я не уверен, возможно ли это?Я пытаюсь переместить элементы из моего списка, которые не были затронуты в течение последних шести часов, на новый лист для обработки.Как мне скопировать / переместить строки, используя формулу, а не просто текстовый сценарий сопоставления?

Пока мой код:

With Sheets("Scheduled")
    .Select
    Firstrow = .UsedRange.Cells(2).Offset(1, 0).Row
    Lastrow = .UsedRange.Rows(.UsedRange.Rows.Count).Row
    For Lrow = Lastrow To Firstrow Step -1
       With .Cells(Lrow, "C")
            If Not IsError(.Value) Then
                If .Value <> "Scheduled" Then
                    'Copy all "Not Scheduled" reports to the "Tracker" sheet and remove them from "Scheduled".
                    .EntireRow.Copy Sheets("Tracker").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
                    .EntireRow.Delete
                End If
            End If
        End With
    Next Lrow
End With

Этот код не совсем тот раздел, о котором я говорюпримерно, но так я перемещаю ряды вокруг других частей рабочей книги.

1 Ответ

0 голосов
/ 03 декабря 2018
  1. Измените букву столбца C,

    With .Cells(Lrow, "C")
    

    ... на букву столбца со значением даты и времени, которое вы хотите проверить.

  2. Изменить,

      If Not IsError(.Value) Then
    

    ... на,

      If IsNumeric(.Value) Then   'this also moves blanks
    
  3. Изменить сравнение с,

         If .Value <> "Scheduled" Then
    

    ... to,

         If .Value2 < (Now - TimeSerial(6, 0, 0)) Then
    
  4. Измените имя рабочего листа Tracker в

          .EntireRow.Copy Sheets("Tracker").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
    

    ... на любое имя рабочего листа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...