Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如果单元格(日期)值在时间范围内,则删除整行_Excel_Vba - Fatal编程技术网

Excel 如果单元格(日期)值在时间范围内,则删除整行

Excel 如果单元格(日期)值在时间范围内,则删除整行,excel,vba,Excel,Vba,我需要编码方面的帮助。因此,基本上下面的代码将从另一张表中获取数据并自动关闭它。我想要输出的只是当天14:00到22:00之间的行。因此,如果SLA目标日期超出该范围,我希望删除该行并上移,以便输出之间没有空格。我不知道怎么做 下面是我的代码: Option Explicit Private Sub Workbook_Open() Call ClearData Call ReadDataFromCloseFile End Sub Sub ReadDataFromCloseF

我需要编码方面的帮助。因此,基本上下面的代码将从另一张表中获取数据并自动关闭它。我想要输出的只是当天14:00到22:00之间的行。因此,如果SLA目标日期超出该范围,我希望删除该行并上移,以便输出之间没有空格。我不知道怎么做

下面是我的代码:

Option Explicit

Private Sub Workbook_Open()
    Call ClearData
    Call ReadDataFromCloseFile
End Sub


Sub ReadDataFromCloseFile()
    On Error GoTo ErrHandler
    Application.ScreenUpdating = False

    Dim src_im As Workbook
    Dim src_fr As Workbook
    Dim src_chm As Workbook
    ' OPEN THE SOURCE EXCEL WORKBOOK IN "READ ONLY MODE".
    Set src_im = Workbooks.Open(ThisWorkbook.Path & "\incident_sla.csv", True, True)
    ' GET THE TOTAL ROWS FROM THE SOURCE WORKBOOK.
    Dim iTotalRows_im As Integer
    iTotalRows_im = src_im.Worksheets("incident_sla").UsedRange.Rows.Count
    Set src_fr = Workbooks.Open(ThisWorkbook.Path & "\sc_req_item_sla.csv", True, True)
    Dim iTotalRows_fr As Integer
    iTotalRows_fr = src_fr.Worksheets("sc_req_item_sla").UsedRange.Rows.Count
    Set src_chm = Workbooks.Open(ThisWorkbook.Path & "\change_task.csv", True, True)
    Dim iTotalRows_chm As Integer
    iTotalRows_chm = src_chm.Worksheets("change_task").UsedRange.Rows.Count

    ' COPY DATA FROM SOURCE (CLOSE WORKGROUP) TO THE DESTINATION WORKBOOK.
    Dim iCnt_im As Integer         ' COUNTER.
    For iCnt_im = 2 To iTotalRows_im
    If Format(src_im.Worksheets("incident_sla").Range("G" & iCnt_im).Value, "mm/dd/yyyy hh:mm") < Format(Date + TimeValue("22:00:00"), "mm/dd/yyyy hh:mm") Then
        Worksheets("Pre-shift").Range("A" & iCnt_im + 2).Formula = src_im.Worksheets("incident_sla").Range("A" & iCnt_im).Formula
        Worksheets("Pre-shift").Range("B" & iCnt_im + 2).Formula = src_im.Worksheets("incident_sla").Range("B" & iCnt_im).Formula
        Worksheets("Pre-shift").Range("B" & iCnt_im + 2).WrapText = False
        Worksheets("Pre-shift").Range("C" & iCnt_im + 2).Formula = src_im.Worksheets("incident_sla").Range("C" & iCnt_im).Formula
        Worksheets("Pre-shift").Range("C" & iCnt_im + 2).Borders.LineStyle = xlContinuous
        Worksheets("Pre-shift").Range("C" & iCnt_im + 2).Borders.Color = RGB(0, 0, 0)
        Worksheets("Pre-shift").Range("D" & iCnt_im + 2).Formula = src_im.Worksheets("incident_sla").Range("D" & iCnt_im).Formula
        Worksheets("Pre-shift").Range("E" & iCnt_im + 2).Formula = src_im.Worksheets("incident_sla").Range("E" & iCnt_im).Formula
        Worksheets("Pre-shift").Range("F" & iCnt_im + 2).Formula = src_im.Worksheets("incident_sla").Range("F" & iCnt_im).Formula
        Worksheets("Pre-shift").Range("G" & iCnt_im + 2).Value = Format(src_im.Worksheets("incident_sla").Range("G" & iCnt_im).Value, "mm/dd/yyyy hh:mm")
        Worksheets("Pre-shift").Range("H" & iCnt_im + 2).Formula = src_im.Worksheets("incident_sla").Range("H" & iCnt_im).Formula
        Worksheets("Pre-shift").Range("H" & iCnt_im + 2).Borders.LineStyle = xlContinuous
        Worksheets("Pre-shift").Range("H" & iCnt_im + 2).Borders.Color = RGB(0, 0, 0)
        Worksheets("Pre-shift").Range("I" & iCnt_im + 2).Value = Format(Date + TimeValue("22:00:00"), "mm/dd/yyyy hh:mm")
        Worksheets("Pre-shift").Range("J" & iCnt_im + 2).Formula = Worksheets("Pre-shift").Range("I" & iCnt_im + 2).Value <= Worksheets("Pre-shift").Range("G" & iCnt_im + 2).Value
    Else
            Worksheets("Pre-shift").Rows(iCnt_im + 2).EntireRow.Delete shift:=xlUp
    End If
    Next iCnt_im

    Sheets("Pre-shift").Range("A3") = "Incident ID"
    Sheets("Pre-shift").Range("A3").Interior.Color = RGB(0, 0, 0)
    Sheets("Pre-shift").Range("A3").Font.Color = RGB(255, 255, 255)
    Sheets("Pre-shift").Range("B3") = "Title"
    Sheets("Pre-shift").Range("B3").Interior.Color = RGB(0, 0, 0)
    Sheets("Pre-shift").Range("B3").Font.Color = RGB(255, 255, 255)
    Sheets("Pre-shift").Range("C3") = "Assignee Name"
    Sheets("Pre-shift").Range("C3").Interior.Color = RGB(0, 0, 0)
    Sheets("Pre-shift").Range("C3").Font.Color = RGB(255, 255, 255)
    Sheets("Pre-shift").Range("D3") = "Status"
    Sheets("Pre-shift").Range("D3").Interior.Color = RGB(0, 0, 0)
    Sheets("Pre-shift").Range("D3").Font.Color = RGB(255, 255, 255)
    Sheets("Pre-shift").Range("E3") = "Service Type"
    Sheets("Pre-shift").Range("E3").Interior.Color = RGB(0, 0, 0)
    Sheets("Pre-shift").Range("E3").Font.Color = RGB(255, 255, 255)
    Sheets("Pre-shift").Range("F3") = "Priority"
    Sheets("Pre-shift").Range("F3").Interior.Color = RGB(0, 0, 0)
    Sheets("Pre-shift").Range("F3").Font.Color = RGB(255, 255, 255)
    Sheets("Pre-shift").Range("G3") = "SLA Target Date"
    Sheets("Pre-shift").Range("G3").Interior.Color = RGB(0, 0, 0)
    Sheets("Pre-shift").Range("G3").Font.Color = RGB(255, 255, 255)
    Sheets("Pre-shift").Range("H3") = iCnt_im
    Sheets("Pre-shift").Range("H3").Interior.Color = RGB(0, 0, 0)
    Sheets("Pre-shift").Range("H3").Font.Color = RGB(255, 255, 255)
