Hướng dẫn

Theo Dõi Tồn Kho Thuốc và Hạn Dùng Phòng Khám Bằng Google Sheets

Tuân HoangTuân Hoang
7 tháng 10, 2026
13 phút đọc
Ảnh minh họa bài viết: Theo Dõi Tồn Kho Thuốc và Hạn Dùng Phòng Khám Bằng Google Sheets

Trả lời nhanh: Lập một bảng 7 cột (mã lô, tên, đơn vị, tồn, tồn tối thiểu, hạn dùng, trạng thái). Dùng công thức IF với TODAY() để báo thuốc sắp hết và gần hết hạn trong 60 ngày, tô màu có điều kiện, ghi mọi lần nhập – xuất vào một sổ riêng và kiểm kho mỗi tháng một vòng.

Thử hình dung một phòng khám tư nhỏ có hai bác sĩ, một lễ tân kiêm thu ngân và chừng 80 mặt hàng thuốc, vật tư. Sáng thứ Hai, bác sĩ mở tủ lấy "Thuốc A" thì hộp cuối cùng đã hết. Hôm trước lễ tân còn thấy trong tủ hai hộp, nhưng không ai ghi lại chúng đã đi đâu. Cuối tuần dọn tủ, người ta lại tìm thấy một hộp "Thuốc B" đã quá hạn nằm sau cùng, bị đẩy vào góc từ lúc nào không rõ. Hai chuyện này thoạt nhìn không liên quan, nhưng cùng một gốc: không có chỗ nào cho biết tồn bao nhiêu, hạn đến đâu, và ai đã lấy.

Bài này đi từng bước để dựng chỗ đó trên Google Sheets. Số liệu trong bài đều là giả định để minh họa, tên thuốc dùng "Thuốc A/B/C" cho gọn. Bài chỉ nói về quản lý số lượng và hạn dùng trên bảng tính, không bàn chuyên môn y dược hay quy định quản lý thuốc. Phần đó bạn cần hỏi cơ quan chức năng hoặc người có chuyên môn.

Vì sao sổ giấy và trí nhớ không đủ cho tủ thuốc

Kho thuốc phòng khám khác kho hàng tạp hóa ở một điểm: hàng có hạn dùng, và cùng một loại thuốc thường nằm trong nhiều lô với hạn khác nhau. Đếm tổng số hộp là chưa đủ. Bạn cần biết trong 20 hộp đó, bao nhiêu hộp thuộc lô sắp hết hạn để dùng trước.

Sổ giấy thường hỏng ở ba chỗ. Thứ nhất, người ghi sổ và người lấy thuốc là hai người khác nhau, nên có lần lấy mà quên ghi. Thứ hai, không ai ngồi cộng trừ mỗi ngày, nên con số tồn trong sổ chỉ đúng vào ngày kiểm gần nhất. Thứ ba, hạn dùng nằm trên vỏ hộp chứ không nằm trong sổ, nên chỉ khi nào có người nhớ lật hộp ra xem mới biết.

Google Sheets không tự biết bạn lấy thuốc, nhưng nó giải quyết được phần còn lại. Nó tự cộng trừ, tự so ngày hôm nay với hạn dùng và tự tô đỏ dòng có vấn đề. Việc của con người chỉ còn một: ghi mỗi lần nhập, mỗi lần xuất.

Dựng bảng danh mục thuốc, mỗi dòng một lô

Mở một file Google Sheets mới, đặt tên tab đầu tiên là DanhMuc. Điểm quan trọng nhất: mỗi dòng là một lô, không phải một loại thuốc. Nếu Thuốc A có hai lô hạn khác nhau, nó chiếm hai dòng. Cách này hơi dài hơn lúc đầu, nhưng bù lại không bao giờ lẫn hạn dùng của lô này sang lô kia.

Dòng 1 là tiêu đề, dữ liệu bắt đầu từ dòng 2:

  • Cột A: mã lô (ví dụ TA-01 cho Thuốc A lô 1, TA-02 cho lô 2)
  • Cột B: tên thuốc hoặc vật tư
  • Cột C: đơn vị (hộp, vỉ, chai, cái)
  • Cột D: số lượng tồn
  • Cột E: tồn tối thiểu, tức mức mà tồn chạm tới thì phải đặt hàng
  • Cột F: hạn dùng, nhập dạng ngày (nhớ chọn Định dạng → Số → Ngày)
  • Cột G: trạng thái, do công thức tự điền

