Quản Lý Lịch Hẹn Phòng Khám Bằng Google Sheets: Chống Trùng Giờ 2026
Mục lục:
- 1. Dựng bảng lịch hẹn: chỉ giữ những cột thật sự cần
- 2. Công thức phát hiện trùng giờ theo từng bác sĩ
- 3. Tô đỏ dòng bị trùng và kiểm tra trước khi hứa với bệnh nhân
- 4. Lọc lịch theo ngày và theo bác sĩ
- 5. Nhắc lịch và đối phó với bệnh nhân không đến
- 6. Quy trình lễ tân tiếp nhận: từ cuộc gọi đến khi bệnh nhân ngồi vào ghế khám
- 7. Khi nào bảng tự làm hết đủ, khi nào nên chuyển sang phần mềm
- 8. Câu hỏi thường gặp
Trả lời nhanh: Để chống trùng giờ trong Google Sheets, tạo bảng lịch hẹn có cột bác sĩ, ngày, giờ bắt đầu, giờ kết thúc, trạng thái, rồi thêm cột cảnh báo dùng COUNTIFS đếm các lịch cùng bác sĩ, cùng ngày có giờ chồng nhau. Kết quả lớn hơn 1 nghĩa là trùng.
Thử hình dung một phòng khám tư có hai bác sĩ và một lễ tân tên Thảo. Sáng thứ Hai, điện thoại reo liên tục. Thảo nhận một cuộc hẹn 8 giờ 15 với bác sĩ Khoa, ghi vội vào sổ giấy. Mười phút sau, một bệnh nhân khác gọi đặt 8 giờ 00 cũng với bác sĩ Khoa, và Thảo cũng ghi nốt. Hai người cùng đến, cùng ngồi ở ghế chờ, và bác sĩ Khoa đang khám dở người đầu tiên. Chuyện này không hiếm. Lỗi nằm ở chỗ không ai nhìn được toàn bộ lịch của một bác sĩ trong một lần liếc, chứ không phải ở lễ tân bất cẩn.
Bài này đi qua từng bước dựng một bảng lịch hẹn trên Google Sheets đủ dùng cho phòng khám nhỏ. Có công thức dán chạy được, có cách lọc theo ngày, cách nhắc lịch và quy trình cho lễ tân. Bạn có thể làm hết bằng một file trống, không cần mua gì.
Dựng bảng lịch hẹn: chỉ giữ những cột thật sự cần
Sai lầm hay gặp nhất là làm bảng quá dài ngay từ đầu. Lễ tân không có thời gian điền mười lăm cột khi bệnh nhân đang đứng trước quầy. Chín cột dưới đây là đủ, đặt trong một sheet tên "LichHen", dòng 1 là tiêu đề, dữ liệu bắt đầu từ dòng 2:
| Cột | Nội dung | Ghi chú nhập liệu |
|---|---|---|
| A | Mã lịch | Đánh số tăng dần, ví dụ LH001 |
| B | Bệnh nhân | Họ tên |
| C | Số điện thoại | Dùng để gọi nhắc lịch |
| D | Bác sĩ | Chọn từ danh sách, không gõ tay |
| E | Ngày khám | Định dạng ngày, ví dụ 12/10/2026 |
| F | Giờ bắt đầu | Định dạng giờ, ví dụ 08:00 |
| G | Giờ kết thúc | Giờ bắt đầu cộng thời lượng dự kiến |
| H | Trạng thái | Chờ xác nhận / Đã xác nhận / Đã đến / Hủy / Không đến |
| I | Cảnh báo | Công thức tự điền, lễ tân không gõ |
Có hai chi tiết nhỏ nhưng quyết định bảng chạy đúng hay sai. Thứ nhất, cột bác sĩ phải là danh sách chọn (vào Dữ liệu, Xác thực dữ liệu, chọn "Trình đơn thả xuống"), vì "BS Khoa", "bs khoa" và "Bác sĩ Khoa" là ba giá trị khác nhau với công thức đếm. Thứ hai, cột ngày và giờ phải là kiểu ngày giờ thật. Nếu ô bị căn trái và nằm sát mép, thường nó đang là chữ, và mọi phép so sánh phía sau sẽ trả kết quả lạ.
Cột G (giờ kết thúc) có thể thay bằng thời lượng cố định nếu phòng khám chia ca đều, chẳng hạn mỗi lượt 20 phút. Giả sử phòng khám khám từ 8:00 đến 12:00, mỗi bác sĩ có 12 lượt mỗi buổi sáng, hai bác sĩ là 24 lượt. Con số này chỉ để bạn hình dung công suất, đừng coi là chuẩn.

