Nhiều công ty Việt Nam áp dụng lịch làm: nghỉ cả ngày chủ nhật và nửa ngày chiều thứ 7. Đến kỳ tính lương, HR hay vướng khi tính ngày công Excel vì hàm NETWORKDAYS quen thuộc chỉ trả về số ngày nguyên — không xử lý được "nửa công" của thứ 7.
Bài này chỉ bạn cách tính gọn trong một công thức duy nhất.
Bối cảnh
Bạn là HR, cần tính số ngày công của nhân viên trong tháng 4/2026 (01/04 → 30/04).
Quy ước công ty:
- Thứ 2 → Thứ 6: làm cả ngày → 1 công
- Thứ 7: chỉ làm sáng → 0.5 công
- Chủ nhật: nghỉ → 0 công
Dữ liệu đầu vào:
| Ô | Nội dung | Giá trị |
|---|---|---|
| B2 | Ngày bắt đầu | 01/04/2026 |
| B3 | Ngày kết thúc | 30/04/2026 |
Kết quả mong muốn: số ngày công của nhân viên trong khoảng trên.
Cách xử lý
Tách bài toán làm 2 phần rồi cộng lại:
- Số ngày T2–T6 (mỗi ngày = 1 công)
- Số ngày T7 (mỗi ngày = 0.5 công)
Cả hai đều dùng NETWORKDAYS.INTL với tham số weekend ở dạng chuỗi 7 ký tự — mỗi ký tự đại diện 1 ngày (T2 → CN), trong đó 1 là ngày nghỉ, 0 là ngày làm.
Bước 1: Đếm ngày T2–T6
=NETWORKDAYS.INTL(B2, B3, "0000011")
Chuỗi "0000011" nghĩa là T2–T6 đi làm, T7 và CN nghỉ → trả về 22 ngày.
Bước 2: Đếm ngày T7
=NETWORKDAYS.INTL(B2, B3, "1111101")
Chuỗi "1111101" nghĩa là chỉ T7 đi làm, các ngày còn lại nghỉ → trả về 4 ngày.
Bước 3: Gộp lại trong 1 công thức
=NETWORKDAYS.INTL(B2,B3,"0000011") + NETWORKDAYS.INTL(B2,B3,"1111101")*0.5
Kết quả: 22 + 4 × 0.5 = 24 ngày công.
Mở rộng: trừ ngày nghỉ lễ
Nếu danh sách lễ nằm ở C2:C5, thêm tham số thứ 4:
=NETWORKDAYS.INTL(B2,B3,"0000011",C2:C5) + NETWORKDAYS.INTL(B2,B3,"1111101",C2:C5)*0.5
Excel sẽ tự loại các ngày trong C2:C5 khỏi cả hai phần.
Lưu ý nhỏ
NETWORKDAYS.INTLcó sẵn từ Excel 2010 trở lên.- Chuỗi weekend đọc theo thứ tự T2, T3, T4, T5, T6, T7, CN — không phải bắt đầu từ Chủ nhật.
- Nếu ngày lễ rơi vào T7, công thức trên sẽ trừ hết 1 công thay vì 0.5. Trường hợp công ty bạn vẫn tính 0.5 công cho lễ rơi T7, cần xử lý riêng.
Kết
Mẹo này dùng được cho mọi lịch làm "lệch chuẩn" — chỉ cần đổi chuỗi 0/1 cho khớp quy ước. Lưu lại công thức, kỳ lương nào cũng dùng được.