Cách Đếm Ngày Làm Việc Trong Excel: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao

Trong môi trường làm việc hiện đại, việc quản lý thời gian và tính toán ngày làm việc là một nhu cầu thiết yếu đối với các nhà quản lý dự án, nhân sự, kế toán, và hầu hết các bộ phận trong doanh nghiệp. Microsoft Excel, với tính năng mạnh mẽ và linh hoạt, cung cấp nhiều công cụ giúp chúng ta nhanh chóng xác định số ngày làm việc trong một khoảng thời gian nhất định, loại trừ ngày nghỉ cuối tuần và các ngày lễ. Bài viết này sẽ hướng dẫn chi tiết cách đếm ngày làm việc trong Excel (count working days in excel), từ các hàm cơ bản như NETWORKDAYS và WORKDAY đến các kỹ thuật nâng cao sử dụng NETWORKDAYS.INTL, công thức mảng, và VBA. Bạn sẽ nắm được cách:

  1. Sử dụng hàm NETWORKDAYS để tính ngày làm việc chuẩn (Thứ Hai – Thứ Sáu) và loại trừ ngày lễ.
  2. Tùy chỉnh lịch làm việc với NETWORKDAYS.INTL (ví dụ: làm việc từ Thứ Hai – Thứ Bảy, hoặc chỉ làm việc vào các ngày cụ thể).
  3. Tạo ngày kết thúc dự án dựa trên số ngày làm việc mong muốn bằng hàm WORKDAY và WORKDAY.INTL.
  4. Xây dựng công thức mảng để tính ngày làm việc khi không có danh sách ngày lễ.
  5. Sử dụng VBA để tự động hoá việc tính ngày làm việc cho các báo cáo lớn.
  6. Áp dụng các mẹo nhanh, tránh lỗi thường gặp và tối ưu hoá hiệu suất.

1. Giới Thiệu Tổng Quan Về Ngày Làm Việc Trong Excel

1.1. Định Nghĩa “Ngày Làm Việc”

Trong bối cảnh doanh nghiệp, ngày làm việc thường được hiểu là các ngày mà nhân viên phải có mặt tại công ty hoặc thực hiện công việc, thường là từ Thứ Hai đến Thứ Sáu. Tuy nhiên, tùy vào từng công ty, mô hình làm việc có thể thay đổi:

  • Lịch 5 ngày/tuần (Thứ Hai – Thứ Sáu, nghỉ Thứ Bảy – Chủ Nhật).
  • Lịch 6 ngày/tuần (Thứ Hai – Thứ Bảy, nghỉ Chủ Nhật).
  • Lịch làm việc theo ca (ví dụ: chỉ làm việc vào các ngày thứ Hai, thứ Tư, thứ Sáu).
  • Ngày lễ quốc gia, ngày nghỉ công ty (ví dụ: Tết Nguyên Đán, Quốc Khánh).

Excel cung cấp các hàm có thể tùy biến để đáp ứng những yêu cầu này.

1.2. Tại Sao Cần Đếm Ngày Làm Việc?

  • Quản lý dự án: Xác định thời gian thực hiện công việc, tính deadline chính xác.
  • Tính lương: Đối với nhân viên trả lương theo ngày công, cần biết số ngày làm việc thực tế.
  • Báo cáo tài chính: Tính chi phí nhân sự, chi phí dự án.
  • Lập kế hoạch nguồn lực: Phân bổ nhân lực, lên lịch làm việc.

2. Hàm NETWORKDAYS – Đếm Ngày Làm Việc Cơ Bản

2.1. Cú Pháp Cơ Bản

=NETWORKDAYS(start_date, end_date, holidays)
  • start_date: Ngày bắt đầu (có thể là ô chứa ngày hoặc hàm DATE).
  • end_date: Ngày kết thúc.
  • holidays (tùy chọn): Dải ô chứa danh sách các ngày lễ (có thể là một hoặc nhiều ngày). Nếu không có, bỏ qua tham số này.

Hàm này mặc định tính ngày làm việc từ Thứ Hai – Thứ Sáu, tự động loại trừ Thứ Bảy và Chủ Nhật.

2.2. Ví Dụ Thực Tế

Giả sử:

AB
Ngày bắt đầu01/03/2026
Ngày kết thúc31/03/2026
Ngày lễ08/03/2026; 15/03/2026
  • Bước 1: Nhập ngày bắt đầu và kết thúc vào ô A2 và A3.
  • Bước 2: Nhập danh sách ngày lễ vào dải C2:C3.
  • Bước 3: Công thức:
