Tạo một GUID bằng VBA trong Excel

Trong quá trình sử dụng Excel, sẽ có lúc bạn muốn tạo ra một cái tên, một địa chỉ duy nhất, địa chỉ này chỉ có một và không bao giờ lặp lại, địa chỉ này không chứa thông tin gì khác và chỉ nhằm mục đích phân biệt giữa các dòng trong Excel chẳng hạn. Làm thế nào để chúng ta có thể tạo ra 1 địa chỉ như vậy ở trong Excel?

Mỗi thời điểm đều là duy nhất, với suy nghĩ như vậy, ở trong Excel chúng ta có thể đơn giản dùng hàm sau đây để tạo thành 1 ID duy nhất:

="ID" & TEXT(NOW(),"yyyymmddhhmmss")

Ở đây, các bạn có thể tuỳ ý thay phần ID. Nhưng nếu dữ liệu của chúng ta được thêm vào nhanh hơn 1 giây đồng hồ, thì cách này sẽ không dùng được!

Cái chúng ta cần ở đây là GUIDGlobally Unique Identifier

Một GUID có dạng như sau:

3F2504E0-4F89-41D3-9A0C-0305E82C3301

hoặc

3F2504E04F8941D39A0C0305E82C3301

hoặc

{3F2504E0-4F89-41D3-9A0C-0305E82C3301}

Nếu ai hay nghịch Windows Registry chắc hẳn đã có lần nhìn thấy những dãy số tương tự như thế này rồi. Theo sách nói thì một GUID không hẳn sẽ là duy nhất, nhưng tỉ lệ có 2 GUID trùng nhau vào khoảng 1/2^122 – nếu bạn hiểu con số này nhỏ đến mức nào và tổng số GUID nhiều đến mức nào khi so sánh với việc trên 1 Excel Sheet phiên bản 2010 có khoảng 2^34 ô.

Tin vui là chúng ta hoàn toàn có thể tạo ra GUID trong Excel bằng 2 cách với 1 chút giúp đỡ của VBA như sau

Trong đoạn code trên, có 2 cách để tạo ra GUID là sử dụng hàm genGUID() và hàm CreateGUID(). Để cho các bạn dễ chọn lựa hàm nào khi sử dụng vào 1 project của các bạn thì mình đã thêm vào 1 benchmark nhỏ để đánh giá tốc độ của 2 hàm này. Nếu muốn biết kết quả benchmark và xem hàm nào phù hợp hơn cho nhu cầu của bạn, xin hay download file Excel này về.

Lưu ý: môi trường chạy benchmark là Excel 2010.

Download File Excel

Download ở link này

Có thể bạn cũng quan tâm

VBA101 – VBA cơ bản dành cho người mới bắt đầu