Bỏ qua đến nội dung chính

Xử lý tình huống

Chấm công: đếm ngày công, nghỉ phép, đi muộn

Bảng chấm công toàn ký hiệu X, P, KL, ½ và giờ vào? Cách đếm ngày công, nghỉ phép và nghỉ không lương bằng COUNTIF, tính công chuẩn của tháng bằng NETWORKDAYS.INTL có trừ ngày nghỉ chung, và đánh dấu đi muộn lúc 08:00 bằng IF.

16 phút2 bài tậpHành chính – nhân sựKế toánVăn phòng
Mục lục
  1. Cách làm nhanh
  2. Vấn đề bạn đang gặp
  3. Đếm công, nghỉ phép và nghỉ không lương
  4. Đánh dấu đi muộn
  5. Tính công chuẩn của tháng
  6. Khi bảng chấm công là danh sách dài
  7. Vì sao lỗi này xảy ra
  8. Trên Excel thật
  9. Luyện tập (2 bài tập)
  10. Câu hỏi thường gặp

Cách làm nhanh

  1. Đếm từng ký hiệu trong hàng của nhân viên. Dùng COUNTIF trên vùng ngày của hàng đó, mỗi ký hiệu một cột, ví dụ =COUNTIF(H2:AK2,"P*") để đếm ngày nghỉ phép.
  2. Cho phép dấu cách thừa. Thêm dấu * sau ký hiệu để ô "X " (thừa dấu cách ở cuối) vẫn được đếm cùng các ô "X".
  3. Cộng nửa công. Tổng công bằng số ngày X cộng một nửa số ngày ½, ví dụ =C2+D2/2.
  4. Đánh dấu đi muộn. So giờ vào với giờ quy định bằng IF, ví dụ =IF(C2>$G$1,"Muộn","Đúng giờ"), rồi đếm chữ Muộn bằng COUNTIF.
  5. Tính công chuẩn của tháng. Dùng NETWORKDAYS.INTL với số 11 (chỉ nghỉ Chủ nhật) và vùng ngày nghỉ chung để ra số ngày làm việc của tháng.

Vấn đề bạn đang gặp

Bạn có bảng chấm công tháng 11/2026 của 8 nhân viên. Mỗi ngày là một cột, mỗi ô là một ký hiệu: X là làm đủ ngày, ½ là nửa ngày, P là nghỉ phép, KL là nghỉ không lương, L là nghỉ lễ của công ty, ô trống là Chủ nhật. Cuối tháng bạn cần số ngày của từng loại cho từng người, rồi số ngày công thực tế để tính lương. Đếm bằng mắt thì chậm và dễ sai.

Bạn thử =COUNTIF(H2:AK2,"X") để đếm ngày làm đủ của nhân viên ở hàng 2. Kết quả ra, nhưng một số hàng ít hơn số X bạn đếm được bằng mắt.

Ba hàng đầu của bảng chấm công, các ngày 1 đến 7: ngày 1 trống vì là Chủ nhật, các ô còn lại là X hoặc KL, và bốn ô X được tô màu là ô có dấu cách thừa. Chú thích: 1: X kèm một dấu cách ở cuối, nhìn không thấy; 2: Ô X khác cũng thừa dấu cách; 3: Ngày 1 là Chủ nhật: ô trống.
Các ngày 1 đến 7 của ba nhân viên đầu tiên. Bốn ô được tô màu (I2, K2, L2 và M4) trông giống X nhưng thật ra là X kèm một dấu cách ở cuối, nên công thức đếm đúng chữ X bỏ sót chúng.

Đếm công, nghỉ phép và nghỉ không lương