Công thức phát hiện trùng giờ theo từng bác sĩ
Hai lịch trùng nhau khi chúng cùng bác sĩ, cùng ngày, và khoảng giờ chồng lên nhau. Khoảng A chồng khoảng B khi giờ bắt đầu của A nhỏ hơn giờ kết thúc của B, đồng thời giờ kết thúc của A lớn hơn giờ bắt đầu của B. Chỉ so sánh đúng giờ bắt đầu sẽ bỏ sót trường hợp 8:15 rơi vào giữa lượt 8:00–8:20, và đây chính là tình huống ở đầu bài.
Trước khi dán công thức, thêm hai cột phụ để so sánh giờ chính xác. Google Sheets lưu giờ dưới dạng số thập phân (8:20 là 0,34722…), còn COUNTIFS ghép điều kiện qua chuỗi chữ nên số bị cắt bớt chữ số. Hai lịch nối tiếp nhau (lịch này kết thúc đúng 08:20, lịch kia bắt đầu đúng 08:20) vì thế có thể bị báo trùng oan. Cách tránh là đổi giờ ra số phút nguyên. Ở ô M2 nhập =IF(F2="","",ROUND(F2*1440,0)) và ở ô N2 nhập =IF(G2="","",ROUND(G2*1440,0)), rồi kéo xuống các dòng bên dưới. Hai cột này là cột công thức, lễ tân không gõ vào.
Tại ô I2, dán công thức sau rồi kéo xuống các dòng bên dưới:
=IF(D2="","",IF(H2="Hủy","",IF(COUNTIFS($D$2:$D,D2,$E$2:$E,E2,$H$2:$H,"<>Hủy",$M$2:$M,"<"&N2,$N$2:$N,">"&M2)>1,"TRÙNG GIỜ","OK")))
Đọc từng phần cho dễ kiểm soát:
$D$2:$D,D2: chỉ đếm lịch của cùng một bác sĩ (cột D).$E$2:$E,E2: chỉ đếm lịch cùng ngày (cột E).$H$2:$H,"<>Hủy": bỏ qua các lịch đã hủy, để slot được hủy có thể đặt lại.$M$2:$M,"<"&N2và$N$2:$N,">"&M2: hai điều kiện chồng giờ như đã giải thích ở trên, tính trên số phút ở hai cột phụ M và N.>1: bản thân dòng đang xét luôn tự đếm chính nó một lần, nên chỉ khi kết quả từ 2 trở lên mới là trùng.
Thử với số liệu minh họa. Dòng 2: bác sĩ Khoa, 12/10/2026, 08:00–08:20, Đã xác nhận. Dòng 3: bác sĩ Khoa, cùng ngày, 08:15–08:35, Chờ xác nhận. Công thức ở cả hai dòng đều trả "TRÙNG GIỜ", vì mỗi dòng đếm được chính nó và dòng kia. Thảo nhìn vào là biết ngay phải gọi lại bệnh nhân thứ hai để dời sang 08:20. Dòng 4: bác sĩ Lan, cùng ngày, 08:15–08:35 thì vẫn "OK", vì hai bác sĩ khám song song là bình thường.
Một lưu ý về dấu ngăn đối số. Nếu dán công thức vào mà Google Sheets báo lỗi phân tích công thức, hãy đổi các dấu phẩy ngăn đối số thành dấu chấm phẩy (;). Một số cài đặt vùng và ngôn ngữ của bảng tính, trong đó có Việt Nam, yêu cầu viết như vậy. Bạn có thể xem và đổi ở Tệp, Cài đặt.

