返回列表 上一主題 發帖

[發問] 時間範圍比對問題

[發問] 時間範圍比對問題

本帖最後由 child 於 2011-10-12 10:23 編輯

想針對某段時間找出符合時間範圍內的資料,說明如下:

例:
針對2011/10/11 8:00~2011/10/11 14:30的時間範圍,比對建立時間(B欄)到修改時間(C欄)的時間範圍(多筆資料),若建立時間~修改時間的時間範圍內有時間剛好落在需比對的時間範圍內,D欄比對結果顯示Y;若不在需比對時間範圍內則顯示N。

很謝謝大家的幫忙^_^

檔案名稱        建立時間            修改時間                             比對
AA        2011/10/1 08:30        2011/10/11 12:00        Y
AB        2011/10/1 09:05        2011/10/6 20:15        N
AC        2011/10/6 09:32        2011/10/11 13:43        Y
DD        2011/10/11 15:00        2011/10/12 17:43        N
小孩

回復 1# child
試試看
  1. Sub Ex()
  2.     Dim A As Long, B As Long, i As Integer
  3.     A = #10/11/2011 8:00:00 AM#
  4.     B = #10/11/2011 2:30:00 PM#
  5.     For i = 1 To [C1].End(xlDown).Row
  6.         If Cells(i, "C") >= A And Cells(i, "C") <= B Then
  7.             Cells(i, "D") = "Y"
  8.         Else
  9.             Cells(i, "D") = "N"
  10.         End If
  11.     Next
  12. End Sub
複製代碼

TOP

回復 2# GBKEE

版大好^_^
謝謝版大的幫忙

不好意思!剛剛沒有將問題點說明清楚,主要是想針對建立時間和修改時間兩個欄位之間的時間範圍比對。
以2011/10/11 8:00~2011/10/11 14:30的時間範圍,下列資料若只有比對修改時間會比對不到。

說明:
查詢時間2011/10/11 8:00~2011/10/11 14:30的時間區段,若這段時間有時間落在建立時間~修改時間這段時間範圍裏,則代表有比對到。

檔案名稱        建立時間            修改時間                             比對
AA        2011/10/1 08:30        2011/10/12 12:00        Y
AB        2011/10/11 09:05      2011/10/13 20:15        Y
BA        2011/10/1 09:05        2011/10/6 20:15           N

很謝謝版大的幫忙,感激不盡^_^
小孩

TOP

回復 3# child
If Cells(i, "C") >= A And Cells(i, "C") <= B Then  改成 ->  If Cells(i, "B") >= A And Cells(i, "C") <= B Then

TOP

回復 4# GBKEE


不好意思一直麻煩版大,之前第一次測試有修改成If Cells(i, "B") >= A And Cells(i, "C") <= B Then,
但是因為要比對是時間範圍,所以無法呈現自己想要的結果,如下:
查詢時間區段:2011/10/11 8:00~2011/10/11 14:30
比對2011/10/11 09:05~2011/10/13 20:15 ,2011/10/11 09:05 >2011/10/11 14:30比對不到。
比對2011/10/1 08:30~2011/10/12 12:00 ,2011/10/1 08:30<2011/10/11 8:00、2011/10/12 12:00 >2011/10/11 14:30比對不到。


程式比對方式說明:
2011/10/11 8:00~2011/10/11 14:30的時間區段比對下列時間區段:
有部分時間落在2011/10/11 09:05~2011/10/13 20:15之間→有比對到
有部分時間落在2011/10/1 08:30~2011/10/12 12:00之間→有比對到
無時間點落在2011/10/1 09:05~2011/10/6 20:15之間→沒有比對到

呈現結果:
檔案名稱        建立時間            修改時間                             比對
AA        2011/10/1 08:30        2011/10/12 12:00        Y
AB        2011/10/11 09:05      2011/10/13 20:15        Y
BA        2011/10/1 09:05        2011/10/6 20:15           N

真是抱歉沒有將問題說明清楚,很謝謝版大的幫忙^_^
小孩

TOP

回復 5# child
  1. Sub nn()
  2. a = #10/11/2011 8:00:00 AM#
  3. b = #10/11/2011 2:30:00 PM#
  4. For Each C In Range([C2], [C2].End(xlDown))
  5. d = C.Offset(, -1)
  6. If (a >= d And a <= C) Or (b >= d And b <= C) Then C.Offset(, 1) = "Y" Else C.Offset(, 1) = "N"
  7. Next
  8. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 6# Hsieh


    很謝謝Hsieh版大的幫忙,剛剛測試發現若比對時間剛好在查詢時間2011/10/11 8:00~2011/10/11 14:30的範圍內,好像就比對不到。

檔案名稱        建立時間            修改時間                            比對
DD        2011/10/11 09:05        2011/10/11 10:05        N

謝謝Hsieh版大的幫忙^_^
小孩

TOP

回復 7# child


    沒錯啊!
play.gif
學海無涯_不恥下問

TOP

回復 8# Hsieh


    謝謝Hsieh版大您的幫忙,剛剛測試發現若修改時間在2011/10/11  13:00:00 PM之內,好像就比對不到,但若大於2011/10/11  13:00:00 PM則可以。測試結果如下:

檔案名稱        建立時間                                 修改時間                                                   比對
AA        2011/10/11 08:30:00 AM        2011/10/11 12:59:59 PM        N
AB        2011/10/11 09:05:00 AM        2011/10/13  13:00:00 PM        Y
DE        2011/10/11 09:00:00 AM        2011/10/11 10:43:00 AM        N

還是需要作什麼設定?
小孩

TOP

回復 9# child
判斷式的條件看看這樣夠不夠
  1. Sub nn()
  2. a = #10/11/2011 8:00:00 AM#
  3. b = #10/11/2011 12:30:00 PM#
  4. For Each C In Range([C2], [C2].End(xlDown))
  5. d = C.Offset(, -1)
  6. If (a >= d And a <= C) Or (a <= d And a <= C) Or (b >= d And C <= b) Then C.Offset(, 1) = "Y" Else C.Offset(, 1) = "N"
  7. Next
  8. End Sub
複製代碼
學海無涯_不恥下問

TOP

        靜思自在 : 要批評別人時,先想想自己是否完美無缺。
返回列表 上一主題