Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.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
Vba 根据不工作的条件删除行_Vba_Excel_Datetime - Fatal编程技术网

Vba 根据不工作的条件删除行

Vba 根据不工作的条件删除行,vba,excel,datetime,Vba,Excel,Datetime,我不熟悉宏函数,一直试图删除excel数据ETB_DT列的4:00、12:00、20:00行,以便显示8小时表,即00:00、08:00、16:00、24:00行 下面是我当前数据的示例 ETB_DT_TEST PREDICTED_RECORDS Friday 00:00:00.0000000 3 Saturday 00:00:00.0000000 4 Friday 04:00:00.0000000

我不熟悉宏函数,一直试图删除excel数据ETB_DT列的4:00、12:00、20:00行,以便显示8小时表,即00:00、08:00、16:00、24:00行

下面是我当前数据的示例

     ETB_DT_TEST           PREDICTED_RECORDS
Friday   00:00:00.0000000             3
Saturday 00:00:00.0000000             4  
Friday   04:00:00.0000000             105
Saturday 04:00:00.0000000             5
Friday   08:00:00.0000000             10
Saturday 08:00:00.0000000             15
Friday   12:00:00.0000000             30
Saturday 12:00:00.0000000             112
Friday   16:00:00.0000000             56
Saturday 16:00:00.0000000             45
Friday   20:00:00.0000000             10
Saturday 20:00:00.0000000             5
Friday   24:00:00.0000000             34
Saturday 24:00:00.0000000             115
我已经尝试了下面的代码,但它似乎不工作

Sub Button2_Click()
Dim pattern As String
pattern = "04:00"
RowCount = ActiveSheet.UsedRange.Rows.Count
Dim i As Integer

For i = 1 To RowCount
    Dim j As Integer
    For j = 1 To 1
        If Cells(i, j) = pattern Then
           Cells(i, j).EntireRow.Delete
        End If
    Next j
Next i
End Sub
下面是所需输出的示例

          ETB_DT_TEST              PREDICTED_RECORDS
    Friday   00:00:00.0000000             3
    Saturday 00:00:00.0000000             4  
    Friday   08:00:00.0000000             10
    Saturday 08:00:00.0000000             15
    Friday   16:00:00.0000000             56
    Saturday 16:00:00.0000000             45
    Friday   24:00:00.0000000             34
    Saturday 24:00:00.0000000             115
你有什么想法吗?感谢您的帮助。

试试这段代码

With Sheet.UsedRange 'replace Sheet with your Sheet
For i = .Rows.Count To 2 Step -1
    If InStr(.Cells(i, 1).Value, "8:00:00") = 0 And InStr(.Cells(i, 1).Value, "16:00:00") = 0 And InStr(.Cells(i, 1).Value, "24:00:00") = 0 Then  'change 1 to your column.
        .Cells(i, 1).EntireRow.Delete
    End If
Next i
End With
Sub test()
    Dim rngDB As Range, rng As Range
    Dim rngU As Range, vArray
    Dim i As Integer, isYes As Boolean

    Set rngDB = Range("a1", Range("a" & Rows.Count).End(xlUp))
    vArray = Array("04:00:00", "12:00:00", "20:00:00")

    For Each rng In rngDB
        isYes = False
        For i = 0 To UBound(vArray)
            If InStr(rng, vArray(i)) Then
                isYes = True
                Exit For
            End If
        Next i
        If isYes Then
            If rngU Is Nothing Then
                Set rngU = rng
            Else
                Set rngU = Union(rngU, rng)
            End If
        End If
    Next rng
    If rngU Is Nothing Then
    Else
        rngU.EntireRow.Delete
    End If

End Sub
试试这个代码

Sub test()
    Dim rngDB As Range, rng As Range
    Dim rngU As Range, vArray
    Dim i As Integer, isYes As Boolean

    Set rngDB = Range("a1", Range("a" & Rows.Count).End(xlUp))
    vArray = Array("04:00:00", "12:00:00", "20:00:00")

    For Each rng In rngDB
        isYes = False
        For i = 0 To UBound(vArray)
            If InStr(rng, vArray(i)) Then
                isYes = True
                Exit For
            End If
        Next i
        If isYes Then
            If rngU Is Nothing Then
                Set rngU = rng
            Else
                Set rngU = Union(rngU, rng)
            End If
        End If
    Next rng
    If rngU Is Nothing Then
    Else
        rngU.EntireRow.Delete
    End If

End Sub
以前,

代码

之后,

您的星期五似乎在dddd和hh之间有两个空格

代码

之后,


您的星期五似乎在dddd和hh之间有两个空格

您好,这给了我一个无误的下一个,您知道为什么吗?@Faheera抱歉,我忘记了
结束if
。应该行得通now@velblúd-虽然可能需要OP的确认,但我相信这些文本看起来像datetimes,而不是真实的datetimes。Excel没有可以显示7位小数的数字格式;最大值为小数点后3位(例如毫秒)。嗨,我忘了提到数据在excel中不是小时格式,但它是文本,它仍然可以使用该代码吗?我更改了条件,所以现在它将“看起来像日期时间的文本”视为文本。嗨,这给了我一个无误的下一个,你知道为什么吗?@Faheera抱歉,我忘了
结束if
。应该行得通now@velblúd-虽然可能需要OP的确认,但我相信这些文本看起来像datetimes,而不是真实的datetimes。Excel没有可以显示7位小数的数字格式;最大值为小数点后3位(例如毫秒)。嗨,我忘了提到数据在excel中不是小时格式,但它是文本,它仍然可以使用该代码吗?我更改了条件,所以现在它将“看起来像日期时间的文本”视为文本。请阅读-总结是,这不是解决志愿者问题的理想方式,而且可能对获得答案起到反作用。请不要将此添加到您的问题中。您声明要“删除4:00、12:00、20:00行”,同时保留“08:00、16:00、24:00行”。什么,请告诉我你打算怎么处理00:00:00排?@Jeeped嗨,我忘了说我也打算保留它我已经通过了你对这个问题的投票,因为在故事碎片被移除后,你至少尝试过自己的代码;真是太好了!然而,至少有两个突出的事实从原始问题中被省略,这将加速解决问题。请记住这一点,以备将来之用;帮助我们帮助你@Jeeped非常感谢您的帮助,请记住,下次请阅读-总结是,这不是一个理想的方式来解决志愿者,可能会适得其反获得答案。请不要将此添加到您的问题中。您声明要“删除4:00、12:00、20:00行”,同时保留“08:00、16:00、24:00行”。什么,请告诉我你打算怎么处理00:00:00排?@Jeeped嗨,我忘了说我也打算保留它我已经通过了你对这个问题的投票,因为在故事碎片被移除后,你至少尝试过自己的代码;真是太好了!然而,至少有两个突出的事实从原始问题中被省略,这将加速解决问题。请记住这一点,以备将来之用;帮助我们帮助你@吉佩德也非常感谢你的帮助,下次我会记住这一点