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.
Mục lục
Cách làm nhanh
- Đế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.
- 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".
- 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.
- Đá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.
- 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.
Đế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
Làm gì: Chọn
C2và gõ=COUNTIF(H2:AK2,"X"). VùngH2:AK2là 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.
- Chỗ hay sai
Làm gì: So kết quả với số
Xbạ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 ".
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.
Làm gì: Ở
G2gõ=C2+D2/2. Rồi chọnC2:G2và 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.
Đánh dấu và đếm người đi muộn
Làm gì: Đặt giờ quy định vào một ô, ví dụ
G1chứ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.
- Chỗ hay sai
Làm gì: Giữ
$G$1có hai dấu$, nhấn Enter rồi sao chépD2xuố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.
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
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.
- Chỗ hay sai
Làm gì: Công ty làm Thứ Hai đến Thứ Bảy, nên ở
G8gõ=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.
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.
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ậpChấ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:
COUNTIFvới dấu*, vàNETWORKDAYS.INTLvới mã11cù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ã11là 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
DATEhoặ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ằngDATE(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.