Tạo 1 hàm trả về số ngày trong tháng (2 người xem)

Liên hệ QC

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

manhhung12

Thành viên thường trực
Tham gia
20/3/08
Bài viết
232
Được thích
88
Chào các bạn
Tôi tạo 1 hàm Dngày (Public function Dngay(byval mthang as byte) as byte như trong file gửi kèm.
1/Kg hiểu sao kg cho kết quả khi tôi nhập hàm đó vào 1 ô trong file
2/Năm nhuận tính thế nào tôi kg nhớ cách tính? Ai biết chỉ dùm
Tks
Các bạn xem và giải thích dùm.
 

File đính kèm

Lần chỉnh sửa cuối:
Bạn viết sai cú pháp rồi:
Select case Mthang
case is =1....
Bạn chưa lưu ý năm thường năm nhuận.(Năm chia hết cho 4 sử dụng hàm Mod())
Bạn nên sd hàm choose hoăc array gọn hơn
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn viết sai cú pháp rồi:
Select case Mthang
case is =1....
Bạn chưa lưu ý năm thường năm nhuận.(Năm chia hết cho 4 sử dụng hàm Mod())
Bạn nên sd hàm choose hoăc array gọn hơn
Bạn cho tôi hỏi cách tính năm nhuận?
Trong case is=2 tôi sẽ đưa biểu thức ktra nếu đúng là năm nhuận thì ngày = 29
Nhưng tôi chưa biết công thức tính năm nhuận ên chưa đưa vào bthứcc ktra đó.
 
Upvote 0
Dùng cái này nè đồng chí ơi! (Select Case có mà đói luôn)
PHP:
Function EoM(Thg As Byte) As Byte
   EoM = Day(DateSerial(Year(Date), Thg + 1, 0))
End Function
Mà cái này cần gì Function nhỉ? Công thức thường cũng khá đơn giãn mà bạn!
=Day(Date(Year(Today()),Tháng +1,0))
 
Lần chỉnh sửa cuối:
Upvote 0
Để kiểm tra năm nhuận hay không bạn làm như sau:
Toán tử Mod là thành phần của Access nên bạn vào tools-->Refe..-->dánh dấu Microsoft Access 11.0....
Cú pháp như sau:
if Myear Mod 4 =0 then
dngay=29
else
dngay=28
end if
 
Upvote 0
Để tìm ngày cuối tháng nên sử dụng hàm có sẳn của Excel. Có rất nhiều cách kết hợp các hàm ngày tháng như cách tính của ndu96081631.
Excel có sẳn hàm tìm ngày cuối tháng Excel EOMONTH rất dễ sử dụng nhưng nhiều bạn hay bỏ quên (muốn sử dụng phải khai báo Add-Ins > Analysis ToolPak).
EOMONTH(Start_date, Month)
Ví dụ A1=21/2/2008
EOMONTH(A1, 0) >29/2/2008 ngày cuối tháng 2 (2 +0=2)
EOMONTH(A1, 3) >31/5/2008 ngày cuối tháng 5 (2+3=5)
EOMONTH(A1, -1) >31/1/2008 ngày cuối tháng 1 (2-1=1)
Muốn tách riêng ngày kết hợp hàm DAY: DAY(EOMONTH(A1, 0)) > 29

Muốn biết năm nào là năm nhuận, bạn viết công thức tính ngày cuối tháng 2 năm đó, nếu = 29 là năm nhuận.

Xác định năm nhuận là năm chia hết cho 4 là công thức nhiều người nhưng không chính xác 100% vì có ngoại lệ.

BNTT đã viết:
Trong trường hợp này, số chỉ năm là một số có 4 chữ số. Công thức trên làm việc cho những năm từ 1901 đến 2099, đủ để đáp ứng được đa số nhu cầu sử dụng. Công thức này không làm việc với năm 1900 và năm 2100 bởi vì, cho dù chia hết cho 4, nhưng những năm này không phải là năm nhuận. Quy luật chung của một năm nhuận là nó phải chia hết cho 4 nhưng không chia hết cho 100, ngoại trừ chia hết cho 400. Do đó, bởi vì năm 1900 và 2100 chia hết cho 100 mà không chia hết cho 400, nên chúng không phải là năm nhuận. Tuy nhiên, năm 2000 là một năm nhuận.
Tham khảo bài này:
http://www.giaiphapexcel.com/forum/showpost.php?p=81974&postcount=15
 
Upvote 0
Để kiểm tra năm nhuận hay không bạn làm như sau:
Toán tử Mod là thành phần của Access nên bạn vào tools-->Refe..-->dánh dấu Microsoft Access 11.0....
Cú pháp như sau:
if Myear Mod 4 =0 then
dngay=29
else
dngay=28
end if
không chia hết cho 4 thì mói là năm nhuận chứ ah. (1996/2000/2004/2008....)
 
Upvote 0
Chào các bạn
Tôi tạo 1 hàm Dngày (Public function Dngay(byval mthang as byte) as byte như trong file gửi kèm.
1/Kg hiểu sao kg cho kết quả khi tôi nhập hàm đó vào 1 ô trong file
2/Năm nhuận tính thế nào tôi kg nhớ cách tính? Ai biết chỉ dùm
Tks
Các bạn xem và giải thích dùm.
Nếu tìm hiểu về VBA thì viết code ...
Vấn đề này chỉ cần dùng công thức như ndu đã nêu ở bài trên là quá đủ (luôn đúng với năm nhuận và năm không nhuận)
PHP:
Số ngày trong tháng =Day(Date("Năm cần kiểm tra","Tháng cần kiểm tra" +1,0))
Mình vẫn xài công thức này thấy nhẹ nhàng, dễ xử lý
 
Upvote 0
không chia hết cho 4 thì mói là năm nhuận chứ ah. (1996/2000/2004/2008....)

Bạn có thể nhầm lẫn gì chăng, vì 4 năm mới có một năm nhuận
Xem thử năm 2001,2002,2003,2004. Năm 2001 không chia hết cho 4, chẳng lẽ là năm nhuận??
 
Upvote 0
1/Các bạn à, manhhung12 hỏi về code thì ta giúp bạn ấy về code đã. Mình đâu có biết bạn ấy áp dụng làm gì. Có lúc dùng công thức không tiện bằng hàm ví dụ kiểm tra tính hợp thích hợp của ngày tháng nhập vào trêm form.
2/Có lẽ manhhung12 chưa hiểu toán tử Mod rồi
Myear Mod 4 : Trả về số dư của phép chia ví dụ
2001 Mod 4 = 1
2002 Mod 4 = 2
2003 Mod 4 = 3
2004 Mod 4 = 0
Như vậy là bạn hiểu điều kiện rồi chứ
Ta có thể sử dụng hàm Mod của Excel.
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi thấy lạ 1 điều: Xét thế nào là năm nhuận thì bạn BNTT đã nói rồi... nhưng chừng nào ta còn ngồi làm việc trên Excel thì tội gì mà xét chia hết với không chia hết chứ... Excel nó có sẳn rồi, cứ thế mà tính... Tội gì
Cứ tháng 2 = 29 ngày thì là năm nhuận... Thậm chí sử dụng các hàm của Excel thì bản thân nó đã tính hộ cho ta rồi, đâu cần ta phải bận tâm (trừ phi ta làm việc không phải trên Excel)
 
Upvote 0
To: sealan
Tôi hiểu toán tử MOD nhưng do tôi hay quen tính nút (hay chơi bốc số) nên nhầm lẫn. Xin lỗi các bạn thứ lỗi.
To: Ndu
Tôi dùng hàm của Excel cho Modul trong bài tôi gửi kèm sau. Tuy nhiên nếu làm 1 hàm ttrả về kết quả thì cũng có cái lợi là câu lệnh trong 1 số modul ngắn gọn hơn.
Bây giờ tôi muốn các bạn xem và góp ý cho phần code tôi viết cho 1 form nhưng vẫn chưa chạy tốt.
Mong các cao thủ chỉ giáo
Tks
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom