Cộng thêm ngày nhưng vẫn giữ nguyên định dạng cũ và cách lấy ngày cuối tháng!

Liên hệ QC

nhim&cao

Thành viên mới
Tham gia
15/8/11
Bài viết
22
Được thích
4
Các bác giúp e hoàn thành 2 cột ngày bắt đầu học và ngày thi tốt nghiệp với ạ! Nhân tiện đang bàn về thời gian, e có vấn đề nho nhỏ muốn hỏi nữa ạ: Ví dụ e có một số mốc thời gian như sau:1/6/2010; 5/12/2010; 30/4/2010....Giờ e muốn lấy ngày cuối tháng của các mốc trên thì dùng hàm thế nào ạ? Thanks!!!
 

File đính kèm

  • Book4.xls
    26 KB · Đọc: 14
Lấy ngày cuối tháng bạn dùng hàm sau:
Function Ngaycuoi(ngay As Date)
Dim a As Integer
a = Month(ngay)
If a = 1 Or a = 3 Or a = 5 Or a = 7 Or a = 8 Or a = 10 Or a = 12 Then
Ngaycuoi = 31
End If
If a = 4 Or a = 6 Or a = 9 Or a = 11 Then
Ngaycuoi = 30
End If
If b / 4 = Int(b / 4) Then
If a = 2 Then
Ngaycuoi = 29
End If
End If
If b / 4 <> Int(b / 4) Then
If a = 2 Then
Ngaycuoi = 28
End If
End If
End Function
 
Lấy ngày cuối tháng bạn dùng hàm sau:
Function Ngaycuoi(ngay As Date)
Dim a As Integer
a = Month(ngay)
If a = 1 Or a = 3 Or a = 5 Or a = 7 Or a = 8 Or a = 10 Or a = 12 Then
Ngaycuoi = 31
End If
If a = 4 Or a = 6 Or a = 9 Or a = 11 Then
Ngaycuoi = 30
End If
If b / 4 = Int(b / 4) Then
If a = 2 Then
Ngaycuoi = 29
End If
End If
If b / 4 <> Int(b / 4) Then
If a = 2 Then
Ngaycuoi = 28
End If
End If
End Function
Giả sử A là 1 ngày bất kỳ, Công thức lấy ngày cuối tháng là vầy:
=DATE(YEAR(A), MONTH(A) + 1, 0)
Tức ngày cuối của tháng này = ngày 1 của tháng sau trừ bớt 1 đơn vị (hay nói ngắn gọn là ngày cuối của tháng này là ngày 0 của tháng sau)
Thế thôi! Đâu cần phải VBA cho rắc rồi! Mà cho dù dùng VBA thì tôi cũng sẽ dùng giải thuật trên ---> Quá ngắn gọn
 
Lần chỉnh sửa cuối:
Mình hỏi rõ hơn chút nhé! Nếu đăng ký vào ngày thứ 7 thì học vào thứ 3 đúng không bạn?

bạn xem thế này được chưa nhé! Có vấn đề gì thảo luận tiếp nhé!
View attachment 69102

Giả sử A là 1 ngày bất kỳ, Công thức lấy ngày cuối tháng là vầy:
=DATE(YEAR(A), MONTH(A) + 1, 0)
Tức ngày cuối của tháng này = ngày 1 của tháng sau trừ bớt 1 đơn vị (hay nói ngắn gọn là ngày cuối của tháng này là ngày 0 của tháng sau)
Thế thôi! Đâu cần phải VBA cho rắc rồi! Mà cho dù dùng VBA thì tôi cũng sẽ dùng giải thuật trên ---> Quá ngắn gọn
Oh! Cảm ơn anh nhiều! Chết cái tội em lạm dụng VBA quá!

Sửa một chút nhé! Trong cột ngày thi tốt nghiệp bạn thay hàm đang có bằng hàm sau:
=DATE(YEAR(D6);MONTH(D6)+M6;DAY(D6))
-------------
Excel tính toán như thần! Trước giờ mình ít dùng hàm về ngày tháng, bây giờ vỡ ra nhiều! Cảm ơn yêu cầu thú vị của bạn!
 
