Trong thế giới dữ liệu ngày nay, việc tạo ra danh sách số ngẫu nhiên mà không bị trùng lặp là một kỹ năng quan trọng, đặc biệt khi làm việc với Excel – công cụ phổ biến nhất trong các doanh nghiệp, trường học và cộng đồng nghiên cứu. Dù bạn đang thiết kế một bảng điều khiển, phân phối mã số kiểm tra, hay đơn giản chỉ muốn tạo một danh sách người dùng ngẫu nhiên trong một khảo sát, Excel luôn cung cấp nhiều công cụ mạnh mẽ để thực hiện điều này. Bài viết dưới đây sẽ dẫn dắt bạn qua các phương pháp khác nhau, từ công thức đơn giản đến VBA, để tạo ra số ngẫu nhiên không trùng nhau một cách hiệu quả nhất.
Có thể bạn quan tâm: Tạo Sheet Mới Giống Sheet Cũ Trong Excel
1. Tại sao cần số ngẫu nhiên không trùng nhau trong Excel?
Trước khi đi vào chi tiết công thức hay mã lệnh, hãy hiểu vì sao việc tránh trùng lặp lại quan trọng:
- Đảm bảo tính công bằng: Trong các cuộc trúng thưởng, cuộc khảo sát, hay thậm chí là phân bổ tài nguyên, mỗi người được chọn một lần duy nhất.
- Ngăn ngừa lỗi dữ liệu: Nếu dữ liệu lặp lại, các phân tích thống kê có thể sai lệch.
- T思 tính logic: Khi tạo danh sách随后, những số trùng lặp có thể gây nhầm lẫn khi theo dõi, ghi nhận, hoặc phân loại.
Vì những lý do này, Excel cung cấp nhiều công cụ để bạn có thể tạo số ngẫu nhiên mà không bị trùng lặp một cách dễ dàng.
Có thể bạn quan tâm: Tạo Phần Mềm Bán Hàng Bằng File Excel
2. Phương pháp 1: Sử dụng công thức RAND + RANK + INDEX
2.1. Các bước thực hiện
Giả sử bạn muốn tạo một danh sách 20 số ngẫu nhiên trong khoảng từ 1 đến 100, không trùng nhau.
- Tạo cột các số nguyên ngẫu nhiên
- Trong ô A2, nhập công thức:
excel =RANDBETWEEN(1, 100) - Kéo công thức xuống tới ô A21 (20 dòng).
Nếu bạn muốn tránh lặp trong cột A vì giá trị có thể trùng, hãy giải quyết trong bước tiếp theo.
Tính thứ tự (rank) của mỗi giá trị
- Trong ô B2, nhập công thức:
excel =RANK.EQ(A2, $A$2:$A$21, 0) - Kéo xuống tới B21. Công thức này xác định vị trí thứ của mỗi giá trị trong danh sách (độ lớn).
Nếu có trùng,
RANK.EQsẽ trả về cùng một thứ tự, vì vậy cần thực hiện bước bổ sung.Sắp xếp lại danh sách theo thứ tự tăng dần
- Chọn cột A và B, vào
Data>Sort. - Sắp xếp theo cột B (thứ tự).
Khi sắp xếp, các số trùng sẽ được đẩy sang cuối cùng theo thứ tự, nhưng vẫn cần xử lý.
Lấy ra danh sách duy nhất
- Trong ô C2, nhập công thức:
excel =IF(COUNTIF($C$1:C1, A2)=0, A2, "") - Kéo xuống C21. Công thức này kiểm tra nếu số đã xuất hiện trước đó chưa, nếu chưa thì giữ nguyên, nếu đã thì để trống.
2.2. Ưu điểm và hạn chế
- Ưu điểm: Dễ dàng thực hiện, không cần VBA.
- Hạn chế: Khi số lượng lớn, công thức trở nên phức tạp và tính toán chậm.
- Cải tiến: Sử dụng
UNIQUE(Excel 365) để lọc trùng ngay lập tức.
Có thể bạn quan tâm: Tạo Phím Tắt Paste Value Nhanh Chóng Trong Excel 2026
3. Phương pháp 2: Công thức UNIQUE + SORTBY
Nếu bạn đang sử dụng Excel 365 hoặc Excel 2026, hàm UNIQUE và SORTBY sẽ giúp bạn nhanh chóng lấy ra danh sách không trùng.
3.1. Công thức
- Trong ô A1, nhập công thức:
excel =SORTBY(UNIQUE(FILTER(RANDBETWEEN(1,100), RANDBETWEEN(1,100)<>"")), RANDBETWEEN(1,100)) RANDBETWEEN(1,100)tạo ra một mảng ngẫu nhiên.& correspondent
FILTER(..., condition)lọc dữ liệu, trong trường hợp này không thực sự cần vìitwa.UNIQUE(...)loại bỏ các giá trị trùng lặp.SORTBY(..., ...)sắp xếp ngẫu nhiên danh sách.Kéo công thức xuống số lượng bạn muốn. Nếu cần 20 số, bạn có thể đặt
ROWS()để giới hạn.
3.2. Lưu ý
- Hàm
RANDBETWEENsẽ cập nhật mọi khi bảng tính được tính toán lại. Nếu bạn muốn giữ nguyên giá trị, hãy sao chép và dán giá trị (Paste Values). UNIQUEchỉ hoạt động trên Excel 365 và phiên bản mới hơn.
4. Phương pháp 3: Sử dụng INDEX + MATCH để tránh trùng
Phương pháp này đặc biệt hữu ích khi bạn cần tạo danh sách ngẫu nhiên từ một danh sách đã có, ví dụ: danh sách mã số, tên người, hoặc mã sản phẩm.
4.1. Giả sử
Bạn có một danh sách mã số trong cột A từ A2 đến A101 (100 mã). Bạn muốn lấy ra 20 mã ngẫu nhiên mà không trùng lặp.
4.2. Công thức
- Bước 1: Tạo một mảng số ngẫu nhiên tương ứng với vị trí của mã số.
- Trong ô B2, nhập:
excel =RANK.EQ(RAND(), $RAND$1:$RAND$100) Kéo xuống B101.
Bước 2: Lấy ra các mã số dựa trên thứ tự ngẫu nhiên.
- Trong ô C2, nhập:
excel =INDEX($A$2:$A$101, MATCH(ROW(A1), $B$2:$B$101, 0)) - Kéo xuống C21.
4.3. Giải thích
RAND()tạo ra một số ngẫu nhiên trong khoảng 0-1.RANK.EQxác định thứ tự của số ngẫu nhiên trong danh sách, tạo ra một thứ tự ngẫu nhiên.INDEXlấy mã số tương ứng với thứ tự ngẫu nhiên.MATCHtìm vị trí thứ tự trong mảng thứ tự.
4.4. Ưu điểm
- Không cần sao chép dữ liệu gốc.
- Dễ dàngjim.
5. Phương pháp 4: Sử dụng Power Query để tạo danh sách ngẫu nhiên không trùng
Power Query là công cụ mạnh mẽ để làm việc với dữ liệu trong Excel. Bạn có thể dễ dàng tạo danh sách ngẫu nhiên mà không trùng lặp bằng cách sử dụng các bước M.
5.1. Bước 1: Tạo nguồn dữ liệu