=NETWORKDAYS(A2, A3, C2:C3)

Kết quả: 21 ngày làm việc (31 ngày trong tháng – 8 ngày cuối tuần – 2 ngày lễ).

2.3. Lưu Ý Khi Dùng NETWORKDAYS

Lỗi Thường GặpNguyên NhânCách Khắc Phục
#VALUE!Một trong các đối số không phải là ngày hợp lệ.Đảm bảo ô chứa ngày được định dạng là Date.
Kết quả sai lệchDanh sách ngày lễ không bao gồm các ngày cuối tuần.NETWORKDAYS tự động loại trừ cuối tuần; ngày lễ chỉ cần liệt kê các ngày làm việc.
Không tính ngày lễ đúngĐịnh dạng ngày lễ không khớp (ví dụ: ngày/ tháng/ năm vs tháng/ ngày/ năm).Kiểm tra định dạng ngày trong Excel (Format Cells → Date).

3. Hàm NETWORKDAYS.INTL – Tùy Chỉnh Lịch Làm Việc

Khi công ty có lịch làm việc không chuẩn (ví dụ: làm việc 6 ngày/tuần, hoặc chỉ làm việc vào các ngày cụ thể), NETWORKDAYS.INTL cho phép bạn định nghĩa ngày cuối tuần bất kỳ.

3.1. Cú Pháp

=NETWORKDAYS.INTL(start_date, end_date, weekend, holidays)
  • weekend: Chuỗi 7 ký tự (hoặc một số mã) xác định ngày cuối tuần. Chuỗi gồm 0 (ngày làm việc) và 1 (ngày cuối tuần), bắt đầu từ Thứ Hai.
  • Ví dụ: "0000011" → Thứ Bảy và Chủ Nhật là ngày cuối tuần (giống mặc định).
  • "1111110" → Chỉ Chủ Nhật là ngày cuối tuần (làm việc từ Thứ Hai – Thứ Bảy).
  • "0000000" → Không có ngày cuối tuần (tất cả ngày đều là ngày làm việc).
  • holidays: Tương tự như hàm NETWORKDAYS.

3.2. Ví Dụ Thực Tế: Lịch 6 Ngày/tuần

Giả sử công ty làm việc từ Thứ Hai – Thứ Bảy, nghỉ Chủ Nhật.

  • weekend = "0000001" (Chỉ ngày cuối tuần là Chủ Nhật).

Công thức:

=NETWORKDAYS.INTL(A2, A3, "0000001", C2:C3)

Nếu A2 = 01/04/2026, A3 = 30/04/2026, và không có ngày lễ, kết quả sẽ là 26 ngày (30 ngày – 4 Chủ Nhật).

3.3. Sử Dụng Mã weekend Tiết Kiệm

Excel cung cấp mã số (1‑17) cho các cấu hình cuối tuần phổ biến:

MãĐịnh Nghĩa
1Thứ Hai – Thứ Sáu là ngày làm việc (giá trị mặc định).
2Thứ Hai – Thứ Thứ Bảy là ngày làm việc, Chủ Nhật nghỉ.
3Thứ Hai – Thứ Sáu, Chủ Nhật là ngày làm việc, Thứ Bảy nghỉ.
7Thứ Hai – Thứ Năm là ngày làm việc, Thứ Sáu – Chủ Nhật nghỉ.
11Thứ Hai – Thứ Bảy là ngày làm việc, Chủ Nhật nghỉ (tương tự chuỗi “0000001”).

Ví dụ:

=NETWORKDAYS.INTL(A2, A3, 2, C2:C3) // Lịch 6 ngày/tuần

3.4. Khi Nào Nên Dùng NETWORKDAYS.INTL

  • Khi công ty có ngày nghỉ khác ngày cuối tuần chuẩn (ví dụ: nghỉ Thứ Hai hàng tháng).
  • Khi cần tính điểm danh cho ca làm việc đặc biệt (ví dụ: làm việc 3 ngày/tuần).
  • Khi muốn bỏ qua một ngày cuối tuần cụ thể (ví dụ: công ty làm việc vào Chủ Nhật, nhưng không vào Thứ Bảy).

4. Hàm WORKDAY Và WORKDAY.INTL – Tính Ngày Kết Thúc Dựa Trên Số Ngày Làm Việc

4.1. Công Dụng

  • WORKDAY: Tính ngày kết thúc sau một số ngày làm việc, loại trừ cuối tuần (Thứ Hai – Thứ Sáu) và ngày lễ.
  • WORKDAY.INTL: Tương tự, nhưng cho phép tùy chỉnh ngày cuối tuần.

