Tạo Số Ngẫu Nhiên Không Trùng Nhau Trong Excel: Hướng Dẫn Chi Tiết

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.

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.

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.

  1. Tạo cột các số nguyên ngẫu nhiên
  2. Trong ô A2, nhập công thức:
    excel =RANDBETWEEN(1, 100)
  3. Kéo công thức xuống tới ô A21 (20 dòng).
  4. 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.

  5. Tính thứ tự (rank) của mỗi giá trị

  6. Trong ô B2, nhập công thức:
    excel =RANK.EQ(A2, $A$2:$A$21, 0)
  7. 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).
  8. Nếu có trùng, RANK.EQ sẽ trả về cùng một thứ tự, vì vậy cần thực hiện bước bổ sung.

  9. Sắp xếp lại danh sách theo thứ tự tăng dần

  10. Chọn cột A và B, vào Data > Sort.
  11. Sắp xếp theo cột B (thứ tự).
  12. 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ý.

  13. Lấy ra danh sách duy nhất

  14. Trong ô C2, nhập công thức:
    excel =IF(COUNTIF($C$1:C1, A2)=0, A2, "")
  15. 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.

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

  1. Trong ô A1, nhập công thức:
    excel =SORTBY(UNIQUE(FILTER(RANDBETWEEN(1,100), RANDBETWEEN(1,100)<>"")), RANDBETWEEN(1,100))
  2. RANDBETWEEN(1,100) tạo ra một mảng ngẫu nhiên.

     & correspondent

  3. FILTER(..., condition) lọc dữ liệu, trong trường hợp này không thực sự cần vì itwa.

  4. UNIQUE(...) loại bỏ các giá trị trùng lặp.

  5. SORTBY(..., ...) sắp xếp ngẫu nhiên danh sách.

  6. 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 RANDBETWEEN sẽ 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).
  • UNIQUE chỉ 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

  1. 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ố.
  2. Trong ô B2, nhập:
    excel =RANK.EQ(RAND(), $RAND$1:$RAND$100)
  3. Kéo xuống B101.

  4. Bước 2: Lấy ra các mã số dựa trên thứ tự ngẫu nhiên.

  5. Trong ô C2, nhập:
    excel =INDEX($A$2:$A$101, MATCH(ROW(A1), $B$2:$B$101, 0))
  6. 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.EQ xá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.
  • INDEX lấy mã số tương ứng với thứ tự ngẫu nhiên.
  • MATCH tì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

Tạo Số Ngẫu Nhiên Không Trùng Nhau Excel
Tạo Số Ngẫu Nhiên Không Trùng Nhau Excel
  • 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ào Filter → Number Filters → Less Than or Equal To → nhập 20.
  • 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

  1. Mở Alt + F11 → Insert → Module.
  2. Dán mã vào cửa sổ module.
  3. Đóng VBA và trở lại Excel.
  4. Vào Developer → Macros, chọn GenerateUniqueRandomNumbers, nhấn Run.
  5. 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)

  1. 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. Đ يدل.
  2. Giải pháp: Sử dụng Paste Special > Values để cố định giá trị.

  3. 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.

  4. Nếu bạn cần 200 số trong khoảng 1-100, không thể thực hiện vì trцах.
  5. Giải pháp: Tăng phạm vi hoặc dùng UNIQUE kết hợp với SEQUENCE.

  6. 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.

  7. Ví dụ: RANK.EQ có thể trả về cùng một thứ tự khi có trùng, do đó cần thêm UNIQUE.

  8. Hiệu suất: Khi làm việc với hàng nghìn dòng, công thức RANK hoặc INDEX có thể chậm.

  9. Giải pháp: Sử dụng Power Query hoặc VBA.

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ểmThích hợpGợi ý
Công thức RAND + RANK + INDEXDễ hiểu, không cần VBADữ liệu nhỏSử dụng UNIQUE nếu có Excel 365
UNIQUE + SORTBYThôngτομα, nhanhExcel 365/2026Kéo lại giá trị nếu cần giữ cố định
INDEX + MATCHDùng khi có danh sách nguồnLấy mẫu từ danh sáchThêm IFERROR để tránh lỗi
Power QueryXử lý dữ liệu lớn, tự độngDữ liệu lớn, cần tái sử dụngĐặt nguồn dữ liệu dynamic
VBANhanh, tùy biến caoDữ 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 UNIQUE và 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!

⚠️
LƯU Ý QUAN TRỌNG: Miễn trừ trách nhiệm: Mặc dù chúng tôi luôn nỗ lực để đảm bảo tính chính xác và cập nhật của thông tin, nhưng các quy định về giáo dục và tuyển sinh có thể thay đổi theo thời gian. BigSchool không chịu trách nhiệm về bất kỳ sai sót nào hoặc kết quả phát sinh từ việc sử dụng thông tin trên trang này. Độc giả nên liên hệ trực tiếp với nhà trường hoặc cơ quan chức năng để có thông tin mới nhất. Ngoài ra, BigSchool tuyệt đối không bán sản phẩm, khóa học hay cung cấp dịch vụ được nhắc đến trong bài.

Viết một bình luận