quyenpv
Thu nhặt kiến thức
- Tham gia
- 5/1/13
- Bài viết
- 719
- Được thích
- 97
- Giới tính
- Nam
- Nghề nghiệp
- Decode cuộc đời!
Kính gửi các anh chị!
Ý tưởng của em sau khi bị kiểm toán sờ gáy với lý do rất chi là ẩu là ngày chủ nhật vẫn trình ký hợp đồng dẫn đến phải sửa nhiều bộ hồ sơ để hoàn thiện lại. Em hay dùng công thức để tính nhưng do công thức nhiều dẫn đến file chạy chậm, nên em viết hàm UDF NgayLV với tiêu chí
- Các ngày trong tuần thì giữ nguyên ngày nhâph vào
- Nếu ngày nhập vào là thứ 7 thì +2 ngày để sang thứ 2 tuần sau
- Nếu ngày nhập vào hoặc tính toán tiếp theo rơi vào chủ nhật thì +1 ngày để sang ngày thứ 2 tuần sau
Do chưa biết hoàn thiện bẫy lỗi dẫn đến ngày chạy không chính xác hoặc nhảy về 01/01/1900
Mong anh chị bớt chút thời gian sửa lỗi giúp em hàm này với ạ
Em cám ơn anh chị nhiều
Hàm kiểm tra ngày cuối tuần hay không phục vụ cho công thức tính
Công thức em hay dùng
Ý tưởng của em sau khi bị kiểm toán sờ gáy với lý do rất chi là ẩu là ngày chủ nhật vẫn trình ký hợp đồng dẫn đến phải sửa nhiều bộ hồ sơ để hoàn thiện lại. Em hay dùng công thức để tính nhưng do công thức nhiều dẫn đến file chạy chậm, nên em viết hàm UDF NgayLV với tiêu chí
- Các ngày trong tuần thì giữ nguyên ngày nhâph vào
- Nếu ngày nhập vào là thứ 7 thì +2 ngày để sang thứ 2 tuần sau
- Nếu ngày nhập vào hoặc tính toán tiếp theo rơi vào chủ nhật thì +1 ngày để sang ngày thứ 2 tuần sau
Do chưa biết hoàn thiện bẫy lỗi dẫn đến ngày chạy không chính xác hoặc nhảy về 01/01/1900
Mong anh chị bớt chút thời gian sửa lỗi giúp em hàm này với ạ
Em cám ơn anh chị nhiều
Hàm kiểm tra ngày cuối tuần hay không phục vụ cho công thức tính
Mã:
Function IsWeekendDay(MyDate As Variant) As Boolean
Dim DayNum As Variant
Dim IsWeekend As Boolean
DayNum = Application.Weekday(MyDate)
If Not IsError(DayNum) Then
Select Case DayNum
Case 2 To 6 ' Monday thru Friday
IsWeekend = False
Case Else
IsWeekend = True
End Select
Else
IsWeekend = False ' error
End If
IsWeekendDay = IsWeekend
End Function
Công thức em hay dùng
Mã:
=IF(IsWeekendDay(C2)=TRUE;IF(WEEKDAY(C2;2)=6;C2+2;C2+1);C2)
Mã:
Function NgayLV(MyDate As Date) As Date
Dim DayNum As Variant
DayNum = Application.Weekday(MyDate, 2)
If Not IsError(DayNum) Then
Select Case DayNum
Case 2 To 5 'Monday thru Friday
NgayLV = MyDate
Case 6 'Thu 7
NgayLV = MyDate + 2
Case 7 'Chu nhat
NgayLV = MyDate + 1
End Select
End If
NgayLV = NgayLV
End Function