Tô đỏ dòng bị trùng và kiểm tra trước khi hứa với bệnh nhân
Chữ "TRÙNG GIỜ" ở cột I dễ bị bỏ sót khi bảng dài vài chục dòng. Hãy cho nó nổi lên: chọn vùng A2:I1000, vào Định dạng, Định dạng có điều kiện, chọn "Công thức tùy chỉnh là" và nhập =$I2="TRÙNG GIỜ", rồi chọn nền đỏ nhạt. Cả dòng sẽ đổi màu ngay khi có lịch chồng.
Cách này vẫn có một hạn chế thật: công thức chỉ báo sau khi dòng đã được nhập, nó không chặn được việc nhập. Với bệnh nhân đang nghe máy, bạn cần biết slot còn trống trước khi nói "dạ được ạ". Cách xử lý đơn giản là làm một ô kiểm tra nhanh ở cạnh bảng. Giả sử nhập bác sĩ vào L2, ngày vào L3, giờ bắt đầu vào L4, giờ kết thúc vào L5, thì ô L6 dán:
=IF(COUNTIFS($D$2:$D,L2,$E$2:$E,L3,$H$2:$H,"<>Hủy",$M$2:$M,"<"&ROUND(L5*1440,0),$N$2:$N,">"&ROUND(L4*1440,0))=0,"Còn trống","Đã có lịch")
Lần này so sánh với 0, vì ô kiểm tra chưa phải một dòng trong bảng nên không tự đếm chính nó. Lễ tân gõ bốn thông tin, đọc kết quả, rồi mới ghi lịch thật. Thêm vài giây mỗi cuộc gọi, nhưng bớt được cuộc gọi xin lỗi và dời lịch sau đó.
Lọc lịch theo ngày và theo bác sĩ
Bảng chạy vài tuần là hàng trăm dòng, không ai cuộn xuống tìm lịch hôm nay. Tạo một sheet thứ hai tên "HomNay". Ô B1 nhập ngày cần xem (hoặc dán =TODAY() nếu luôn xem hôm nay). Ô A3 dán công thức:
=SORT(FILTER(LichHen!B2:H,LichHen!E2:E=B1,LichHen!H2:H<>"Hủy"),5,TRUE)
Công thức lấy các cột B đến H của những dòng đúng ngày ở B1, bỏ các lịch đã hủy, rồi sắp theo giờ bắt đầu. Cột thứ 5 trong vùng B:H chính là cột F (giờ bắt đầu), vì B là cột 1, C là 2, D là 3, E là 4, F là 5. Nếu hôm đó chưa có lịch nào, FILTER sẽ báo lỗi "không tìm thấy kết quả". Bọc thêm IFERROR(...,"Chưa có lịch") bên ngoài để lễ tân không giật mình.
Muốn mỗi bác sĩ có một màn hình riêng, thêm điều kiện LichHen!D2:D=B2 vào FILTER, với B2 là ô chọn tên bác sĩ. Đầu buổi sáng, bác sĩ Khoa mở sheet này lên và thấy đúng những người mình sẽ khám, theo thứ tự giờ. Cách này cũng dùng được cho việc xếp phòng hay thiết bị dùng chung. Nguyên lý đếm chồng giờ giống hệt cách mà mẫu Google Sheets quản lý phòng họp và lịch dùng thiết bị áp dụng, chỉ thay "bác sĩ" bằng "phòng".
Nhắc lịch và đối phó với bệnh nhân không đến
Lịch trùng là lỗi của phòng khám, còn bệnh nhân quên hẹn là lỗi hay gặp ở phía còn lại, và cả hai đều để lại một khoảng trống trong ca khám. Đừng cố tự động hóa quá sớm. Bước đầu chỉ cần một cột J tên "Nhắc lịch" để lễ tân biết hôm nay phải gọi cho ai:
=IF(AND(E2=TODAY()+1,H2="Đã xác nhận"),"Gọi nhắc hôm nay","")
Công thức này hiện "Gọi nhắc hôm nay" ở những dòng có lịch khám vào ngày mai và đã xác nhận. Đầu giờ chiều, Thảo lọc cột J, gọi hoặc nhắn từng số trong cột C, rồi sửa trạng thái nếu bệnh nhân báo hủy. Slot được hủy từ chiều hôm trước còn kịp mời người đang chờ, còn hủy lúc 7 giờ 50 sáng thì không.
Cuối tháng, đếm số lịch "Không đến" so với tổng số lịch để biết nhắc lịch có tác dụng hay không. Công thức: =COUNTIF(H2:H,"Không đến")/COUNTA(A2:A). Giả sử tháng này là 12 trên 240 lịch, tức 5%. Số này chỉ có ý nghĩa khi bạn so với chính phòng khám của mình ở tháng trước, vì mỗi nơi một khác.
Nếu bạn muốn xem một bộ khung đầy đủ hơn cho cả bệnh nhân, đơn thuốc và kho, bài template Google Sheets quản lý phòng khám và bệnh viện nhỏ mô tả cách tổ chức các sheet đó.
Quy trình lễ tân tiếp nhận: từ cuộc gọi đến khi bệnh nhân ngồi vào ghế khám
Công thức chỉ chạy tốt khi mọi người nhập theo cùng một thói quen. Quy trình ngắn dưới đây đủ cho một quầy lễ tân:
- Nhận cuộc gọi, hỏi tên, số điện thoại, bác sĩ muốn khám và ngày giờ mong muốn.
- Nhập bác sĩ, ngày, giờ vào ô kiểm tra nhanh (L2 đến L5). Thấy "Đã có lịch" thì đề xuất slot kế tiếp, thấy "Còn trống" thì đi tiếp.
- Thêm một dòng mới vào bảng với trạng thái "Chờ xác nhận". Nhìn lại cột I: nếu ra "OK" là xong.
- Chiều hôm trước, lọc cột J để gọi nhắc. Bệnh nhân đồng ý thì đổi sang "Đã xác nhận".
- Sáng hôm khám, bệnh nhân đến quầy thì đổi trạng thái thành "Đã đến". Quá giờ mà chưa thấy, gọi một lần rồi mới chuyển "Không đến".
Một điểm cần nói thẳng: bảng tính nhiều người cùng sửa sẽ có lúc hai người cùng nhập một slot trong cùng vài giây. Công thức sẽ đỏ lên sau đó, nhưng không ngăn được. Cách giảm rủi ro là chỉ cho một người (lễ tân) quyền sửa cột A đến H, còn bác sĩ chỉ xem. Vào Chia sẻ để đặt vai trò "Người xem" cho bác sĩ, và dùng "Bảo vệ trang tính" cho các ô công thức ở cột I, J, M, N. Nếu phòng khám có hai quầy tiếp nhận cùng lúc, hãy cân nhắc điều này nghiêm túc.
Khi nào bảng tự làm hết đủ, khi nào nên chuyển sang phần mềm
Bảng lịch hẹn bên trên đủ cho phòng khám có một đến hai bác sĩ và một người nhập liệu. Điểm gãy thường đến khi bạn muốn nối lịch hẹn với phần còn lại: bệnh nhân vừa đến thì phải mở hồ sơ, ghi sinh hiệu, kê đơn, rồi kho thuốc tự trừ, cuối ngày xem doanh thu. Lúc đó bạn đang ghép năm sáu sheet bằng tay, và mỗi lần ghép là một chỗ có thể lệch.
Với nhu cầu đó, Phần Mềm Quản Lý Phòng Khám google sheet của SheetStore đã gói sẵn các phần trên. Lịch hẹn có chống trùng giờ theo từng bác sĩ, lọc theo ngày và trạng thái, và mở khám trực tiếp từ giao diện lịch mà không phải tìm lại hồ sơ. Phần còn lại gồm hồ sơ bệnh nhân với lịch sử khám, bệnh án điện tử ghi sinh hiệu và chẩn đoán theo ICD-10, kê đơn tự trừ kho thuốc kèm cảnh báo sắp hết hàng và thuốc hết hạn, báo cáo doanh thu, cùng ba vai trò Quản lý, Bác sĩ, Lễ tân với quyền truy cập riêng.