'
'    Dim after As Integer
'
'    For after = 2 To iCnt_im
'    If Worksheets("Pre-shift").Range("J" & after + 2).Value = False Then
'    Else
'            Worksheets("Pre-shift").Rows(after + 2).EntireRow.Delete shift:=xlUp
'    End If
'    Next after

'    If iCnt_im = 2 Then
'    Sheets("Pre-shift").Range("A4").Interior.Color = RGB(191, 191, 191)
'    End If
    Dim iCnt_fr As Integer
    For iCnt_fr = 2 To iTotalRows_fr
'        If CDate(src_fr.Worksheets("sc_req_item_sla").Range("E" & iCnt_fr).Formula) > Now() Then
        Worksheets("Pre-shift").Range("A" & iCnt_fr + iCnt_im + 2).Formula = src_fr.Worksheets("sc_req_item_sla").Range("A" & iCnt_fr).Formula
        Worksheets("Pre-shift").Range("B" & iCnt_fr + iCnt_im + 2).Formula = src_fr.Worksheets("sc_req_item_sla").Range("B" & iCnt_fr).Formula
        Worksheets("Pre-shift").Range("B" & iCnt_fr + iCnt_im + 2).WrapText = False
        Worksheets("Pre-shift").Range("C" & iCnt_fr + iCnt_im + 2).Formula = src_fr.Worksheets("sc_req_item_sla").Range("C" & iCnt_fr).Formula
        Worksheets("Pre-shift").Range("C" & iCnt_fr + iCnt_im + 2).Borders.LineStyle = xlContinuous
        Worksheets("Pre-shift").Range("C" & iCnt_fr + iCnt_im + 2).Borders.Color = RGB(0, 0, 0)
        Worksheets("Pre-shift").Range("D" & iCnt_fr + iCnt_im + 2).Formula = src_fr.Worksheets("sc_req_item_sla").Range("D" & iCnt_fr).Formula
        Worksheets("Pre-shift").Range("E" & iCnt_fr + iCnt_im + 2).Formula = src_fr.Worksheets("sc_req_item_sla").Range("E" & iCnt_fr).Formula
        Worksheets("Pre-shift").Range("F" & iCnt_fr + iCnt_im + 2).Formula = src_fr.Worksheets("sc_req_item_sla").Range("F" & iCnt_fr).Formula
        Worksheets("Pre-shift").Range("G" & iCnt_fr + iCnt_im + 2).Formula = src_fr.Worksheets("sc_req_item_sla").Range("G" & iCnt_im).Formula
