Mình có làm 1 function như sau :
Ngay360(ByVal Ngaybatdau As Date, ByVal Ngayketthuc As Date, Optional Phuongthuc As Boolean) As Long
quy tắc tính của hàm này như sau
Giả sử biến Ngayketthuc là 30/06/2011)
-Nếu Ngaybatdau là ngày cuối cùng của tháng thì giả sử như sau :
vd1 :
Ngaybatdau=28/02/2011 thì tính đến 31/03/2011=30 ngày đến 30/04/2011=60 ngày đến 31/05/2011=90 ngày đến 30/06/2011=120 ngày
sau đó cộng thêm 1 ngày nữa (vì tính hết ngày 20/06/2011)
- Neu Ngaybatdau là ngày bình thường :
vd2:
Ngaybatdau=13/04/2011 thì tính đến 13/05/2011=30 ngày đến 13/06/2011=60 ngày số ngày còn lại bằng 30-13+1=8 ngày
Tổng cộng : 68 ngày
(Thông thường biến Ngayketthuc là ngày cuối của tháng)
Mình viết rồi nhưng nó không bắt được chặt chẽ các trường hợp. Nhờ các ban viết giúp. Cảm ơn
Hàm mình viết :
Trích dẫn:Public Function Ngay360(ByVal Ngaybatdau As Date, ByVal Ngayketthuc As Date, Optional Phuongthuc As Boolean) As Long
Dim lSothang, lNgaybatdau, lNgayketthuc As Long
lNgaybatdau = Day(Ngaybatdau)
lNgayketthuc = Day(Ngayketthuc)
lSothang = DateDiff("M", Ngaybatdau, Ngayketthuc)
'If Ngaycuoicuathang(Ngaybatdau) = True Then
If lNgayketthuc < lNgaybatdau Then
Ngay360 = (lSothang * 30) + (lNgayketthuc - lNgaybatdau) + 2
ElseIf Thanghai(Ngaybatdau) = True Then
Select Case lNgaybatdau
Case 28
Ngay360 = (lSothang * 30) + (lNgayketthuc - lNgaybatdau) - 2
Case 29
Ngay360 = (lSothang * 30) + (lNgayketthuc - lNgaybatdau) - 1
End Select
Else
Ngay360 = (lSothang * 30) + (lNgayketthuc - lNgaybatdau) + 1
End If
End Function