Tự nhảy qua ngày mới khi đến mốc 24 giờ (2 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Thư Sinh Áo Trắng

Thành viên hoạt động
Tham gia
26/3/21
Bài viết
160
Được thích
31
- Chia thời gian trong ngày thành 46 mốc, tức 30 phút = 1 mốc thời gian. Vậy 1 ngày có 46 mốc. Làm sao để nhảy qua ngày mới khi qua thời điểm 23h30 ngày hôm đó.
- Xin giúp đỡ công thức (hàm excel) hoặc Sub/Function (chương trình VBA) để lịch tự nhảy qua ngày mới khi kéo ô ngày vượt qua mộc 23h30
(file đính kèm)nhayquangaymoikhiden00gio00phut.jpg
 

File đính kèm

Upvote 0
Ý bạn như vầy
Từ ngàyĐến ngày
4/30/19755/3/1975
6/9/19757/3/1975
8/4/19759/15/1975
10/18/197512/11/1975
20210508_083025.jpg
Chia 1 ngày thành 48 mốc 30 phút. Và đến mốc 00:00 thì nhảy sang ngày khác.
Theo thứ tự từ trên xuống dưới như cột này anh ạ. Em có làm cái If-End khi 00:00 lựa lần lượt từ trên xuống dưới nhưng chạy chưa dc.
 
Upvote 0
View attachment 258230
Chia 1 ngày thành 48 mốc 30 phút. Và đến mốc 00:00 thì nhảy sang ngày khác.
Theo thứ tự từ trên xuống dưới như cột này anh ạ. Em có làm cái If-End khi 00:00 lựa lần lượt từ trên xuống dưới nhưng chạy chưa dc.
Chạy code
Mã:
Sub ABC()
  Dim aDate(), Res(), sRow&, srRes&, i&, j&, k&
  Dim N&, dTime#, iTime#, iDate As Date
 
  dTime = 1 / 24 / (60 / 30) 'buoc nhay 30 phut
  N = Application.RoundUp(1 / dTime, 0) 'so buoc nhay 30 phut trong 1 ngay
  aDate = Range("D2", Range("D" & Rows.Count).End(xlUp)).Value
  sRow = UBound(aDate)
  srRes = sRow * N
  If srRes > 1000000 Then Exit Sub
  ReDim Res(1 To srRes, 1 To 2)
  For i = 1 To sRow
    iDate = aDate(i, 1)
    iTime = 0
    For j = 1 To N
      k = k + 1
      Res(k, 1) = iDate
      Res(k, 2) = iTime
      iTime = iTime + dTime
    Next j
  Next i
  Range("A2", Range("B" & Rows.Count).End(xlUp)).ClearContents
  Range("A2").Resize(srRes, 1).NumberFormat = "dd/mm/yyyy"
  Range("B2").Resize(srRes, 1).NumberFormat = "hh:mm"
  Range("A2").Resize(srRes, 2) = Res
End Sub
 
Upvote 0
Chạy code
Mã:
Sub ABC()
  Dim aDate(), Res(), sRow&, srRes&, i&, j&, k&
  Dim N&, dTime#, iTime#, iDate As Date

  dTime = 1 / 24 / (60 / 30) 'buoc nhay 30 phut
  N = Application.RoundUp(1 / dTime, 0) 'so buoc nhay 30 phut trong 1 ngay
  aDate = Range("D2", Range("D" & Rows.Count).End(xlUp)).Value
  sRow = UBound(aDate)
  srRes = sRow * N
  If srRes > 1000000 Then Exit Sub
  ReDim Res(1 To srRes, 1 To 2)
  For i = 1 To sRow
    iDate = aDate(i, 1)
    iTime = 0
    For j = 1 To N
      k = k + 1
      Res(k, 1) = iDate
      Res(k, 2) = iTime
      iTime = iTime + dTime
    Next j
  Next i
  Range("A2", Range("B" & Rows.Count).End(xlUp)).ClearContents
  Range("A2").Resize(srRes, 1).NumberFormat = "dd/mm/yyyy"
  Range("B2").Resize(srRes, 1).NumberFormat = "hh:mm"
  Range("A2").Resize(srRes, 2) = Res
End Sub
Em xin. Cảm ơn anh @HieuCD !
Cảm ơn các bác @VetMini @phuocam @Maika8008 đã cho code trong Top này.
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom