2017-05-29 137 views
0

我必須根據我給出的時間來查詢報告。 有4個時間槽:0,15,30,45.如何讓時間少於15分鐘

敵人的例子,如果當前時間是13:44,我會用時間作爲13:15到13:30查詢我的報告;如果當前時間是13:04,我會用時間作爲12:30到13:45來查詢我的報告。

我寫了下面的代碼,但它使用了大量的If和Else。請幫助我一些更好的代碼。

Sub Test() 

    hh = Format(Time, "hh") 
    mm = Format(Time, "mm") 

    If (0 < mm < 15) Then mm = mm - 30 
    If (15 < mm < 30) Then mm = mm - 30 
    If (30 < mm < 45) Then mm = mm - 30 
    If (45 < mm < 60) Then mm = mm - 30 
    If (mm < 0) Then 
     mm = -mm 
     hr = hr - 1 
    End If 
    st = hh & "&" & mm 
End Sub 
+0

我可以看到,你將時間縮短到15分鐘的時間間隔,13:44時間段爲13:15 - 13:30,但是13:04到13:30 - 13:45插槽?對於這個問題,爲什麼12:30 - 13:45時隙1小時15分鐘? – Jeeped

+0

與@Jeeped一樣,我不明白如何從給定時間導出插槽的邏輯,但建議您使用可能更適合您的邏輯的「Select Case」結構。 –

+0

對不起,我的錯誤12:30 - 12:45。抱歉。我舍入到低於15分鐘的時間間隔,也最接近舍入後它所屬的插槽(0,15,30,45) – Prayag

回答

0

您可以使用一些數學方法來舍入到特定的時間間隔,或者使工作表FLOOR函數發揮作用。

Option Explicit 

Sub Test() 
    Dim tm As Double, st As String 

    tm = Application.Floor(Time, TimeSerial(0, 15, 0)) 
    st = Format(tm, "hh\&mm") 

    Debug.Print st 

End Sub 
+0

感謝Jeeped,這可能會有所幫助 – Prayag

相關問題