'        Else: .EntireRow.Delete
'        End If
    Next iCnt_fr
    Sheets("Pre-shift").Range("A" & iCnt_im + 3).Formula = "Fulfillment ID"
    Sheets("Pre-shift").Range("A" & iCnt_im + 3).Interior.Color = RGB(0, 0, 0)
    Sheets("Pre-shift").Range("A" & iCnt_im + 3).Font.Color = RGB(255, 255, 255)
    Sheets("Pre-shift").Range("B" & iCnt_im + 3).Formula = "Title"
    Sheets("Pre-shift").Range("C" & iCnt_im + 3).Formula = "Assignee Name"
    Sheets("Pre-shift").Range("D" & iCnt_im + 3).Formula = "Status"
    Sheets("Pre-shift").Range("E" & iCnt_im + 3).Formula = "SLA Target Date"
    Sheets("Pre-shift").Range("F" & iCnt_im + 3).Formula = "Assignment"
    Sheets("Pre-shift").Range("A" & iCnt_im + 3).Interior.Color = RGB(0, 0, 0)
    Sheets("Pre-shift").Range("A" & iCnt_im + 3).Font.Color = RGB(255, 255, 255)
    Sheets("Pre-shift").Range("A" & iCnt_im + 3).Interior.Color = RGB(0, 0, 0)
    Sheets("Pre-shift").Range("A" & iCnt_im + 3).Font.Color = RGB(255, 255, 255)
    Sheets("Pre-shift").Range("B" & iCnt_im + 3).Interior.Color = RGB(0, 0, 0)
    Sheets("Pre-shift").Range("B" & iCnt_im + 3).Font.Color = RGB(255, 255, 255)
    Sheets("Pre-shift").Range("C" & iCnt_im + 3).Interior.Color = RGB(0, 0, 0)
    Sheets("Pre-shift").Range("C" & iCnt_im + 3).Font.Color = RGB(255, 255, 255)
    Sheets("Pre-shift").Range("D" & iCnt_im + 3).Interior.Color = RGB(0, 0, 0)
    Sheets("Pre-shift").Range("D" & iCnt_im + 3).Font.Color = RGB(255, 255, 255)
    Sheets("Pre-shift").Range("E" & iCnt_im + 3).Interior.Color = RGB(0, 0, 0)
    Sheets("Pre-shift").Range("E" & iCnt_im + 3).Font.Color = RGB(255, 255, 255)
    Sheets("Pre-shift").Range("F" & iCnt_im + 3).Interior.Color = RGB(0, 0, 0)
    Sheets("Pre-shift").Range("F" & iCnt_im + 3).Font.Color = RGB(255, 255, 255)

    Dim iCnt_chm As Integer
    For iCnt_chm = 2 To iTotalRows_chm
    Worksheets("Pre-shift").Range("A" & iCnt_chm + iCnt_fr + iCnt_im + 2).Formula = src_chm.Worksheets("change_task").Range("A" & iCnt_chm).Formula
    Worksheets("Pre-shift").Range("B" & iCnt_chm + iCnt_fr + iCnt_im + 2).Formula = src_chm.Worksheets("change_task").Range("B" & iCnt_chm).Formula
    Worksheets("Pre-shift").Range("C" & iCnt_chm + iCnt_fr + iCnt_im + 2).Formula = src_chm.Worksheets("change_task").Range("C" & iCnt_chm).Formula
    Worksheets("Pre-shift").Range("C" & iCnt_chm + iCnt_fr + iCnt_im + 2).HorizontalAlignment = xlLeft
    'Worksheets("Pre-shift").Range("C" & iCnt_chm + iCnt_fr + iCnt_im + 2).WrapText = True
    Worksheets("Pre-shift").Range("D" & iCnt_chm + iCnt_fr + iCnt_im + 2).Formula = src_chm.Worksheets("change_task").Range("D" & iCnt_chm).Formula
    Worksheets("Pre-shift").Range("E" & iCnt_chm + iCnt_fr + iCnt_im + 2).Formula = src_chm.Worksheets("change_task").Range("E" & iCnt_chm).Formula
    Worksheets("Pre-shift").Range("F" & iCnt_chm + iCnt_fr + iCnt_im + 2).Formula = src_chm.Worksheets("change_task").Range("F" & iCnt_chm).Formula
    Worksheets("Pre-shift").Range("D" & iCnt_chm + iCnt_fr + iCnt_im + 2).Borders.LineStyle = xlContinuous
    Worksheets("Pre-shift").Range("D" & iCnt_chm + iCnt_fr + iCnt_im + 2).Borders.Color = RGB(0, 0, 0)
    Worksheets("Pre-shift").Range("G" & iCnt_chm + iCnt_fr + iCnt_im + 2).Formula = src_chm.Worksheets("change_task").Range("G" & iCnt_chm).Formula

    Next iCnt_chm
    Sheets("Pre-shift").Range("A" & iCnt_fr + iCnt_im + 3).Formula = "Parent Change"
    Sheets("Pre-shift").Range("B" & iCnt_fr + iCnt_im + 3).Formula = "Task ID"
    Sheets("Pre-shift").Range("C" & iCnt_fr + iCnt_im + 3).Formula = "Title"
    Sheets("Pre-shift").Range("D" & iCnt_fr + iCnt_im + 3).Formula = "Assignee"
    Sheets("Pre-shift").Range("E" & iCnt_fr + iCnt_im + 3).Formula = "Status"
    Sheets("Pre-shift").Range("F" & iCnt_fr + iCnt_im + 3).Formula = "Planned Start"
    Sheets("Pre-shift").Range("G" & iCnt_fr + iCnt_im + 3).Formula = "Planned End"

    Sheets("Pre-shift").Range("A" & iCnt_fr + iCnt_im + 3).Interior.Color = RGB(0, 0, 0)
    Sheets("Pre-shift").Range("A" & iCnt_fr + iCnt_im + 3).Font.Color = RGB(255, 255, 255)
    Sheets("Pre-shift").Range("B" & iCnt_fr + iCnt_im + 3).Interior.Color = RGB(0, 0, 0)
    Sheets("Pre-shift").Range("B" & iCnt_fr + iCnt_im + 3).Font.Color = RGB(255, 255, 255)
    Sheets("Pre-shift").Range("C" & iCnt_fr + iCnt_im + 3).Interior.Color = RGB(0, 0, 0)
    Sheets("Pre-shift").Range("C" & iCnt_fr + iCnt_im + 3).Font.Color = RGB(255, 255, 255)
    Sheets("Pre-shift").Range("D" & iCnt_fr + iCnt_im + 3).Interior.Color = RGB(0, 0, 0)
    Sheets("Pre-shift").Range("D" & iCnt_fr + iCnt_im + 3).Font.Color = RGB(255, 255, 255)
    Sheets("Pre-shift").Range("E" & iCnt_fr + iCnt_im + 3).Interior.Color = RGB(0, 0, 0)
    Sheets("Pre-shift").Range("E" & iCnt_fr + iCnt_im + 3).Font.Color = RGB(255, 255, 255)
    Sheets("Pre-shift").Range("F" & iCnt_fr + iCnt_im + 3).Interior.Color = RGB(0, 0, 0)
    Sheets("Pre-shift").Range("F" & iCnt_fr + iCnt_im + 3).Font.Color = RGB(255, 255, 255)
    Sheets("Pre-shift").Range("G" & iCnt_fr + iCnt_im + 3).Interior.Color = RGB(0, 0, 0)
    Sheets("Pre-shift").Range("G" & iCnt_fr + iCnt_im + 3).Font.Color = RGB(255, 255, 255)

    ' CLOSE THE SOURCE FILE.
    src_im.Close False             ' FALSE - DON'T SAVE THE SOURCE FILE.
    Set src_im = Nothing
    src_fr.Close False             ' FALSE - DON'T SAVE THE SOURCE FILE.
    Set src_fr = Nothing
    src_chm.Close False             ' FALSE - DON'T SAVE THE SOURCE FILE.
    Set src_chm = Nothing

