Chuyển câu lệnh excel thành Hàm tự tạo về thời gian trong chấm công (4 người xem)

Liên hệ QC

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

trongtrung1504

Thành viên chính thức
Tham gia
26/1/12
Bài viết
98
Được thích
38
Mình có câu lệnh excel như thế này:
up =HOUR(A1)&":"&IF(MOD(MINUTE(A1),15)>0,((INT(MINUTE(A1)/15)+1)*15),(INT(MINUTE(A1)/15)*15))
down =HOUR(A1)&":"&(INT(MINUTE(A1)/15)*15)
Bây giờ mình muốn chuyển 2 câu lệnh này thành hàm tự tạo là RoundTimeUp vs RoundTimeDown.
Hiện tại thì câu lệnh trên vẫn ra giá trị đúng với yêu cầu mình muốn, nhung do dài quá dễ gaay khó hiểu cho người khác
 

File đính kèm

PHP:
Option Explicit
Function LamTron(Tmr As Double)
 Dim Fut As Integer, Myf As Integer

 Fut = Minute(Tmr)
 Myf = Switch(Fut < 15, 0, Fut < 30, 15, Fut < 45, 30, Fut < 60, 45)
 LamTron = Format(TimeSerial(Hour(Tmr), Myf, 0), "hh:mm")
End Function
 
Upvote 0
Mình có câu lệnh excel như thế này:
up =HOUR(A1)&":"&IF(MOD(MINUTE(A1),15)>0,((INT(MINUTE(A1)/15)+1)*15),(INT(MINUTE(A1)/15)*15))
down =HOUR(A1)&":"&(INT(MINUTE(A1)/15)*15)
Bây giờ mình muốn chuyển 2 câu lệnh này thành hàm tự tạo là RoundTimeUp vs RoundTimeDown.
Hiện tại thì câu lệnh trên vẫn ra giá trị đúng với yêu cầu mình muốn, nhung do dài quá dễ gaay khó hiểu cho người khác

Có cách này cho bạn thử xem sao nha

Bạn đặt 1 name :

Với cell A1 là dữ liệu.
Tại đâu đó bạn muốn làm tròn lên bằng công thức

Và làm tròn xuống bằng công thức

Format các cell kết quả là hh:mm , kết quả này có thể tính toán bình thường.
Công thức ngắn và tên công thức cũng rõ nghĩa hy vọng có thể đúng ý bạn cần --=0

Bạn muốn chỉnh làm tròn bao nhiêu phút thì chỉnh trong Name, hiện là làm tròn 15 phút theo ý bạn
 
Upvote 0
PHP:
Option Explicit
Function LamTron(Tmr As Double)
 Dim Fut As Integer, Myf As Integer

 Fut = Minute(Tmr)
 Myf = Switch(Fut < 15, 0, Fut < 30, 15, Fut < 45, 30, Fut < 60, 45)
 LamTron = Format(TimeSerial(Hour(Tmr), Myf, 0), "hh:mm")
End Function

Em mượn hàm Bác thêm cho đủ UP và DOWN --=0

PHP:
Function LamTron(Tmr As Double, sTy As String) 
Dim Fut As Integer, Myf As Integer
 Fut = Minute(Tmr)
    If UCase(sTy) = "U" Then
        Myf = Switch(Fut < 15, 15, Fut < 30, 30, Fut < 45, 45, Fut < 60, 60)
    ElseIf UCase(sTy) = "D" Then
        Myf = Switch(Fut < 15, 0, Fut < 30, 15, Fut < 45, 30, Fut < 60, 45)
    Else
        Exit Function
    End If
 LamTron = Format(TimeSerial(Hour(Tmr), Myf, 0), "hh:mm")
End Function
 
Upvote 0
PHP:
Option Explicit
Function LamTron(Tmr As Double, Optional Up_ As Boolean = True)
Dim Fut As Integer, Myf As Integer
 Fut = Minute(Tmr)
 If Not Up_ Then Fut = Fut - 15
 Myf = Switch(Fut <= 15, 15, Fut <= 30, 30, Fut <= 45, 45, Fut <= 60, 60)
 LamTron = Format(TimeSerial(Hour(Tmr), Myf, 0), "hh:mm")
End Function
 
Upvote 0
Web KT

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

Back
Top Bottom