Ở ô J1 gõ số 60, đây là ngưỡng cảnh báo "gần hết hạn" tính theo ngày. Để ngưỡng ở một ô riêng thì sau này muốn đổi thành 45 hay 90 ngày chỉ cần sửa một chỗ, không phải sửa công thức ở từng dòng.

Giả sử bảng có ba dòng đầu như sau:

Mã lôTênĐơn vịTồnTối thiểuHạn dùng
TA-01Thuốc AHộp122015/12/2026
TA-02Thuốc AHộp402030/06/2027
TB-01Thuốc BVỉ351010/10/2026

Một chi tiết nhỏ mà nhiều người bỏ qua: "tồn tối thiểu" nên tính theo từng loại thuốc, không theo từng lô. Ở bảng trên, hai dòng Thuốc A cùng ghi 20 nhưng thực ra mức cần giữ là 20 hộp cho cả hai lô gộp lại. Phần cuối của bài sẽ có cách gộp tồn theo tên thuốc để cảnh báo đúng.

Công thức cảnh báo sắp hết hàng và gần hết hạn

Ô G2 sẽ cho biết dòng này đang ở tình trạng nào. Thứ tự ưu tiên là hết hạn, rồi gần hết hạn, rồi sắp hết hàng, vì thuốc đã quá hạn thì dù tồn nhiều cũng không dùng được. Dán công thức sau vào G2:

=IF(A2="","",IF(AND(F2<>"",F2<TODAY()),"Đã hết hạn",IF(AND(F2<>"",F2-TODAY()<=$J$1),"Gần hết hạn",IF(D2<=E2,"Sắp hết","Ổn"))))

Đọc từ trong ra ngoài: nếu ô A trống thì để trống (dòng chưa dùng). Nếu có hạn dùng và hạn nhỏ hơn hôm nay thì "Đã hết hạn". Nếu số ngày còn lại nhỏ hơn hoặc bằng giá trị ở J1 thì "Gần hết hạn". Nếu tồn nhỏ hơn hoặc bằng tồn tối thiểu thì "Sắp hết". Còn lại là "Ổn". Kéo công thức xuống hết cột G, hoặc bọc bằng ARRAYFORMULA nếu muốn tự áp cho dòng mới.

Với ba dòng ví dụ và giả sử hôm nay là 07/10/2026:

  • TA-01: hạn 15/12/2026, còn 69 ngày, vượt ngưỡng 60. Tồn 12 nhỏ hơn mức 20 nên hiện "Sắp hết".
  • TA-02: hạn xa, tồn 40 nên hiện "Ổn".
  • TB-01: hạn 10/10/2026, chỉ còn 3 ngày nên hiện "Gần hết hạn", dù tồn 35 đang rất dư.

Dòng cuối là ví dụ đáng nhìn nhất. Chỉ nhìn số tồn thì Thuốc B trông yên tâm, nhưng thực tế 35 vỉ đó cần dùng hoặc xử lý ngay trong vài ngày. Cột trạng thái bắt được chuyện mà mắt người hay bỏ sót.

Muốn có con số tổng quan để dán lên đầu bảng, dùng hai công thức đếm:

=COUNTIF(G2:G200,"Gần hết hạn")
=COUNTIF(G2:G200,"Đã hết hạn")

Mở file vào đầu ngày, nếu hai ô này khác 0 thì có việc phải làm trước khi tiếp bệnh nhân đầu tiên.

Kết quả công thức cảnh báo ở cột G cho ba lô thuốc vào ngày 07/10/2026
Thuốc B tồn 35 vẫn bị báo gần hết hạn vì chỉ còn 3 ngày.

Tô màu có điều kiện để dòng có vấn đề tự nổi lên