Chỉnh sửa lần cuối bởi điều hành viên:
Bác giải thích giúp e công thức xác định ngày bắt đầu học "=IF(OR(MOD(C6,7)=6,MOD(C6,7)=5),C6+3,C6+2)" được k ạ? E vẫn chưa hiu được bản chất công thức này ạ!
 
Bác giải thích giúp e công thức xác định ngày bắt đầu học "=IF(OR(MOD(C6,7)=6,MOD(C6,7)=5),C6+3,C6+2)" được k ạ?

E vẫn chưa hiu được bản chất công thức này ạ!
 
Bác giải thích giúp e công thức xác định ngày bắt đầu học "=IF(OR(MOD(C6,7)=6,MOD(C6,7)=5),C6+3,C6+2)" được k ạ? E vẫn chưa hiu được bản chất công thức này ạ!
Công thức này nghĩa là:
Nếu ngày đăng ký là thứ 6 hoặc thứ 7 thì ngày học lần lượt là thứ 2 và thứ 3, còn vào các ngày khác thì bằng ngày đó cộng thêm 2 ngày (không biết có đúng ý bạn không)
Mod(C6,7) là phép tính lấy phần dư của phép chia giá trị ô C6 cho 7. Nếu dư 1 là vào thứ 2, dư 2 là thứ 3, dư 3 là thứ 4, dư 4 là thứ 5, dư 5 là thứ 6, dư 6 là thứ 7 và dư 0 là chủ nhật.
 
Bác giải thích giúp e công thức xác định ngày bắt đầu học "=IF(OR(MOD(C6,7)=6,MOD(C6,7)=5),C6+3,C6+2)" được k ạ?

E vẫn chưa hiu được bản chất công thức này ạ!
Công thức này có thể rút gọn thành:
PHP:
=IF(WEEKDAY(C6)>5,C6+3,C6+2)
Hàm Weekday trả về thứ trong tuần, với Chủ nhật = 1, Thứ 2 đến Thứ 7 = từ 2 đến 7
=IF(WEEKDAY(C6)>5,C6+3,C6+2) có nghĩa là nếu Thứ trong tuần > 5 (tức = thứ 6 hoặc thứ 7) thì lấy ngày đăng ký + 3, ngược lại, lại ngày đăng ký + 2
------------------
Còn công thức cho ngày thi tốt nghiệp:
PHP:
=DATE(YEAR(D6),MONTH(D6)+HLOOKUP(LEFT(B6),$B$19:$E$20,2,0),DAY(D6))
Hạn cuối nộp học phí:
PHP:
=E6-DAY(E6)
Ghi chú:
PHP:
=IF(AND(F6>=HLOOKUP(LEFT(B6),$B$19:$E$21,3,0),G6<=H6),"Được thi","")
------------------
Bài này làm trực tiếp luôn, không cần bất cứ cột phụ nào cả
 

File đính kèm

  • Book4.xls
    29.5 KB · Đọc: 16
Lần chỉnh sửa cuối:
Tóm lại, sau một hồi tham khảo, bạn nhim&cao có thể sử dụng tạm file tính như sau:
View attachment 69104
 
Vâng! Em xem lại rồi! Cảm ơn anh nhiều! Trước giờ em dùng Vlookup nhiều, quên mất là có 1 cái Hlookup. Không gì bằng thực tế! Học bằng cách giải quyết những bài như thế này thì nhớ nhanh lắm, mà học chữ nào vào chữ đó, chứ cứ ngồi ôm sách gõ ngày gõ đêm cũng quên hết thôi à!
 
Hàm weekday của bác đúng là đơn giản dể hiểu thật. E cảm ơn các bác đã đóng góp những ý kiến hay và bổ ích!
 
Web KT
Back
Top Bottom