Công thức trả về ngày cuối tháng

Liên hệ QC

handung107

Thành viên gắn bó
Thành viên danh dự
Tham gia
30/5/06
Bài viết
1,630
Được thích
17,440
Nghề nghiệp
Bác sĩ
Công thức trả về ngày cuối tháng trước

Thí dụ hôm nay là ngày 03/06/2006, công thức sẽ trả về ngày 31/05/2006.

Có nhiều cách :

1/ Dùng VBA : Code như sau

Function SongayTrongthang(Thang As Long, Nam As Long) As Byte
Select Case Thang
Case 1, 3, 5, 7, 8, 10, 12: SongayTrongthang = 31
Case 4, 6, 9, 11: SongayTrongthang = 30
Case 2
Select Case Nam
Case (Nam Mod 4 = 0 And Nam Mod 100 = 0) Or Nam Mod 400 = 0: SongayTrongthang = 29
Case Else: SongayTrongthang = 28
End Select
End Select
End Function

2/ Ví dụ ngày tham chiếu ở ô A1:
=Date(year(A1),month(A1),1)-1

3/ Dùng công thức sau : A1 - day(A1) thì sẽ được ngày cuối tháng trước. Lưu ý format cell cho đúng

4/Công thức : =EOMONTH("03/05/2006",-1)

=EOMONTH(Start_date,months)
Nếu k thấy hàm này, vui lòng vào Tools->add-in->chọn Analysis ToolPak !

EOMONTH có nghĩa là End of Month : ngày cuối cùng của tháng
 
Lần chỉnh sửa cuối:
Công thức ngày cuối tháng

Đây là công thức đơn giản để biết ngày cuối tháng của bất kỳ tháng nào trong năm.

=DATE(2005, month + 1, 0)

Công thức xác định ngày này thuốc quý mấy:
Ví dụ dữ liệu ngày ở ô A1.
Ta có =INT((month(A1)-1)/3)+1
Công thức này lấy giá trị tháng của này, sau đó "làm tròn" lại thành quý
 
Cho em góp một bài

Cho em góp một bài:

Hàm trả về ngày cuối của tháng trước (rất hay sử dụng trong các báo cáo kế toán và bán hàng):

=TODAY()-DAY(TODAY())
 
HyperVN đã viết:
Cho em góp một bài:

Hàm trả về ngày cuối của tháng trước (rất hay sử dụng trong các báo cáo kế toán và bán hàng):

=TODAY()-DAY(TODAY())
Cho tôi ké với. Cách làm của bác HyperVn hay nhưng ... không nên làm. Vì sao thế? Ấy là hàm này chỉ đúng khi làm báo cáo vào một ngày nào đó trong tháng sau. Theo thói quen, sau khi làm báo cáo người sử dụng thường có khuynh hướng save lại, coi như xong. Nếu lỡ có ai cần coi báo cáo của bạn lập cách đây vài tháng hoặc tệ hơn của năm ngoái thì toi cơm, rất dễ xảy ra nhầm lẫn đấy.

Cách làm của chi handung ở trên là toàn diện nhất và tránh được sai sot về sau. Tôi cũng không rành VBA lắm, nhưng cũng mạnh dạn khuyên các bạn nên sử dụng hàm có sẵn của excel, tức là A1-day(A1), là đảm bảo tốc độ xử lý bảng tính của các bạn sẽ rất nhanh chóng. VBA chỉ nên sử dụng khi gặp phải những trường hợp mà hàm excel không giải quyết được.
 
Mã:
1/ Dùng VBA : Code như sau 

Function SongayTrongthang(Thang As Long, Nam As Long) As Byte
Select Case Thang
Case 1, 3, 5, 7, 8, 10, 12: SongayTrongthang = 31
Case 4, 6, 9, 11: SongayTrongthang = 30
Case 2
Select Case Nam
Case (Nam Mod 4 = 0 And Nam Mod 100 = 0) Or Nam Mod 400 = 0: SongayTrongthang = 29
Case Else: SongayTrongthang = 28
End Select
End Select
End Function