Chữ "Gần hết hạn" nằm trong một cột giữa 200 dòng thì vẫn dễ lọt mắt. Cho cả dòng đổi màu thì khác hẳn. Chọn vùng A2:G200, vào Định dạng → Định dạng có điều kiện, chọn "Công thức tùy chỉnh" và thêm ba quy tắc, theo thứ tự từ trên xuống:

  • Nền đỏ nhạt khi =$G2="Đã hết hạn"
  • Nền cam khi =$G2="Gần hết hạn"
  • Nền vàng khi =$G2="Sắp hết"

Dấu $ trước chữ G giữ nguyên cột G và để dòng chạy theo từng hàng, nhờ vậy cả dòng đổi màu chứ không riêng ô trạng thái. Nếu quy tắc không ăn, kiểm tra ngay chữ trong công thức có khớp từng dấu với chữ công thức G2 trả ra không, vì chữ "Sắp hết" và "Sap het" là hai chuỗi khác nhau.

Để ý một điều nhỏ: bảng nhiều màu quá thì không ai nhìn nữa. Ba màu là đủ, và nếu hôm nào cả bảng đỏ cam lẫn lộn thì đó là dấu hiệu cần ngồi lại sắp xếp, chứ không phải lỗi của bảng.

Sổ nhập – xuất để số tồn không còn do người gõ tay

Nếu cột D (tồn) do người ta tự gõ số mới mỗi lần lấy thuốc, sớm muộn có người gõ nhầm hoặc quên. Cách bền hơn là tách ra một tab thứ hai tên NhapXuat chỉ để ghi giao dịch, còn số tồn do công thức tính. Tab này có các cột:

  • A: ngày
  • B: mã lô (phải trùng đúng với cột A của tab DanhMuc)
  • C: loại, chỉ gõ "Nhập" hoặc "Xuất" (tạo danh sách thả xuống bằng Dữ liệu → Xác thực dữ liệu để không ai gõ sai chữ)
  • D: số lượng
  • E: người ghi, để sau này biết hỏi ai khi số liệu lệch

Rồi ở tab DanhMuc, ô D2 đổi từ số gõ tay thành công thức:

=SUMIFS(NhapXuat!D:D,NhapXuat!B:B,A2,NhapXuat!C:C,"Nhập")-SUMIFS(NhapXuat!D:D,NhapXuat!B:B,A2,NhapXuat!C:C,"Xuất")

Công thức lấy tổng số lượng "Nhập" của mã lô ở A2 rồi trừ đi tổng "Xuất" của cùng mã đó. Kéo xuống các dòng dưới. Từ giờ muốn biết tồn thì không cần ai tính, chỉ cần mọi lần vào ra kho đều có một dòng trong NhapXuat.

Quy trình thực tế cho phòng khám nhỏ có thể gói trong ba thói quen:

  1. Nhập hàng: khi hàng về, người nhận mở sổ, ghi một dòng "Nhập" cho từng lô kèm số lượng. Nếu là lô mới, thêm một dòng ở DanhMuc với hạn dùng ghi trên hộp. Đây là thời điểm duy nhất cần đọc hạn trên vỏ.
  2. Xuất kho: cuối mỗi buổi khám, người phụ trách tủ ghi các lần lấy trong buổi. Ghi theo buổi chứ không theo từng lượt thì ít bị bỏ sót hơn là hứa "lát ghi".
  3. Lấy theo hạn: khi lấy, ưu tiên lô có hạn gần hơn. Bảng đã tô màu cam nên người lấy biết lô nào cần ra trước.

Hạn chế thật của cách này cần nói thẳng. Nó chỉ đúng khi mọi người nhớ ghi. Một phòng khám mà bác sĩ kê đơn ở nơi này, còn lễ tân phát thuốc rồi ghi sổ ở nơi khác thì kiểu gì cũng có độ trễ. Đây cũng là chỗ bảng tính thủ công chạm giới hạn, mà phần cuối bài sẽ nói tới.

Kiểm kho định kỳ: đếm thật và đối chiếu với sổ

Dù sổ có chạy đúng đến đâu, số trong máy và số trên kệ vẫn lệch theo thời gian: rơi vỡ, đổ nhầm, ghi nhầm mã. Kiểm kho là cách phát hiện sớm. Nhưng nếu cả phòng khám đóng cửa một ngày để đếm hết 80 mặt hàng thì chẳng ai làm đều được.