Đếm các ký hiệu của một nhân viên rồi tính tổng công

  1. Làm gì: Chọn C2 và gõ =COUNTIF(H2:AK2,"X"). Vùng H2:AK2 là các ngày của hàng 2, điều kiện là chữ X đặt trong dấu nháy kép.

    Vì sao: COUNTIF đếm số ô trong vùng khớp điều kiện. Điều kiện là chữ phải đặt trong dấu nháy kép, nếu không bạn nhận lỗi hoặc kết quả sai.

  2. Chỗ hay sai

    Làm gì: So kết quả với số X bạn đếm bằng mắt. Hàng nào ít hơn thì sửa điều kiện thành =COUNTIF(H2:AK2,"X*").

    Vì sao: Ô "X " có dấu cách ở cuối là một chữ khác với "X", nên COUNTIF không đếm nó. Dấu * thay cho mọi ký tự theo sau, nên "X*" khớp cả "X" lẫn "X ".

  3. Làm gì: Làm tương tự cho các cột còn lại: D2 đếm "½*", E2 đếm "P*", F2 đếm "KL*". Ký hiệu ½ khó gõ, hãy sao chép nó từ tiêu đề cột D.

    Vì sao: Mỗi ký hiệu cần một công thức riêng, cùng cấu trúc, chỉ đổi điều kiện. COUNTIF không phân biệt chữ hoa và chữ thường nên X và x được đếm như nhau.

  4. Làm gì: Ở G2 gõ =C2+D2/2. Rồi chọn C2:G2 và kéo xuống hàng 9.

    Vì sao: Một ngày nửa công chỉ tính nửa ngày, nên Tổng công bằng số ngày làm đủ cộng một nửa số ngày nửa công. Vùng H2:AK2 không có $ ở số hàng nên khi kéo xuống nó đổi theo từng nhân viên.

Tự hỏi mình

  • Vì sao thêm dấu * vào điều kiện lại đếm được cả ô có dấu cách thừa?
  • Nếu có thêm ký hiệu KL2 trong bảng, điều kiện "KL*" có còn đúng không?

Một cách khác là làm sạch dữ liệu trước (xóa dấu cách thừa), rồi đếm đúng chữ X. Cách này gọn hơn khi bạn được sửa bảng gốc. Còn khi bảng đến từ người khác và mỗi tháng một lần, thêm dấu * vào điều kiện nhanh hơn.

Đánh dấu đi muộn

Giờ vào của máy chấm công thường nằm ở một cột riêng. Bạn cần biết ai vào sau 08:00 và bao nhiêu người như vậy.

Danh sách sáu nhân viên với cột Giờ vào đã có giờ và cột Đi muộn? còn trống. Chú thích: 1: Giờ vào: một số nhỏ hơn 1 hiện dưới dạng giờ; 2: Đi muộn?: ghi Muộn hoặc Đúng giờ.
Cột Giờ vào đã có sẵn. Cột Đi muộn? chờ công thức so sánh giờ vào với giờ quy định 08:00.

Đánh dấu và đếm người đi muộn

  1. Làm gì: Đặt giờ quy định vào một ô, ví dụ G1 chứa 08:00. Ở D2, cạnh giờ vào ở C2, gõ =IF(C2>$G$1,"Muộn","Đúng giờ").

    Vì sao: IF so sánh giờ vào với giờ quy định: nếu lớn hơn thì ghi Muộn, ngược lại ghi Đúng giờ. Chữ trong công thức phải đặt trong dấu nháy kép.

  2. Chỗ hay sai

    Làm gì: Giữ $G$1 có hai dấu $, nhấn Enter rồi sao chép D2 xuống hết danh sách.

    Vì sao: Giờ quy định chỉ có một ô. Dấu $ giữ nó đứng yên khi sao chép; nếu thiếu, hàng dưới so với G2, G3 là những ô trống.

  3. Làm gì: Ở một ô tổng, ví dụ G3, đếm số chữ Muộn: =COUNTIF(D2:D9,"Muộn").

    Vì sao: Cột D đã là chữ nên đếm bằng COUNTIF như với ký hiệu chấm công.

Tự hỏi mình

  • Giờ vào đúng 08:00 có bị ghi Muộn không? Vì sao dấu > cho kết quả đó?

