Excel VBA-如果列中的时间/日期超过6小时前移动行

时间:2018-12-02 23:00:47

标签: excel vba

我不确定是否可行?我正在尝试将列表中过去六个小时内未触及的项目移至新的工作表中。如何使用公式而不是匹配文本方案复制/移动行?

到目前为止,我的代码:

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 :(得分:1)

  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
    

    ...到

         If .Value2 < (Now - TimeSerial(6, 0, 0)) Then
    
  4. 更改Tracker工作表名称,

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

    ...无论目标工作表的名称是什么。