Cách nhẹ hơn: chia các mặt hàng thành 4 nhóm theo vị trí tủ hoặc theo loại, mỗi tuần đếm một nhóm. Hết 4 tuần thì xong một vòng, nghĩa là mỗi tháng mọi mặt hàng được đếm đúng một lần, và mỗi lần chỉ tốn chừng 20 phút. Thêm hai cột vào tab DanhMuc:

  • Cột H: số đếm thực tế (người đếm gõ vào)
  • Cột I: chênh lệch, công thức =IF(H2="","",H2-D2)

Giả sử đếm Thuốc A lô 1, sổ ghi 12 hộp nhưng trên kệ chỉ có 9, chênh lệch là -3. Việc đầu tiên không phải là trách ai, mà là lật lại NhapXuat xem có lần xuất nào chưa được ghi trong tuần đó không. Nếu tìm ra thì bổ sung dòng ghi còn thiếu. Nếu không tìm ra thì ghi một dòng "Xuất" kèm ghi chú "điều chỉnh sau kiểm kho" để số tồn khớp thực tế, và chỗ lệch vẫn còn dấu vết để xem lại sau. Đừng sửa thẳng ô D vì như vậy là xóa mất bằng chứng.

Tới lúc đếm cũng là lúc tiện nhất để lật hộp kiểm tra hạn dùng thật, đối chiếu với cột F. Nếu ngày trên bảng và trên hộp lệch nhau thì sửa ngay.

Nếu bạn muốn một khuôn có sẵn thay vì tự dựng từ đầu, kho template Google Sheets của SheetStore có hai mẫu khá sát: Quản Lý Hàng Tồn Kho Theo Lô & HSD và Kiểm Kê Hàng Hóa Định Kỳ. Cả hai là template tổng quát cho hàng hóa, bạn cần đổi tên cột cho hợp với tủ thuốc của mình.

Gộp tồn theo tên thuốc để cảnh báo đúng mức đặt hàng

Quay lại chuyện Thuốc A có hai lô. Ở bảng ví dụ, TA-01 còn 12 hộp (nhỏ hơn mức 20) nên công thức G đánh "Sắp hết", trong khi lô TA-02 còn 40 hộp. Gộp lại, Thuốc A có 52 hộp, hoàn toàn chưa cần đặt. Cảnh báo kiểu này sẽ làm người dùng quen dần với việc phớt lờ chữ vàng.

Cách xử lý đơn giản: thêm một tab TongHop, cột A liệt kê tên thuốc không trùng lặp, và ở B2 tính tổng tồn theo tên:

=SUMIFS(DanhMuc!D:D,DanhMuc!B:B,A2)

Cột C nhập mức tồn tối thiểu cho cả loại, còn D2 đặt công thức =IF(B2<=C2,"Cần đặt hàng","Ổn"). Cách này vẫn giữ cảnh báo hạn dùng ở từng lô trong DanhMuc, còn quyết định đặt hàng thì dựa vào tổng theo loại. Bạn có thể bỏ phần "Sắp hết" ra khỏi công thức G ở DanhMuc nếu thấy hai nơi cùng báo là thừa.

Về hạn chế: những công thức này chỉ đúng khi mã lô được đặt theo cùng một quy ước. Chỉ cần một người đánh mã khác kiểu (ví dụ "TA 01" thay vì "TA-01"), SUMIFS sẽ coi là lô khác và số tồn lệch. Khi dự định mở rộng cho nhiều người cùng ghi, hãy dùng danh sách thả xuống cho cột mã lô.

Khi nào bảng tính tay là đủ, khi nào nên dùng phần mềm

Với một phòng khám nhỏ, vài chục mặt hàng và một đến hai người ghi sổ, bộ bảng ở trên hoàn toàn đủ dùng và bạn chỉ tốn một buổi tối để dựng. Điểm yếu lộ ra khi việc ghi xuất kho phụ thuộc vào trí nhớ của người ghi, vì mỗi toa thuốc bác sĩ kê là một lần xuất mà ai đó phải nhập lại bằng tay vào NhapXuat.

