Q:

How to delete rows within a time frame (date&time format, but I want to only keep rows between certain hours)

I have 55437 rows of data.

My goal is to filter out only the flow rate between 1pm and 7pm. As you can see from the time intervals each minute has 3 readings, so manually doing it is going to take a long time. Is there a way of using VBA to delete all the rows not in the specified time period?
Thank you.
This is what the top answer's solution looks like after I have changed 0.541666667 to 0.54166666:

A:

First you need to understand how dates & time work in excel.
Although your column appears to be filled with just time stamps (due to the format you chose), the cell is actually accompanied by a date. If you look at the Formula Bar in your photo, you can see the date as well. 
All dates can be converted into a corresponding number. The relationship between the two is Date.Time = Integer.Decimal. Each integer is unique to a calendar day (you can find the starting point by converting 0 to a date). Since the time is not unique (I.E. the clock will strike 1:00 PM every day) the decimal number repeats itself at the same time every day. A easy decimal/time conversion is noon = .50

With that being said we can solve your problem by

Drop the integer (date)
Convert 1:00 PM & 7:00 PM to their decimal counterpart (roughly .541667 & .791667 respectively)
Loop through your rows and extract the decimal. If the extracted decimal is not in-between the thresholds determined in step 2 then go to step 4. 
Add that cell to a Union (Collection of cells) and delete the Union (unwanted rows) at the end

It's worth mentioning that you can extract the decimal (time) in a few ways. I am making use of the INT function which turns all values after the decimal to 0. You could also use Split OR a bunch of other methods (Mid, Left, Right, Len, Search, Find, etc)

Tested and working fine
Option Explicit

Sub ClockWorkOrange()

Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1") '<- Update
Dim LRow As Long, r As Range, myRange As Range, DeleteMe As Range

LRow = ws.Range("B" & ws.Rows.Count).End(xlUp).Row
Set myRange = ws.Range("B3:B" & LRow)

For Each r In myRange
    If (r.Value2 - Int(r.Value2)) < 0.541666667 Or (r.Value2 - Int(r.Value2)) > 0.791666667 Then
        If Not DeleteMe Is Nothing Then
            Set DeleteMe = Union(DeleteMe, r)
        Else
            Set DeleteMe = r
        End If
    End If
Next r

If Not DeleteMe Is Nothing Then DeleteMe.EntireRow.Delete

End Sub

