làm thế nào để biết được ngày cuối cùng của 1 tháng (1 người xem)

Liên hệ QC

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

Dauthivan

Thành viên tiêu biểu
Tham gia
15/8/08
Bài viết
565
Được thích
327
Giả sử tại ô A1 em của em là ngày 15/1/2010 thì ô B1 sẽ hiện ra là 31 (tức tháng 1 năm 2010 có 31 ngày) mà không phải dùng cột phụ. Xin cảm ơn nhiều.
 
Hàm EOMONTH

Chức năng : Hàm EOMONTH trả về Ngày cuối tháng của Tháng nào đó cách mốc thời gian cho trước một số tháng nhất định.

Cấu trúc : EOMONTH(startdate,months)

- Startdate : là Ngày được chọn làm mốc thời gian để tính toán. Startdate có thể là Date_text hay tham chiếu đến ô có giá trị ngày tháng.

- Months : là số tháng cách mốc thời gian cho trước. Nếu Ngày cần tìm trước Ngày làm mốc thì Months được ghi số
âm "-" ngược lại ghi số dương "+" hay không dấu. Nếu Months là một số lẻ thì excel sẽ lấy phần nguyên, phần lẻ sẽ bỏ đi.

Ví dụ :
=EOMONTH("01/01/08",1) giá trị trả về : 29/02/08
=EOMONTH("01/05/08",-1) giá trị trả về : 30/04/08
=EOMONTH("01/05/08",-1.8) giá trị trả về : 30/04/08

Áp dụng : Công thức tìm ngày cuối tháng của một giá trị ngày tháng bất kỳ.
=DAY(EOMONTH("01/02/08",0)) giá trị trả về : 29
=DAY(DATE(YEAR(A1),MONTH(A1)+1,0)) giá trị trả về : 29 với A1=01/02/08
 
Bạn thấy rằng công thức =DAY(DATE(YEAR(A1),MONTH(A1)+1,1)) sẽ cho ra ngày đầu tiên của tháng MONTH(A1)+1, do đó nếu bạn dùng =DAY(DATE(YEAR(A1),MONTH(A1)+1,0)) sẽ cho ngày trước của của ngày =DAY(DATE(YEAR(A1),MONTH(A1)+1,1)). Tức là ngày cuối cùng của tháng MONTH(A1)
 
Bác làm ơn cho em hỏi tại sao lại là MONTH(A1)+1. Em tưởng là Month(A1) thôi chứ
Bạn tưởng tượng thế này khi bạn làm hạch toán thì số liệu của đầu tháng sau là giá trị của ngày cuối cùng tháng trước; sở dĩ ví dụ như bạn xét ngày ô Á là 15/1/2009 thì month(A1) +1 = 2 là tức cả công thức mà các bác ấy đã làm là DATE(YEAR(A1),MONTH(A1)+1,0) = 2010/2/0, nhưng làm gì có ngày thứ 0 của tháng 2 nên máy sẽ hiểu ngày 2010/2/0 = 2010/1/31. Còn nếu bạn để là Month(A1) thì đuôi đằng sau bạn thay số 0 bằng số mấy, giả dụ bạn thay số 0 là số 1 chẳng hạn thì (DATE(YEAR(A1),MONTH(A1)+1,0) = 2010/1/1) thì máy sẽ hiểu là DAY(DATE(YEAR(A1),MONTH(A1)+1,0))= day (2010/1/1)=1 thì có mà tui. Bạn cứ để ý ký chỗ bôi đậm màu xanh là ra vấn đề ngày
Tóm lại rất đơn giản, ô A1 bạn đang xét là tháng 1 thì công thức bạn đang xét MONTH(A1)+1 sẽ là tháng thứ 2 (nhưng ngày 0 tháng thứ 2 bằng ngày 31 của tháng thứ 1)...còn nếu A1 của bạn đang xét là tháng thứ 2 thì công thức cuối cùng sẽ là Day(2010,3,0)=Day(2010,2,28)...
Rất đơn giản vậy thôi.
 
Bạn tưởng tượng đầu tháng sau là giá trị của ngày cuối cùng tháng trước; sở dĩ ví dụ như bạn xét ngày ô A1 là 15/1/2009 thì month(A1) +1 = 2 là tức cả công thức mà các bác ấy đã làm là DATE(YEAR(A1),MONTH(A1)+1,0) = 2010/2/0, nhưng làm gì có ngày thứ 0 của tháng 2 nên máy sẽ hiểu ngày 2010/2/0 = 2010/1/31. Còn nếu bạn để là Month(A1) thì đuôi đằng sau bạn thay số 0 bằng số mấy, giả dụ bạn thay số 0 là số 1 chẳng hạn thì (DATE(YEAR(A1),MONTH(A1)+1,0) = 2010/1/1) thì máy sẽ hiểu là DAY(DATE(YEAR(A1),MONTH(A1)+1,0))= day (2010/1/1)=1 thì có mà tui. Bạn cứ để ý ký chỗ bôi đậm màu xanh là ra vấn đề ngày
Tóm lại rất đơn giản, ô A1 bạn đang xét là tháng 1 thì công thức bạn đang xét MONTH(A1)+1 sẽ là tháng thứ 2 (nhưng ngày 0 tháng thứ 2 bằng ngày 31 của tháng thứ 1)...còn nếu A1 của bạn đang xét là tháng thứ 2 thì công thức cuối cùng sẽ là Day(2010,3,0)=Day(2010,2,28)...
Rất đơn giản vậy thôi.
Hình như có cái gì đó còn vướng, nếu đó là tháng 12 của năm!

Nên chăng cần giải thích rằng mày tính lấy ngày 1/1/1900 tương ứng với số 1 & cứ thế, thêm 1 ngày cộng vô 1 đơn vị, . . . nên ngày trước ngày #1/1/2000# sẽ là #31/12/1999#

--=0 :-= --=0
Vui thôi!
 
Bạn thử công thức này khỏi lo năm tháng nào

=IF(MONTH(A1)=12,31,DAY(DATE(YEAR(A1),MONTH(A1)+1,1)-1))
 
Công thức ở bài #3 áp dụng được tất cả các tháng mà các bác! các bác thử test lại xem sao
 
Hình như có cái gì đó còn vướng, nếu đó là tháng 12 của năm!

Nên chăng cần giải thích rằng mày tính lấy ngày 1/1/1900 tương ứng với số 1 & cứ thế, thêm 1 ngày cộng vô 1 đơn vị, . . . nên ngày trước ngày #1/1/2000# sẽ là #31/12/1999#

--=0 :-= --=0
Vui thôi!
Bạn thử công thức này khỏi lo năm tháng nào

=IF(MONTH(A1)=12,31,DAY(DATE(YEAR(A1),MONTH(A1)+1,1)-1))
Công thức
=DATE(Year(...),Month(...) +1,0)
Đã được CHUẪN rồi(không cần lo lắng, nó có từ lâu trên diển đàn)
Các bác không cần quan tâm MONTH = bao nhiêu ---> 12+1 = 13 nhưng Excel nó vẫn hiểu đấy là tháng 1 của năm sau đấy!
 
Web KT

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

Back
Top Bottom