Mỗi cuối tháng, tôi dành cả buổi chiều để tính lương cho 50 nhân viên. Nhập ngày cuối tháng thủ công, kiểm tra tháng có 30 hay 31 ngày, tính toán ngày công theo từng trường hợp đặc biệt. Công thức DATE lồng ghép nhiều tầng, một ô sai là cả bảng sai. Bây giờ cùng dữ liệu đó, tôi hoàn tất trong 30 phút nhờ hiểu rõ cách hàm EOMONTH thực sự hoạt động.

Tham số months linh hoạt hơn bạn nghĩ
Hầu hết hướng dẫn chỉ cho bạn dùng EOMONTH với giá trị 0 để tìm ngày cuối tháng hiện tại. Thực tế hàm này mạnh hơn thế nhiều khi bạn hiểu cách tham số months hoạt động.
Cú pháp cơ bản:
=EOMONTH(ngày_bắt_đầu, số_tháng)
Tham số thứ hai không chỉ đơn thuần là con số. Nó định hướng Excel nhìn về quá khứ hay tương lai:
0: Ngày cuối tháng hiện tại của ngày bắt đầu1: Ngày cuối tháng tiếp theo-1: Ngày cuối tháng trước đó3: Nhảy sang 3 tháng sau-6: Lùi về 6 tháng trước
Trong bảng lương của tôi, nhân viên A bắt đầu làm ngày 15/3/2025. Để tính lương tháng 3, tôi cần biết tháng đó có bao nhiêu ngày. Thay vì nhớ từng tháng có 28, 30 hay 31 ngày, công thức =EOMONTH(A2,0) tự động trả về 31/3/2025. Từ đó tính ngày công chính xác mà không lo nhầm lẫn.
Kết hợp EOMONTH với phép cộng để tìm ngày đầu tháng
Điều đầu tiên tôi thay đổi là cách tính ngày bắt đầu kỳ lương. Trước đây tôi dùng công thức DATE phức tạp với ba tham số. Giờ đây chỉ cần một công thức đơn giản:
=EOMONTH(A2,-1)+1
Công thức này hoạt động theo logic rất rõ ràng. EOMONTH với tham số -1 cho bạn ngày cuối tháng trước đó. Cộng thêm 1 ngày tự động nhảy sang ngày đầu tiên của tháng hiện tại.
Ví dụ thực tế: Nếu ô A2 chứa ngày 15/10/2025:
EOMONTH(A2,-1)trả về 30/9/2025- Cộng thêm 1 được 1/10/2025
Không cần nhớ tháng 9 có 30 ngày hay tháng 2 năm nhuận có 29 ngày. Excel tự xử lý mọi trường hợp đặc biệt. Tôi áp dụng công thức này cho cột ngày bắt đầu kỳ lương, tiết kiệm 15 phút mỗi tháng so với việc nhập thủ công và kiểm tra lại.
Cố định tham chiếu đúng cách với F4
Sai lầm phổ biến nhất khi dùng EOMONTH là không cố định đúng ô tham chiếu. Khi bạn sao chép công thức xuống các hàng bên dưới, tham chiếu tự động thay đổi theo cách bạn không mong muốn.
Trường hợp điển hình: Bạn có ngày cơ sở trong ô B2, muốn tính ngày cuối tháng cho nhiều khoảng thời gian khác nhau trong cột C. Công thức trong ô D2:
=EOMONTH($B$2,C2)
Dấu $ trước B và 2 giữ nguyên ô B2 khi sao chép công thức. Trong khi đó C2 tự động chuyển thành C3, C4, C5 khi kéo xuống. Bấm phím F4 ngay sau khi chọn ô B2 trong thanh công thức để Excel tự động thêm dấu $.
Tôi từng mất 45 phút truy tìm lỗi trong bảng lương vì quên cố định ô ngày tham chiếu. Công thức sao chép xuống 50 hàng, mỗi hàng tham chiếu sang ô sai khác nhau. Kết quả là ngày cuối tháng nhảy lung tung. Từ đó tôi luôn kiểm tra dấu $ trước khi sao chép công thức.
Tính lương chính xác cho nhân viên bắt đầu giữa tháng
Nhân viên mới vào làm ngày 20 trong tháng 31 ngày chỉ được hưởng 12 ngày lương. Trước đây tôi phải tra lịch xem tháng đó có bao nhiêu ngày, sau đó nhập công thức thủ công. Hàm EOMONTH kết hợp với DAY giải quyết vấn đề này tự động.
Công thức tính lương theo tỷ lệ:
=DAY(EOMONTH(B2,0))
Hàm DAY trích xuất số ngày từ một ngày bất kỳ. Khi áp dụng vào kết quả của EOMONTH, bạn được tổng số ngày trong tháng. Ngày 31/3/2025 cho kết quả 31. Ngày 28/2/2025 cho kết quả 28 hoặc 29 nếu năm nhuận.
Công thức đầy đủ tính lương theo ngày công:
=(MIN(EOMONTH(C2,0),D2)-MAX(C2,E2)+1)/DAY(EOMONTH(C2,0))*F2
Trong đó:
- C2: Ngày đầu tháng
- D2: Ngày cuối tháng
- E2: Ngày bắt đầu làm việc
- F2: Lương tháng đầy đủ
Công thức này xử lý mọi trường hợp: nhân viên vào giữa tháng, nghỉ giữa tháng, hoặc làm cả tháng. Tôi chỉ cần nhập một lần, sau đó sao chép cho 50 nhân viên. Độ chính xác tuyệt đối, không còn tranh cãi về số ngày công.
Xử lý lỗi NUM với kiểm tra điều kiện
Hàm EOMONTH trả về lỗi #NUM! khi ngày bắt đầu cộng với số tháng tạo ra ngày không hợp lệ. Điều này xảy ra khi ai đó nhập sai định dạng ngày hoặc ô trống.
Bảo vệ công thức bằng IF:
=IF(ISBLANK(A2),"",EOMONTH(A2,0))
Nếu ô A2 trống, công thức trả về chuỗi rỗng thay vì lỗi. Khi có dữ liệu, EOMONTH hoạt động bình thường. Bạn cũng có thể kết hợp với IFERROR để bắt mọi loại lỗi:
=IFERROR(EOMONTH(A2,C2),"Kiểm tra dữ liệu")
Bảng lương của tôi có cột trạng thái nhân viên. Chỉ những người đang làm việc mới được tính lương. Công thức kiểm tra điều kiện:
=IF(G2="Đang làm",EOMONTH(A2,0),"")
Ô G2 chứa trạng thái. Nếu giá trị là “Đang làm”, hàm tính ngày cuối tháng. Nếu không, ô để trống. Điều này giúp tôi tránh tính nhầm lương cho người đã nghỉ việc.
Tự động tổng hợp lương theo tháng với SUMIFS
Báo cáo cuối kỳ yêu cầu tổng chi phí lương từng tháng. Trước đây tôi lọc thủ công theo tháng rồi dùng SUM. Bây giờ SUMIFS kết hợp EOMONTH tự động hóa toàn bộ quy trình.
Công thức tổng lương theo tháng cụ thể:
=SUMIFS(F:F,C:C,">="&DATE(2025,3,1),C:C,"<="&EOMONTH(DATE(2025,3,1),0))
Trong đó:
- F:F: Cột chứa số tiền lương
- C:C: Cột chứa ngày phát lương
- Điều kiện 1: Ngày từ 1/3/2025 trở đi
- Điều kiện 2: Ngày đến hết ngày cuối tháng 3/2025
Tôi tạo bảng tổng hợp riêng với các tháng trong năm. Mỗi tháng có một công thức SUMIFS tương ứng. Khi nhập dữ liệu lương mới, các tổng tự động cập nhật. Không cần chạm vào bảng tổng hợp.
Biến thể linh hoạt hơn:
=SUMIFS(F:F,C:C,">="&EOMONTH(H2,-1)+1,C:C,"<="&EOMONTH(H2,0))
Ô H2 chứa bất kỳ ngày nào trong tháng bạn muốn tổng hợp. Công thức tự động tính ngày đầu tháng với EOMONTH(H2,-1)+1 và ngày cuối tháng với EOMONTH(H2,0). Thay đổi một ô, toàn bộ báo cáo thay đổi theo.
Phương pháp này giảm thời gian làm báo cáo tháng từ 2 giờ xuống còn 5 phút. Tôi chỉ cần nhập tháng cần xem, Excel tự tính toán mọi thứ.
Kết quả sau một tháng áp dụng
Quy trình tính lương cũ tốn 3 giờ 20 phút mỗi tháng. Công thức phức tạp với DATE lồng nhiều tầng, dễ sai và khó bảo trì. Kiểm tra lại số liệu thủ công tốn thêm 40 phút. Tổng cộng gần nửa ngày làm việc.
Sau khi tối ưu với EOMONTH, thời gian giảm xuống 30 phút. Bảng lương tự động tính toán chính xác cho mọi trường hợp: nhân viên mới, nghỉ giữa tháng, làm đủ tháng. Báo cáo tổng hợp tự cập nhật. Công thức đơn giản hơn, dễ hiểu hơn khi cần sửa đổi.
Hàm EOMONTH hoạt động từ Excel 2007 trở đi, tương thích với mọi phiên bản hiện đại. Bạn có thể áp dụng ngay các công thức trên mà không cần lo tương thích. Hãy bắt đầu với trường hợp đơn giản nhất: thay công thức DATE bằng EOMONTH cho cột ngày cuối tháng. Từ đó mở rộng dần sang các tính năng nâng cao như tính lương theo tỷ lệ và báo cáo tự động.
