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

Liên hệ QC

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

  • tunhaysangngaymoikhidenmoc0h.xlsm
    10.7 KB · Đọc: 27
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