ErrHandler:
    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub
选项显式
私有子工作簿_Open()
调用ClearData
调用ReadDataFromCloseFile
端接头
子ReadDataFromCloseFile()
关于错误转到错误处理程序
Application.ScreenUpdating=False
Dim src_im作为工作簿
Dim src\U fr作为工作簿
Dim src_chm作为工作簿
'以“只读模式”打开源EXCEL工作簿。
设置src_im=Workbooks.Open(thishworkbook.Path&“\incident_sla.csv”,True,True)
'从源工作簿获取总行数。
Dim iTotalRows\u im为整数
iTotalRows\u im=src\u im.工作表(“事件\u sla”).UsedRange.Rows.Count
设置src\u fr=Workbooks.Open(thishworkbook.Path&“\sc\u req\u item\u sla.csv”,True,True)
Dim iTotalRows\u fr为整数
iTotalRows\u fr=src\u fr.工作表(“sc\U需求项目\u sla”)。使用DRANGE.Rows.Count
设置src\u chm=Workbooks.Open(thishworkbook.Path&“\change\u task.csv”,True,True)
Dim iTotalRows\u chm作为整数
iTotalRows\u chm=src\u chm.Worksheets(“更改任务”).UsedRange.Rows.Count
'将数据从源(关闭工作组)复制到目标工作簿。
Dim iCnt\u im作为整数计数器。
对于iCnt\u im=2到iTotalRows\u im
如果格式(src\U im.工作表(“事件”sla)范围(“G”)和iCnt\U im.值,“mm/dd/yyyy hh:mm”)<格式(日期+时间值(“22:00:00”),“mm/dd/yyyy hh:mm”),则
工作表(“班前”).范围(“A”和iCnt\U im+2).公式=src\U im.工作表(“事件\U sla”).范围(“A”和iCnt\U im).公式
工作表(“班前”).范围(“B”和iCnt\U im+2).公式=src\U im.工作表(“事件\U sla”).范围(“B”和iCnt\U im).公式
工作表(“班前”).范围(“B”和iCnt_im+2).WrapText=False
工作表(“班前”).范围(“C”和iCnt\U im+2).公式=src\U im.工作表(“事件\U sla”).范围(“C”和iCnt\U im).公式
工作表(“班前”).范围(“C”和iCnt\U im+2).Borders.LineStyle=xlContinuous
工作表(“班前”).范围(“C”和iCnt_im+2).Borders.Color=RGB(0,0,0)
工作表(“班前”).范围(“D”和iCnt\U im+2).公式=src\U im.工作表(“事件\U sla”).范围(“D”和iCnt\U im).公式
工作表(“班前”).范围(“E”和iCnt\U im+2).公式=src\U im.工作表(“事件\U sla”).范围(“E”和iCnt\U im).公式
工作表(“班前”).范围(“F”和iCnt\U im+2).公式=src\U im.工作表(“事件\U sla”).范围(“F”和iCnt\U im).公式
工作表(“班前”).范围(“G”和iCnt\U im+2).值=格式(src\U im.工作表(“事件\U sla”).范围(“G”和iCnt\U im).值,“mm/dd/yyyy hh:mm”)
工作表(“班前”).范围(“H”和iCnt\U im+2).公式=src\U im.工作表(“事故\U sla”).范围(“H”和iCnt\U im).公式
工作表(“班前”).范围(“H”和iCnt\U im+2).Borders.LineStyle=xlContinuous
工作表(“班前”).范围(“H”和iCnt_im+2).Borders.Color=RGB(0,0,0)
工作表(“班前”).范围(“I”和iCnt\U im+2).值=格式(日期+时间值(“22:00:00”),“mm/dd/yyyy hh:mm”)

工作表(“班前”)。范围(“J”和iCnt_im+2)。公式=工作表(“班前”)。范围(“I”和iCnt_im+2)。值这将正确评估您的时间值。难道不能不将数据从源(关闭工作组)复制到目标工作簿吗

今天的日期也要核对一下

If TimeValue(src_im.Worksheets("incident_sla").Range("G" & iCnt_im).Value) > TimeValue("13:59:59") And TimeValue(src_im.Worksheets("incident_sla").Range("G" & iCnt_im).Value) < TimeValue("22:00:01")  and Int(src_im.Worksheets("incident_sla").Range("G" & iCnt_im).Value) = Date Then
如果时间值(src_im.工作表(“事件”)范围(“G”)和iCnt_im.值)>时间值(“13:59:59”)和时间值(src_im.工作表(“事件”)范围(“G”)和iCnt_im.值)
如果源数据在一天以上(例如3天)之间,则会出现问题。您是说标准有日期吗?你查的是几号?是的。我只想得到今天14:00-22:00之间的数据。