4.2. Cú Pháp

=WORKDAY(start_date, days, holidays)
=WORKDAY.INTL(start_date, days, weekend, holidays)
  • days: Số ngày làm việc muốn cộng (có thể là số âm để tính ngày bắt đầu ngược lại).
  • start_date: Ngày bắt đầu (không tính ngày này nếu là ngày làm việc; Excel sẽ bắt đầu tính từ ngày kế tiếp).

4.3. Ví Dụ: Dự Án 15 Ngày Làm Việc

  • Ngày bắt đầu: 01/05/2026 (Wednesday)
  • Số ngày làm việc: 15
  • Ngày lễ: 03/05/2026 (Ngày lễ Quốc tế Lao Động)

Công thức:

=WORKDAY(A2, 15, C2:C2)

Kết quả: 22/05/2026 (bỏ qua cuối tuần và ngày lễ 03/05).

4.4. Tùy Chỉnh Lịch 6 Ngày/tuần

=WORKDAY.INTL(A2, 15, "0000001", C2:C2)

Kết quả sẽ khác vì chỉ Chủ Nhật là ngày cuối tuần.

5. Tính Ngày Làm Việc Khi Không Có Danh Sách Ngày Lễ

Count Working Days In Excel
Count Working Days In Excel

Trong một số trường hợp, chúng ta không có sẵn danh sách ngày lễ, hoặc muốn tính nhanh số ngày làm việc chỉ dựa trên ngày bắt đầu và kết thúc. Có một số cách:

5.1. Công Thức Mảng Không Cần Danh Sách Lễ

Giả sử chúng ta chỉ muốn tính ngày làm việc chuẩn (Thứ Hai – Thứ Sáu) và không quan tâm đến ngày lễ.

=SUMPRODUCT(--(WEEKDAY(ROW(INDIRECT(A2&":"&A3)),2)<6))
  • ROW(INDIRECT(A2&":"&A3)) tạo mảng các số ngày.
  • WEEKDAY(...,2) trả về 1‑5 cho Thứ Hai‑Thứ Sáu, 6‑7 cho Thứ Bảy‑Chủ Nhật.
  • --(...<6) chuyển TRUE/FALSE thành 1/0.
  • SUMPRODUCT cộng tổng.

5.2. Giải Thích Chi Tiết

BướcMô tả
1INDIRECT(A2&":"&A3) tạo chuỗi “01/03/2026:31/03/2026”.
2ROW(...) trả về mảng các số nguyên đại diện cho ngày trong Excel (serial number).
3WEEKDAY(...,2) chuyển thành 1‑7 (Mon‑Sun).
4Kiểm tra <6 để giữ lại chỉ các ngày từ Mon‑Fri.
5SUMPRODUCT cộng lại số ngày.

5.3. Khi Cần Loại Trừ Ngày Lễ Tự Động

Nếu bạn có một danh sách ngày lễ trong một bảng dữ liệu nhưng không muốn nhập trực tiếp vào hàm, có thể dùng VLOOKUP hoặc COUNTIF trong công thức mảng:

=SUMPRODUCT(--(WEEKDAY(ROW(INDIRECT(A2&":"&A3)),2)<6), --(COUNTIF(holidays, ROW(INDIRECT(A2&":"&A3)))=0))

Trong đó holidays là dải ô chứa ngày lễ.

6. Sử Dụng VBA Để Đếm Ngày Làm Việc Trong Các Tập Tin Lớn

Khi làm việc với hàng ngàn dòng dữ liệu, các công thức mảng có thể làm chậm workbook. VBA cung cấp cách tính nhanh hơn và có thể tự động hoá quy trình.

6.1. Macro Đếm Ngày Làm Việc Cơ Bản

Function CountWorkDays(StartDate As Date, EndDate As Date, _ Optional Holidays As Range, _ Optional WeekendPattern As String = "0000011") As Long Dim d As Date, cnt As Long Dim isHoliday As Boolean For d = StartDate To EndDate ' Kiểm tra cuối tuần dựa trên chuỗi WeekendPattern If Mid(WeekendPattern, Weekday(d, vbMonday), 1) = "0" Then ' Kiểm tra ngày lễ nếu có isHoliday = False If Not Holidays Is Nothing Then If Not IsError(Application.Match(d, Holidays, 0)) Then isHoliday = True End If If Not isHoliday Then cnt = cnt + 1 End If Next d CountWorkDays = cnt
End Function

Cách dùng trong ô Excel:

=CountWorkDays(A2, A3, C2:C5, "0000001") // Lịch 6 ngày/tuần

6.2. Tối Ưu Hóa Với Mảng

Để tăng tốc, bạn có thể chuyển danh sách ngày lễ sang mảng và dùng hàm Application.InStr:

Function CountWorkDaysFast(StartDate As Date, EndDate As Date, _ Optional Holidays As Variant, _ Optional WeekendPattern As String = "0000011") As Long Dim arrHol As Variant, i As Long, d As Date, cnt As Long Dim isHoliday As Boolean If Not IsMissing(Holidays) Then arrHol = Holidays.Value For d = StartDate To EndDate If Mid(WeekendPattern, Weekday(d, vbMonday), 1) = "0" Then isHoliday = False If Not IsMissing(Holidays) Then For i = LBound(arrHol) To UBound(arrHol) If arrHol(i, 1) = d Then isHoliday = True Exit For End If Next i End If If Not isHoliday Then cnt = cnt + 1 End If Next d CountWorkDaysFast = cnt
End Function

6.3. Khi Nào Nên Dùng VBA?

  • Dữ liệu lớn: Hơn 10.000 dòng.
  • Tự động hoá báo cáo: Gửi email, tạo file PDF.
  • Yêu cầu tùy chỉnh phức tạp: Ví dụ, tính ngày làm việc dựa trên ca làm việc cá nhân.

7. Các Mẹo Nhanh Và Thông Tin Thêm

7.1. Định Dạng Ngày Đúng

  • Sử dụng Format Cells → Date để chắc chắn Excel nhận dạng là ngày.
  • Tránh nhập ngày dạng văn bản (text) như “01-03-2026” mà không có định dạng date.

7.2. Sử Dụng Tên Dải (Named Ranges)

  • Đặt tên cho dải ngày lễ: Select C2:C10 → Formulas → Define Name → Holidays.
  • Công thức trở nên ngắn gọn: =NETWORKDAYS(A2, A3, Holidays).

7.3. Kiểm Tra Lỗi Với IFERROR

=IFERROR(NETWORKDAYS(A2, A3, Holidays), "Ngày không hợp lệ")

7.4. Tính Ngày Làm Việc Cho Nhiều Dòng

Giả sử có danh sách dự án trong cột A (start) và B (end). Đặt công thức trong C2 và kéo xuống:

=NETWORKDAYS(A2, B2, Holidays)

7.5. Khi Cần Đếm Ngày Làm Việc Của Nhiều Nhân Viên Với Lịch Khác Nhau

  • Tạo bảng lịch làm việc: Mỗi nhân viên có một cột WeekendPattern.
  • Dùng hàm tùy chỉnh trong VBA để truyền pattern riêng cho từng người.

8. Tổng Kết

Việc đếm ngày làm việc trong Excel không chỉ dừng lại ở hàm NETWORKDAYS đơn giản. Với các công cụ mở rộng như NETWORKDAYS.INTL, WORKDAY.INTL, công thức mảng, và VBA, bạn có thể:

  • Tùy chỉnh lịch làm việc cho mọi mô hình doanh nghiệp.
  • Tự động hoá tính toán ngày kết thúc dự án, lương, và báo cáo.
  • Xử lý dữ liệu lớn một cách hiệu quả, giảm tải cho workbook.

Hãy áp dụng các kỹ thuật trên vào thực tiễn công việc của bạn, từ các bảng tính nhỏ cho cá nhân đến hệ thống quản lý dự án quy mô doanh nghiệp. Khi bạn đã nắm vững cách count working days in excel, việc quản lý thời gian và nguồn lực sẽ trở nên đơn giản, chính xác và nhanh chóng hơn bao giờ hết.

Chúc bạn thành công trong việc áp dụng những kiến thức này vào công việc hàng ngày!

⚠️
LƯU Ý QUAN TRỌNG: Miễn trừ trách nhiệm: Mặc dù chúng tôi luôn nỗ lực để đảm bảo tính chính xác và cập nhật của thông tin, nhưng các quy định về giáo dục và tuyển sinh có thể thay đổi theo thời gian. BigSchool không chịu trách nhiệm về bất kỳ sai sót nào hoặc kết quả phát sinh từ việc sử dụng thông tin trên trang này. Độc giả nên liên hệ trực tiếp với nhà trường hoặc cơ quan chức năng để có thông tin mới nhất. Ngoài ra, BigSchool tuyệt đối không bán sản phẩm, khóa học hay cung cấp dịch vụ được nhắc đến trong bài.

Viết một bình luận