Phần mềm chạy trên Google Sheets và Apps Script trong chính tài khoản Google của bạn, dữ liệu nằm trong Google Drive của bạn, nên cần có tài khoản Google. Giá 499.000đ, mua một lần dùng trọn đời, không có phí hằng tháng, và có 7 ngày dùng thử. Phần mềm làm cho phòng khám tư nhân và bệnh viện nhỏ, không dành cho bệnh viện lớn nhiều khoa. Nếu phòng khám của bạn chỉ cần lịch hẹn thì bảng ở trên là đủ, đừng mua thêm.
Câu hỏi thường gặp
Công thức COUNTIFS chống trùng giờ báo lỗi thì xử lý thế nào?
Trước hết kiểm tra cột ngày và giờ có phải kiểu ngày giờ thật không. Ô bị căn trái, nằm sát mép thường đang là chữ, nên phép so sánh trả kết quả lạ. Nếu dán vào mà báo lỗi phân tích công thức, hãy thử đổi các dấu phẩy ngăn đối số thành dấu chấm phẩy (;), vì một số cài đặt vùng và ngôn ngữ của bảng tính yêu cầu như vậy.
Vì sao kết quả phải lớn hơn 1 mới là trùng giờ?
Vì dòng đang xét luôn tự đếm chính nó một lần. Ví dụ bác sĩ Khoa có lịch 08:00–08:20 và 08:15–08:35 cùng ngày: mỗi dòng đếm được chính nó và dòng kia, nên cả hai báo TRÙNG GIỜ. Riêng ô kiểm tra nhanh không nằm trong bảng nên so sánh với 0.
Làm sao biết slot còn trống trước khi hẹn với bệnh nhân đang gọi điện?
Làm một ô kiểm tra nhanh cạnh bảng. Lễ tân nhập bác sĩ, ngày, giờ bắt đầu, giờ kết thúc vào các ô L2 đến L5, ô L6 trả "Còn trống" hoặc "Đã có lịch". Công thức tô đỏ ở cột I chỉ báo sau khi đã nhập, không chặn được việc nhập, nên cần kiểm tra trước khi nói "dạ được ạ".
Nhiều người cùng sửa bảng lịch hẹn thì tránh trùng giờ bằng cách nào?
Hai người có thể cùng nhập một slot trong vài giây, công thức chỉ đỏ lên sau đó chứ không ngăn được. Để giảm rủi ro, chỉ cho lễ tân quyền sửa cột A đến H, đặt bác sĩ là "Người xem" trong Chia sẻ, và dùng "Bảo vệ trang tính" cho các ô công thức ở cột I, J, M, N.
Bài viết liên quan:
Bạn muốn áp dụng ngay mà không phải tự xây từ đầu?
Khám phá các mẫu Google Sheets và phần mềm quản lý dựng sẵn cho doanh nghiệp Việt tại SheetStore Marketplace.
Chia sẻ bài viết:
Tuân Hoang
Đội ngũ SheetStore
Google Workspace Certified, 5+ years experience
Công cụ liên quan
Giải pháp cho bài viết này
Bạn thấy bài viết hữu ích?
Đăng ký nhận thông báo khi có bài viết mới.
