google-sheets
Cách tạo bảng chấm công online bằng Google Sheets (kết hợp Google Form)

Chấm công online bằng Google Sheets hoạt động thế nào?
Với cửa hàng, văn phòng nhỏ chưa đầu tư máy chấm công vân tay, có thể dựng một hệ thống chấm công online chỉ bằng 2 công cụ miễn phí của Google:
- Google Form: nhân viên mở link (lưu sẵn trên điện thoại) để bấm chấm "Vào ca" hoặc "Ra ca" — Form tự ghi lại thời gian chấm chính xác đến từng giây.
- Google Sheets: nhận toàn bộ dữ liệu Form gửi về, rồi dùng công thức tự tính giờ vào, giờ ra và tổng số giờ làm của từng người mỗi ngày.
Nhân viên không cần cài app, không cần quẹt thẻ — chỉ cần điện thoại có trình duyệt và kết nối mạng.
Bước 1: Tạo Google Form chấm công
Vào forms.google.com, tạo Form mới với 2 câu hỏi:
- Họ và tên — chọn kiểu câu hỏi Trắc nghiệm (Multiple choice) hoặc Menu thả xuống (Dropdown), gõ sẵn danh sách tên nhân viên. Dùng dropdown thay vì để nhân viên tự gõ tên để tránh sai chính tả (ví dụ gõ thiếu dấu, viết tắt khác nhau mỗi lần) làm công thức ở bước sau không khớp được dữ liệu.
- Loại chấm công — cũng dùng dropdown, 2 lựa chọn cố định:
Vào cavàRa ca.
Không cần thêm câu hỏi giờ giấc — Google Form tự động ghi lại thời điểm gửi Form vào cột Timestamp khi có phản hồi, không cần nhân viên tự nhập.
Sau khi tạo xong, bấm Gửi (Send) → copy link Form → gửi cho nhân viên lưu làm bookmark trên điện thoại (hoặc in mã QR dán ở cửa ra vào để quét nhanh).
Bước 2: Liên kết Form với Google Sheets
Trong Form, chuyển sang tab Phản hồi (Responses), bấm biểu tượng Sheets màu xanh lá ở góc phải để tạo bảng tính liên kết. Google sẽ tự tạo một sheet tên Form Responses 1 với cấu trúc:
| A | B | C | |
|---|---|---|---|
| 1 | Timestamp | Họ và tên | Loại chấm công |
| 2 | 13/09/2026 7:58:32 | Nguyễn Văn A | Vào ca |
| 3 | 13/09/2026 17:02:10 | Nguyễn Văn A | Ra ca |
| 4 | 13/09/2026 8:05:47 | Trần Thị B | Vào ca |
Mỗi lần nhân viên bấm gửi Form, một dòng mới tự thêm vào sheet này — không cần thao tác gì thêm.
Lưu ý múi giờ: nếu Timestamp hiện lệch nhiều giờ so với giờ Việt Nam thực tế, vào File → Cài đặt (Settings) → múi giờ, chọn (GMT+07:00) Indochina Time. Mặc định Google Sheets có thể lấy múi giờ khác tùy tài khoản, cần kiểm tra ngay từ đầu trước khi dùng để tính lương.
Bước 3: Thêm cột Ngày để lọc theo từng ngày
Ở sheet Form Responses 1, thêm cột D tên Ngày, công thức tại D2:
=INT(A2)
INT() cắt bỏ phần giờ:phút:giây trong Timestamp, chỉ giữ lại phần ngày (dạng số serial ngày của Sheets) để dùng làm điều kiện lọc chính xác ở bước tính giờ làm. Bôi đen cột D, định dạng Format → Number → Date để hiển thị dễ đọc. Kéo công thức xuống hết các dòng có dữ liệu.
Bước 4: Tính giờ vào, giờ ra và số giờ làm bằng MINIFS/MAXIFS
Tạo một sheet mới tên BangGio, dựng bảng tổng hợp theo từng nhân viên/từng ngày:
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Ngày | Họ và tên | Giờ vào | Giờ ra | Số giờ làm | Cảnh báo |
| 2 | 13/09/2026 | Nguyễn Văn A |
Cột A và B nhập tay (ngày cần chấm công và tên nhân viên tương ứng — có thể dùng dropdown lấy từ sheet danh sách nhân viên để tránh gõ sai tên).
Giờ vào (C2):
=MINIFS('Form Responses 1'!A:A, 'Form Responses 1'!D:D, A2, 'Form Responses 1'!B:B, B2, 'Form Responses 1'!C:C, "Vào ca")
Giờ ra (D2):
=MAXIFS('Form Responses 1'!A:A, 'Form Responses 1'!D:D, A2, 'Form Responses 1'!B:B, B2, 'Form Responses 1'!C:C, "Ra ca")
MINIFS lấy thời điểm sớm nhất khớp đủ 3 điều kiện (đúng ngày, đúng tên, loại là "Vào ca") — phòng trường hợp nhân viên lỡ bấm chấm vào ca nhiều lần. MAXIFS ngược lại lấy thời điểm muộn nhất của "Ra ca". Bôi đen cột C, D, định dạng Format → Number → Time kiểu hh:mm để chỉ hiện giờ:phút thay vì cả ngày tháng.
Số giờ làm (E2):
=(D2-C2)*24
Vì Sheets lưu thời gian dưới dạng phân số của 1 ngày, phải nhân thêm 24 mới ra đúng đơn vị giờ. Định dạng cột E thành số thập phân (ví dụ 0.0) để dễ cộng dồn sang bảng lương.
Kéo cả 3 công thức xuống cho từng nhân viên, từng ngày là có ngay bảng giờ làm tự động, không cần cộng trừ thời gian bằng tay.
Bước 5: Cảnh báo đi muộn bằng công thức và Conditional Formatting
Giả sử ca làm bắt đầu lúc 8:00, thêm công thức tại cột F (Cảnh báo):
=IF(C2>TIME(8,0,0),"Đi muộn","")
TIME(8,0,0) tạo giá trị giờ 8:00 để so sánh với giờ vào thực tế ở cột C. Muốn tô màu nổi bật thay vì chỉ hiện chữ, bôi đen cột C, vào Format → Conditional formatting, chọn Custom formula is, nhập:
=$C2>TIME(8,0,0)
Chọn màu nền đỏ nhạt, bấm Done. Từ giờ, ô giờ vào nào muộn hơn 8:00 sẽ tự động nổi màu, không cần dò từng dòng.
So sánh chấm công giấy/sổ tay và chấm công online bằng Sheets
| Tiêu chí | Sổ chấm công giấy | Google Form + Sheets |
|---|---|---|
| Ghi nhận thời gian | Nhân viên tự ghi giờ, dễ ghi khống | Timestamp tự động, không sửa được sau khi gửi |
| Tổng hợp giờ làm cuối tháng | Cộng tay từng dòng, mất thời gian | Công thức tự tính, cập nhật ngay khi có chấm công mới |
| Xem từ xa | Không thể, phải có mặt tại chỗ | Chủ/quản lý xem trực tiếp trên Sheets mọi lúc |
| Chi phí đầu tư | Gần như 0 nhưng tốn công quản lý | Miễn phí, chỉ tốn công dựng công thức ban đầu |
| Chống chấm hộ | Không kiểm soát được | Không kiểm soát được (không có định vị/vân tay) |
Lỗi thường gặp
MINIFS/MAXIFS trả về 0:00 (hiển thị như nửa đêm) dù nhân viên có đi làm Do thiếu dữ liệu khớp điều kiện — thường vì nhân viên quên bấm chấm "Vào ca" hoặc "Ra ca" hôm đó, hoặc tên chọn trong Form không khớp tuyệt đối với tên nhập ở cột B sheet BangGio (thừa khoảng trắng, viết hoa/thường khác — Sheets không phân biệt hoa/thường nhưng vẫn phân biệt dấu cách thừa). Kiểm tra lại dữ liệu gốc ở sheet Form Responses 1 trước khi kết luận nhân viên nghỉ.
Timestamp lệch múi giờ so với thực tế
Xảy ra khi chưa đổi múi giờ file về (GMT+07:00) Indochina Time ở Bước 2. Sửa xong cần kiểm tra lại các Timestamp cũ đã ghi trước đó — đổi múi giờ chỉ ảnh hưởng cách hiển thị của dữ liệu mới từ lúc đổi trở đi trong một số trường hợp, nên tốt nhất đổi múi giờ ngay từ khi tạo Form, tránh phải đối chiếu lại dữ liệu cũ.
Nhân viên bấm nhầm "Vào ca" hai lần liên tiếp trong ngày Không làm sai kết quả MIN/MAX (vẫn lấy đúng giờ sớm nhất), nhưng gây khó khi cần đối chiếu thủ công. Muốn xem toàn bộ log gốc của một người trong ngày, lọc trực tiếp sheet Form Responses 1 bằng bộ lọc (Data → Create a filter) theo cột Họ và tên và Ngày.
Cột Giờ vào/Giờ ra hiện cả ngày tháng thay vì chỉ giờ:phút Do chưa định dạng lại kiểu ô. Bôi đen vùng cần sửa, vào Format → Number → Time (không chọn Date time) để chỉ hiển thị phần giờ.
Khi nào nên chuyển sang máy chấm công chuyên dụng?
Cách làm trên phù hợp với đội ngũ vài người đến vài chục người, quản lý tin tưởng lẫn nhau. Khi quy mô lớn hơn hoặc cần kiểm soát chặt hơn, nên cân nhắc máy chấm công vân tay/khuôn mặt, hoặc app có định vị GPS khi chấm công — vì cách dùng Form ở trên không xác thực được người bấm có thực sự đang có mặt tại nơi làm việc hay không (nhân viên có thể nhờ đồng nghiệp bấm hộ).
Học Google Sheets thực chiến tại TP Vinh
Dựng được hệ thống chấm công tự động chỉ là một ứng dụng thực tế của Google Form, MINIFS/MAXIFS và Conditional Formatting. Nếu bạn muốn học Google Sheets bài bản, áp dụng ngay vào công việc quản lý nhân sự, kho, chi tiêu hàng ngày, tham khảo khóa học Google Sheets tại Điền Nguyễn AZ.
📞 Hotline / Zalo: 0362 465 361
👉 Xem chi tiết: Khóa học Google Sheets thực tế tại TP Vinh
Tài liệu miễn phí
30 phím tắt Excel hay dùng nhất
Tổng hợp phím tắt giúp thao tác Excel nhanh hơn — điền thông tin để tải file PDF miễn phí về dùng ngay.
Bài viết liên quan

21/09/2026
Cách dùng Google Sheets làm CRM đơn giản cho cá nhân
Hướng dẫn dựng một file CRM đơn giản bằng Google Sheets để tự quản lý khách hàng, lịch chăm sóc và trạng thái chốt đơn — không cần cài phần mềm CRM riêng.

20/09/2026
Cách tạo bảng theo dõi tiến độ dự án bằng Google Sheets
Hướng dẫn dựng bảng theo dõi tiến độ dự án trong Google Sheets: cột trạng thái dạng dropdown, thanh tiến độ bằng Conditional Formatting, cảnh báo trễ hạn tự động và chia sẻ cho cả nhóm cùng cập nhật.

19/09/2026
Cách bảo mật dữ liệu khi chia sẻ Google Sheets công khai
Hướng dẫn các cách hạn chế rủi ro khi phải chia sẻ Google Sheets công khai hoặc cho nhiều người: phân quyền theo lớp, ẩn công thức/dữ liệu nhạy cảm, khóa vùng, và dùng bản xem trước thay vì chia sẻ file gốc.