Excel lưu một giờ là phần thập phân của một ngày: 12:00 là 0.5. Vì vậy =IF(C2>$G$1,"Muộn","Đúng giờ") so sánh hai số, và 08:15 lớn hơn 08:00 đúng như bạn nhìn.

Tính công chuẩn của tháng

Công chuẩn là số ngày công ty phải làm trong tháng. Bạn cần nó để so với Tổng công của từng người.

Đếm ngày làm việc của tháng 11/2026, trừ Chủ nhật và ngày nghỉ chung

  1. Làm gì: Ghi ngày đầu tháng ở G5, ngày cuối tháng ở H5, và các ngày nghỉ chung ở G6:H6.

    Vì sao: Hàm đếm ngày làm việc đọc ngày từ ô nên bạn đổi tháng chỉ cần đổi các ô này. Ngày nghỉ chung ở đây là danh sách ví dụ của một công ty, không phải ngày lễ theo luật.

  2. Chỗ hay sai

    Làm gì: Công ty làm Thứ Hai đến Thứ Bảy, nên ở G8 gõ =NETWORKDAYS.INTL(G5,H5,11,G6:H6).

    Vì sao: Đối số thứ ba là mã ngày nghỉ trong tuần: 11 là chỉ nghỉ Chủ nhật. Đối số thứ tư là vùng ngày nghỉ riêng, được loại ra thêm.

  3. Làm gì: Nếu công ty nghỉ cả Thứ Bảy và Chủ nhật, đặt đối số thứ ba là 1: =NETWORKDAYS.INTL(G5,H5,1,G6:H6).

    Vì sao: Mã 1 (hoặc bỏ trống đối số này) coi Thứ Bảy và Chủ nhật là ngày nghỉ. Hàm NETWORKDAYS không cho chọn ngày nghỉ trong tuần, nên khi công ty làm Thứ Bảy bạn cần NETWORKDAYS.INTL.

Tự hỏi mình

  • Nếu một ngày nghỉ chung rơi vào Chủ nhật, nó có làm công chuẩn giảm thêm một lần nữa không?

Khi bảng chấm công là danh sách dài

Nhiều máy chấm công xuất ra danh sách dài: mỗi hàng một lượt, với Mã NV ở cột A, Ngày ở cột B và Ký hiệu ở cột C. Khi đó bạn đếm theo hai điều kiện cùng lúc, đúng mã nhân viên và đúng ký hiệu, bằng COUNTIFS.

Điền vào chỗ trống

=COUNTIFS($A$2:$A$61,J2,$C$2:$C$61,)

Vì sao lỗi này xảy ra

Hàm đếm so sánh từng ký tự. Với COUNTIF, X và X là hai chữ khác nhau, dù mắt bạn không phân biệt được. Dấu cách thừa thường đến từ gõ tay hoặc dữ liệu chép từ nơi khác. Microsoft cũng cảnh báo điều này: khi đếm chữ, dữ liệu không nên có dấu cách ở đầu hoặc cuối, nếu không COUNTIF có thể trả về kết quả không mong đợi, và gợi ý dùng CLEAN hoặc TRIM để làm sạch.