Xin mạo muội góp hàm của tôi
---
Public Function EOM(ByVal I As Long) As Long' Nam nay
Dim HO As Long, mo As Long
If Year(Now()) Mod 4 = 0 And (Year(Now()) Mod 100 <> 0) Or (Year(Now()) Mod 400 = 0) Then HO = 29 Else HO = 28
mo = Array(31, HO, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
EOM = mo(I - 1)
End Function

/*+ /*+ /*+
 
Cũng xin ké tẹo nha!

Hàm cho biết thứ nào đó của tuần cuối tháng là ngày nào?!
Mã:
[B]Function LastDay(Thu As String, Ngay As String) As Date[/B]
 On Error Resume Next
Dim jZ As Integer, iThu As Integer:   Dim NgCuoi As Date

Ngay = CDate(Ngay)
If Right(Thu, 1) = "N" Then
    iThu = 1
Else
    iThu = CInt(Right(Thu, 1))
End If
NgCuoi = DateSerial(Year(Ngay), Month(Ngay) + 1, 1) - 1
If Month(Ngay) = 12 then NgCuoi = DateSerial(Year(Ngay), 12, 31)  
For jZ = 0 To 8
   If Weekday(NgCuoi - jZ) = iThu Then
       LastDay = NgCuoi - jZ:       Exit For
   End If
Next jZ

[B]End Function
[/B]
Đối số Thu là: "CN", "Th2", "T3",. . . .
. . . . Ngay là Chuỗi ngày
 
Chỉnh sửa lần cuối bởi điều hành viên:
mọi người giúp em với , em thành viên mới lên ko biết post bài kiểu gì cả, lên tam "ghé chân" vô đây vậy , nhưng mong mọi người sẽ giúp em, em đang rất cần. Chuyện là thế này , em dùng hàm day , khi trừ hàm day với hàm day để lấy ngày chếnh lệch ra vậy mà nó cứ ra một dãy số có cả ngày, tháng năm ví dụ như day(10/10/2006) - day(10/25/2006) thì khi ấn enter thì nó ra 0/15/1900 là làm sao vậy ạ? Cách khắc phục làm sao? Em cảm ơn mọi người rất nhiều , em đang rất cần , ai biết trả lời hộ em hoắc gửi mail cho em , em cảm ơn!!!
 
bạn chọn format/cells/number ở tại cell kết quả của ban.
 
mọi người giúp em với , em thành viên mới lên ko biết post bài kiểu gì cả, lên tam "ghé chân" vô đây vậy , nhưng mong mọi người sẽ giúp em, em đang rất cần. Chuyện là thế này , em dùng hàm day , khi trừ hàm day với hàm day để lấy ngày chếnh lệch ra vậy mà nó cứ ra một dãy số có cả ngày, tháng năm ví dụ như day(10/10/2006) - day(10/25/2006) thì khi ấn enter thì nó ra 0/15/1900 là làm sao vậy ạ? Cách khắc phục làm sao? Em cảm ơn mọi người rất nhiều , em đang rất cần , ai biết trả lời hộ em hoắc gửi mail cho em , em cảm ơn!!!
Bạn Hoaphonglan Thân !
Bạn phải lấy day(10/25/2006) - day(10/10/2006) .
Nếu chưa có kết quả vừa ý thì tại ô kết quả bạn vào format\cells\number để ra số ngày theo ý muốn.
 
Xin nhờ xác bác chỉ giùm em luôn cách xác định 1 cell chứa data ngày tháng xem data đó có phải là cuối tháng không.

Vì em muốn dùng 1 công thức tính tổng các ngày trong tháng và cộng vào ngày cuối tháng. Xin cám ơn trước.
 
Bạn dùng công thức này cũng được, giả sử ktra ô C6:

=IF(C6=DATE(YEAR(C6),MONTH(C6)+1,0),TRUE,FALSE)
 
=if(day(a6+1)=1,true,false)

Thêm 1 cái nữa cho vui cửa nhà; Khà, khà,. . .
 
Web KT

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

Back
Top Bottom