Phần Mềm Quản Lý Phòng Khám của SheetStore là file Google Sheets cộng Apps Script chạy trong tài khoản Google của chính bạn, dữ liệu nằm trong Google Drive của bạn. Phần kho thuốc theo dõi tồn kho real-time, có nhập hàng, xuất hàng, cảnh báo sắp hết hàng và cảnh báo thuốc gần hoặc đã hết hạn sử dụng, tức là cùng loại cảnh báo bạn vừa tự dựng ở trên. Điểm khác là bác sĩ kê đơn ngay trong hồ sơ khám thì hệ thống tự trừ số lượng khỏi kho, nên không còn bước ghi xuất bằng tay. Ngoài kho thuốc còn có lịch hẹn, hồ sơ bệnh nhân, bệnh án điện tử và báo cáo doanh thu.

Giao diện thực tế của Phần Mềm Quản Lý Phòng Khám google sheet — Dashboard tổng quan
Giao diện thực tế của Phần Mềm Quản Lý Phòng Khám google sheet

Giá 499.000đ, mua một lần dùng trọn đời, không phí hằng tháng, và có thể dùng thử 7 ngày. Phần mềm làm cho phòng khám tư nhân và bệnh viện nhỏ, nên nếu bạn quản lý bệnh viện lớn nhiều khoa thì nó không phải lựa chọn phù hợp. Nếu bạn chưa chắc cần đến mức đó, cứ chạy bảng tự dựng vài tháng. Khi thấy khâu ghi xuất kho thành điểm nghẽn thì đó là lúc cân nhắc.

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

Vì sao mỗi dòng trong bảng phải là một lô chứ không phải một loại thuốc?

Cùng một loại thuốc có thể nằm trong nhiều lô với hạn dùng khác nhau. Nếu Thuốc A có hai lô thì chiếm hai dòng, ví dụ TA-01 và TA-02. Cách này dài hơn lúc đầu nhưng không bao giờ lẫn hạn dùng của lô này sang lô kia, và bạn biết được bao nhiêu hộp thuộc lô sắp hết hạn để dùng trước.

Công thức cảnh báo ưu tiên trường hợp nào trước?

Thứ tự là hết hạn, rồi gần hết hạn, rồi sắp hết hàng. Lý do là thuốc đã quá hạn thì dù tồn nhiều cũng không dùng được. Ví dụ ngày 07/10/2026, lô TB-01 hạn 10/10/2026 còn 3 ngày nên báo "Gần hết hạn", dù tồn tới 35 vỉ. Ngưỡng 60 ngày nằm ở ô J1, muốn đổi chỉ cần sửa một chỗ.

Số tồn kho trong bảng lệch với số đếm thực tế thì xử lý thế nào?

Đừng sửa thẳng ô D vì như vậy là xóa bằng chứng. Hãy lật lại tab NhapXuat xem có lần xuất nào chưa ghi không và bổ sung nếu có. Nếu không tìm ra, ghi một dòng "Xuất" kèm ghi chú "điều chỉnh sau kiểm kho" để số tồn khớp thực tế mà vẫn còn dấu vết để xem lại.

Khi nào nên chuyển từ bảng tính tự dựng sang phần mềm?

Với phòng khám nhỏ, vài chục mặt hàng và một đến hai người ghi sổ thì bảng tự dựng là đủ. Khi việc ghi xuất kho bằng tay thành điểm nghẽn, vì mỗi toa thuốc là một lần xuất phải nhập lại, hãy cân nhắc phần mềm tự trừ kho khi bác sĩ kê đơn. Bản của SheetStore giá 499.000đ, mua một lần, dùng thử 7 ngày.

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

Tuân Hoang

Đội ngũ SheetStore

Google SheetsGoogle Apps ScriptCRMAutomationPhần mềm quản lý doanh nghiệp

Google Workspace Certified, 5+ years experience

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.

Nhận thông báo khi có bài viết mới. Không spam, hứa luôn! 😊

Bình luận (0)

Vui lòng đăng nhập để tham gia thảo luận