Có thể bạn quan tâm: Tạo Slide Powerpoint Từ Dữ Liệu Trong Excel: Hướng Dẫn Chi Tiết, Từng Bước Và Mẹo Tối Ưu
- Mở Excel →
Data→Get Data→From Other Sources→Blank Query. - Vào
Advanced Editor, nhập đoạn mã sau:
let Source = List.Numbers(1, 100), // Tạo danh sách 1..100 RandomSort = List.Sort(Source, (x,y) => if Number.FromText(Text.Random()) > Number.FromText(Text.Random()) then 1 else -1), Result = RandomSort
in Result
- Nhấn
Done. Power Query sẽ mở bảng dữ liệu.
5.2. Bước 2: Chọn số lượng cần lấy
- Trong Power Query, vào
Add Column→Index Column→From 1. - Đặt tên cột
Index. - Chọn cột
Index, vàoFilter→Number Filters→Less Than or Equal To→ nhập20. - Nhấn
OK.
5.3. Bước 3: Gửi dữ liệu trở lại Excel
- Nhấn
Close & Load. Power Query sẽ tạo một sheet mới chứa 20 số ngẫu nhiên không trùng nhau.
5.4. Ưu điểm
- Không cần công thức phức tạp.
- Dễ dàng tái sử dụng và cập nhật nguồn dữ liệu.
- Power Query có thể xử lý dữ liệu lớn nhanh hơn.
6. Phương pháp 5: Sử dụng VBA để tạo số ngẫu nhiên không trùng
Nếu bạn làm việc thường xuyên với các danh sách lớn hoặc cần tự động hoá quy trình, VBA sẽ là công cụ tối ưu.
6.1. Mã VBA đơn giản
Sub GenerateUniqueRandomNumbers() Dim n As Long, count As Long Dim arr() As Variant Dim i As Long, j As Long, temp Asেজ n = 100 ' Tổng số có thể count = 20 ' Số lượng cần lấy ReDim arr(1 To n) For i = 1 To n arr(i) = i Next i ' Fisher-Yates shuffle Randomize For i = n To 2 Step -1 j = Int((i - 1 + 1) Rnd + 1) temp = arr(i) arr(i) = arr(j) arr(j) = temp Next i ' Ghi kết quả vào cột A For i = 1 To count Cells(i, 1).Value = arr(i) Next i
End Sub
6.2. Hướng dẫn sử dụng
- Mở
Alt + F11→Insert→Module. - Dán mã vào cửa sổ module.
- Đóng VBA và trở lại Excel.
- Vào
Developer→Macros, chọnGenerateUniqueRandomNumbers, nhấnRun. - Kết quả xuất hiện ở cột A từ A1 đến A20.
6.3. Lợi ích
- Nhanh: Đối với danh sách lớn, VBA làm việc nhanh hơn công thức.
- Tùy biến: Bạn có thể dễ dàng thay đổi phạm vi, số lượng, hoặc thêm các điều kiện.
- Tự động hoá: Gắn macro vào nút hoặc sự kiện tự động.
7. Các lưu ý khi tạo số ngẫu nhiên không trùng
(obj)
- Tính năngadres: Excel sẽ tự động tái tính khi bạn thay đổi ô, vì vậy các giá trị ngẫu nhiên có thểRipple. Đ يدل.
Giải pháp: Sử dụng
Paste Special > Valuesđể cố định giá trị.Ràng buộc phạm vi: Khi số lượng yêu cầu vượt quá phạm vi có sẵn, Excel sẽ báo lỗi.
- Nếu bạn cần 200 số trong khoảng 1-100, không thể thực hiện vì trцах.
Giải pháp: Tăng phạm vi hoặc dùng
UNIQUEkết hợp vớiSEQUENCE.Nhận dạng trùng lặp: Đối với các công thức phức tạp, hãy kiểm tra kỹ các bước để tránh lặp.
Ví dụ:
RANK.EQcó thể trả về cùng một thứ tự khi có trùng, do đó cần thêmUNIQUE.Hiệu suất: Khi làm việc với hàng nghìn dòng, công thức
RANKhoặcINDEXcó thể chậm.- Giải pháp: Sử dụng
Power QueryhoặcVBA.
8. Ứng dụng thực tế
8.1. Phân phối mã mã quà tặng
Bạn có một danh sách 500 mã mã quà tặng. Bạn muốn gửi 100 mã ngẫu nhiên cho 100 khách hàng mà không lặp.
– Giải pháp: Sử dụng VBA để Fisher-Yates shuffle, lấy 100 đầu tiên.
8.2. Lập bảng kiểm tra ngẫu nhiên
Trong kỳ thi, bạn muốn chọn ngẫu nhiên 10 câu hỏi từ 100 câu hỏi.
– Giải pháp: Dùng công thức INDEX + MATCH để lấy 10 câu ngẫu nhiên.
8.3. Đánh giá mẫu постепенно
Một công ty muốn lấy mẫu ngẫu nhiên 200 nhân viên từ 2000 nhân viên để khảo sát.
– Giải pháp: Power Query tạo danh sách 200 số từ 1..2000, sắp xếp ngẫu nhiên, lấy 200 đầu.
9. Tóm tắt và khuyến nghị
| Phương pháp | Ưu điểm | Thích hợp | Gợi ý |
|---|---|---|---|
Công thức RAND + RANK + INDEX | Dễ hiểu, không cần VBA | Dữ liệu nhỏ | Sử dụng UNIQUE nếu có Excel 365 |
UNIQUE + SORTBY | Thôngτομα, nhanh | Excel 365/2026 | Kéo lại giá trị nếu cần giữ cố định |
INDEX + MATCH | Dùng khi có danh sách nguồn | Lấy mẫu từ danh sách | Thêm IFERROR để tránh lỗi |
| Power Query | Xử lý dữ liệu lớn, tự động | Dữ liệu lớn, cần tái sử dụng | Đặt nguồn dữ liệu dynamic |
| VBA | Nhanh, tùy biến cao | Dữ liệu lớn, tự động hoá | Kiểm tra lỗi, bảo vệ macro |
Khuyến nghị
- Bắt đầu với công thức đơn giản: Nếu bạn mới bắt đầu, hãy dùngEsp.
- Cập nhật Excel: Nếu có thể, nâng cấp lên Excel 365 để tận dụng
UNIQUEvàSORTBY. - Sử dụng Power Query: Khi làm việc với dữ liệu lớn, Power Query sẽ tiết kiệm thời gian.
- Những trường hợp phức tạp: Khi cần tự động hoá hoặc tùy biến sâu, VBA là lựa chọn tối ưu.
10. Kết luận
Tạo số ngẫu nhiên không trùng nhau trong Excel không còn là một khái niệm phức tạp. Với một loạt công cụ từ công thức đơn giản, hàm mới trong Excel 365, Power Query, cho đến mã VBA, bạn có thể linh hoạt chọn phương pháp phù hợp với nhu cầu và môi trường làm việc vectors. Quan trọng nhất là hiểu rõ mục đích và phạm vi dữ liệu, từ đó chọn giải pháp tối ưu nhất để đảm bảo tính chính xác, công bằng và hiệu quả trong mọi tình huống.
Bằng cách áp dụng những kỹ thuật này, bạn sẽ nhanh chóng trở thành người có thể xử lý dữ liệu ngẫu nhiên một cách chuyên nghiệp, giúp công việcURRE trở nên logic và tin cậy hơn. Happy Excel!

Tiến sĩ Lê Thống Nhất sinh năm 1955 tại Nghệ An, là nhà giáo, nhà báo và doanh nhân trong lĩnh vực giáo dục. Ông từng giảng dạy Toán học tại Trường THPT Chuyên Phan Bội Châu và đảm nhiệm nhiều vai trò trong ngành giáo dục, từ viết sách, biên soạn tài liệu đến sáng lập các dự án hỗ trợ học tập trực tuyến.
Ông là người sáng lập BigSchool – nền tảng giáo dục trực tuyến kết nối giáo viên và học sinh cả nước. Ngoài ra, ông còn nổi tiếng với vai trò tác giả, diễn giả truyền cảm hứng và khách mời trên nhiều chương trình truyền hình, trong đó có “Ai là triệu phú” trên truyền hình VTV.
Trong suốt sự nghiệp, Tiến sĩ Lê Thống Nhất đã nhận nhiều giải thưởng giáo dục và được biết đến như một người luôn đổi mới, ứng dụng công nghệ vào dạy và học, góp phần lan tỏa tri thức và niềm say mê học tập cho thế hệ trẻ.