Khi thêm dấu *, bạn không sửa dữ liệu mà nới điều kiện. Cách này tiện, nhưng nó cũng khớp mọi chữ bắt đầu bằng ký hiệu đó, nên chỉ dùng khi không có ký hiệu nào là phần đầu của ký hiệu khác. Trong bảng này X, ½, P và KL đều khác nhau ngay từ chữ đầu.

  • COUNTIF ra số nhỏ hơn số ký hiệu bạn đếm bằng mắt, ở một vài hàng.

    Nguyên nhân
    Có ô thừa dấu cách ở cuối, nên không khớp điều kiện đúng chữ.
    Cách sửa
    Thêm * vào điều kiện, ví dụ "X*", hoặc xóa dấu cách thừa trong bảng gốc rồi đếm lại.
  • Công thức báo #NAME? khi đếm ký hiệu.

    Nguyên nhân
    Điều kiện là chữ nhưng quên dấu nháy kép, ví dụ COUNTIF(H2:AK2,X). Excel hiểu X là một tên.
    Cách sửa
    Đặt điều kiện trong dấu nháy kép: "X*".
  • Mọi người đều ra Đúng giờ dù có người vào 08:30.

    Nguyên nhân
    Công thức so giờ với số 8 thay vì giờ quy định. Giờ là phần thập phân của một ngày, nên mọi giờ trong ngày đều nhỏ hơn 8.
    Cách sửa
    So với ô chứa giờ quy định, khóa bằng $G$1, và định dạng ô đó là giờ.
  • Công chuẩn ít hơn số ngày Thứ Hai đến Thứ Bảy của tháng.

    Nguyên nhân
    Bỏ trống đối số thứ ba của NETWORKDAYS.INTL (hoặc đặt là 1), nên Thứ Bảy bị coi là ngày nghỉ.
    Cách sửa
    Đặt đối số thứ ba là 11 để chỉ nghỉ Chủ nhật.

Đọc xong, giờ thử

Luyện tập ngay (2 bài tập)

Làm trực tiếp trên lưới trong trình duyệt. Mỗi lần bấm chấm bài, DeskLab kiểm tra kết quả và gợi ý nếu bạn chưa làm đúng.

Bắt đầu luyện tập

Chấm tự động ngay trên máy bạn. Không cần đăng nhập. Tiến độ lưu trên trình duyệt này.

Ô I2 chứa X kèm một dấu cách ở cuối. Công thức nào đếm được cả ô này cùng các ô X bình thường?

Công ty làm Thứ Hai đến Thứ Bảy, chỉ nghỉ Chủ nhật. Số nào ở đối số thứ ba của NETWORKDAYS.INTL đúng?

Giờ quy định nằm ở G1 và công thức ở D2 sẽ được sao chép xuống. Cách viết nào đúng?

Trên Excel thật

  • Lưới DeskLab và Excel thật: COUNTIF với dấu *, và NETWORKDAYS.INTL với mã 11 cùng vùng ngày nghỉ chung, cho kết quả đúng trên lưới, và hai bài tập kiểm tra điều đó. Theo Microsoft, trong Excel dấu * khớp mọi chuỗi ký tự, mã 11 là chỉ nghỉ Chủ nhật và ngày nghỉ riêng là một vùng ô chứa ngày, nên công thức của bài chạy giống nhau ở cả hai nơi. Dữ liệu bài tập chỉ thừa dấu cách thường, giờ vào không có giờ nào đúng 08:00.
  • Ngày tháng: ngày trong bài viết theo dạng ngày/tháng/năm. Microsoft khuyên nhập ngày bằng hàm DATE hoặc lấy từ kết quả của công thức khác, vì ngày nhập dạng chữ có thể gây lỗi. Hãy nhập ngày bằng DATE(năm,tháng,ngày) hoặc lấy từ ô có sẵn.

Câu hỏi thường gặp

Vì sao COUNTIF đếm thiếu một vài ngày X?

Có ô là X kèm một dấu cách ở cuối, nhìn không thấy. Theo Microsoft, khi đếm chữ, dữ liệu không nên có dấu cách ở đầu hoặc cuối, nếu không COUNTIF có thể trả về kết quả không mong đợi. Cách nhanh là thêm dấu * sau ký hiệu để điều kiện khớp cả hai kiểu ô.

Công ty làm cả Thứ Bảy thì tính công chuẩn bằng hàm nào?

Dùng NETWORKDAYS.INTL, hàm này cho bạn chọn ngày nghỉ trong tuần. Số 11 nghĩa là chỉ nghỉ Chủ nhật. NETWORKDAYS thường không cho chọn ngày nghỉ trong tuần.