Menu

App script quản lý rủi ro cho cá nhân & doanh nghiệp với báo cáo chuẩn định dạng biểu đồ

Chia sẻ cách tự động tạo mã đơn hàng duy nhất trong Google Sheets

Võ Năng Phúc 02/04/2026 21:50 293 lượt xem 3 trả lời

Chào mọi người,

Dạo gần đây mình có làm một dự án nhỏ cần quản lý đơn hàng và gặp một vấn đề khá hay: làm sao để tự động tạo mã đơn hàng duy nhất cho mỗi lần nhập liệu mới, mà không bị trùng lặp?

Ban đầu mình định dùng Apps Script, nhưng sau khi tìm hiểu thì thấy có một cách dùng công thức Google Sheets cũng rất hiệu quả và đơn giản hơn nhiều. Mình muốn chia sẻ lại cho anh em nào đang gặp tình huống tương tự.

Ý tưởng là mình sẽ kết hợp ngày tháng hiện tại với một số thứ tự tăng dần. Ví dụ, nếu hôm nay là ngày 25/10/2023, mã đơn hàng có thể có dạng 20231025-001, 20231025-002, v.v.

Công thức mình dùng như sau:

=TEXT(TODAY(), "yyyymmdd") & "-" & TEXT(COUNTIF(A:A, TEXT(TODAY(), "yyyymmdd") & "*") + 1, "000")

Trong đó:

  • A:A là cột chứa mã đơn hàng bạn muốn tạo.
  • TEXT(TODAY(), "yyyymmdd") sẽ lấy ngày hiện tại và định dạng thành dạng YYYYMMDD.
  • COUNTIF(A:A, TEXT(TODAY(), "yyyymmdd") & "*") + 1 sẽ đếm xem trong cột A đã có bao nhiêu mã bắt đầu bằng ngày hôm nay, rồi cộng thêm 1 để ra số thứ tự tiếp theo.
  • TEXT(..., "000") định dạng số thứ tự đó thành 3 chữ số (ví dụ: 001, 002, ..., 010, ...).

Các bạn chỉ cần dán công thức này vào ô đầu tiên của cột mã đơn hàng (ví dụ ô A2) và kéo xuống hoặc để trống ô bên cạnh, khi nhập liệu vào ô đó, công thức ở cột mã đơn sẽ tự động cập nhật.

Cách này khá tiện vì nó đảm bảo mã đơn hàng luôn duy nhất trong ngày, lại không cần can thiệp thủ công. Anh em nào có cách nào hay hơn hoặc gặp vấn đề gì thì cùng thảo luận nhé!

4

Cái này hay nè! Mình cũng hay làm báo cáo cần mã duy nhất, thường thì mình hay dùng hàm ROW() kết hợp với một ký tự cố định. Ví dụ, nếu ngày tháng là 20231027 thì mình sẽ làm ="DH-"&TEXT(TODAY(),"yyyymmdd")&"-"&TEXT(ROW()-ROW(A$2)+1,"000"). Cách của bạn dùng thế nào vậy, có thể chia sẻ chi tiết hơn không?

4

Ồ, cảm ơn bạn đã chia sẻ cách làm với ROW() nhé! Cách đó cũng rất hay và hiệu quả đấy.

Với mình thì mình hay dùng kết hợp hàm UNIQUECOUNTA một chút. Ví dụ thế này:

="DH-"&TEXT(TODAY(),"yyyymmdd")&"-"&TEXT(COUNTA(A$2:A),"000")

Trong đó cột A là cột chứa mã đơn hàng bạn muốn tạo.

Ưu điểm của cách này là nó tự động đếm số lượng đơn hàng đã có trong cột, nên đảm bảo mã luôn tăng dần và không bị trùng. Nếu bạn nhập liệu không theo thứ tự, nó vẫn hoạt động tốt.

Bạn thấy cách này thế nào? Có vẻ cũng khá gọn gàng nhỉ?

2

Cách của bạn dùng COUNTA cũng rất thông minh và gọn gàng đó! Mình thích ý tưởng đếm số lượng đơn hàng hiện có để tạo mã tăng dần.

Mình cũng có một cách khác, dùng kết hợp hàm ARRAYFORMULA, IFERRORROW để tự động tạo mã cho cả cột luôn. Ví dụ:

="DH-"&TEXT(TODAY(),"yyyymmdd")&"-"&TEXT(ARRAYFORMULA(IFERROR(ROW(A2:A)-ROW(A2)+1)),"000")

Cách này sẽ tạo mã cho tất cả các dòng trống trong cột A một cách tự động. Bạn thử xem sao, có vẻ cũng tiện lợi cho việc nhập liệu hàng loạt.

3

Bạn cần đăng nhập để trả lời chủ đề này.

Đăng nhập Đăng ký