Nhiệm vụ phổ biến của nhiều người là chọn một số tên ngẫu nhiên từ một danh sách lớn. Ví dụ: bạn có thể đang tổ chức một cuộc thi cho cộng đồng của mình và bạn có 1.000 người đã tham gia. Với tên của họ trong mỗi hàng của bảng, bạn có thể tự hỏi làm thế nào để chọn ngẫu nhiên một số tên nhất định.

Như thường lệ với Excel, bạn có thể thực hiện một số cách tiếp cận khác nhau. Mỗi cách tiếp cận được kiểm tra trong mẹo này giả định rằng các tên bạn cần chọn được liệt kê trong các ô từ A1 đến A1000.

Tất nhiên, phạm vi tên của bạn có thể ngắn hơn hoặc dài hơn, nhưng điểm mấu chốt là chúng nằm trong các ô liền nhau trong cột A. Các ví dụ cũng giả định rằng bạn cần chọn ngẫu nhiên 15 tên từ danh sách.

Cách tiếp cận đầu tiên là sử dụng hàm INDEX. Nhập công thức sau vào ô B1: B15:

=INDEX(A:A,INT((RAND()*1000)+1),1)

Một công thức tương tự sử dụng hàm OFFSET:

=OFFSET($A$1,ROUNDUP(RAND()*1000,0),0,1,1)

Có thể, nhưng không có khả năng xảy ra, bạn sẽ nhận được cùng một tên hai lần trong danh sách kết quả. (Khả năng không xảy ra do kích thước của danh sách gốc. Danh sách càng lớn thì khả năng trùng lặp trong danh sách trích xuất càng ít.) Nếu bạn nhận được tên trùng lặp, thì chỉ cần buộc tính toán lại trang tính của bạn bằng cách nhấn F9 . Mỗi lần bạn tính toán lại, danh sách các tên đã trích xuất sẽ được tạo lại.

Một cách tiếp cận tiềm năng khác yêu cầu sử dụng nhiều cột. Đơn giản chỉ cần làm theo các bước sau:

  1. Nhập = RAND () vào ô B1.

  2. Nhập công thức sau vào ô C1:

  3. Chọn dải ô B1: C1 và điền vào hàng 1000.

  4. Chọn phạm vi B1: C1000.

  5. Nhấn Ctrl + C để sao chép phạm vi vào Bảng tạm.

  6. Hiển thị tab Trang đầu của dải băng.

  7. Bấm vào mũi tên xuống dưới công cụ Dán rồi chọn Dán Đặc biệt. Excel sẽ hiển thị hộp thoại Dán Đặc biệt. (Xem Hình 1.)

  8. Đảm bảo rằng nút radio Giá trị được chọn.

  9. Nhấp vào OK. Bây giờ bạn có các giá trị tĩnh trong B1: C1000, có nghĩa là chúng sẽ không thay đổi mỗi khi trang tính được tính toán lại.

  10. Chọn một ô trong cột C.

  11. Hiển thị tab Dữ liệu của dải băng.

  12. Nhấp vào công cụ Sắp xếp. Excel sẽ hiển thị hộp thoại Sắp xếp. (Xem Hình 2.)

  13. Nhấp vào OK. Bảng (phạm vi A1: C1000) được sắp xếp theo các giá trị trong cột C.

Kết quả là cột C bây giờ chứa xếp hạng của tất cả các số ngẫu nhiên trong cột B. 15 hàng đầu tiên chứa tên ngẫu nhiên của bạn.

Trong cách tiếp cận này, bạn cũng có thể loại bỏ hoàn toàn cột C và chỉ cần sắp xếp danh sách của bạn dựa trên các giá trị ngẫu nhiên tĩnh trong cột B.

Một lần nữa, top 15 sẽ là tên ngẫu nhiên của bạn.

Tất nhiên, có bất kỳ giải pháp vĩ mô nào bạn có thể sử dụng cho vấn đề này. Mã hóa của bất kỳ macro nào cũng sẽ tương tự, dựa vào hàm RND của VBA để tạo ra các số ngẫu nhiên. Trong số tất cả các giải pháp vĩ mô có thể có, có lẽ giải pháp sau đây là giải pháp độc đáo nhất và cung cấp một số lợi thế không có sẵn với các giải pháp sổ làm việc đã thảo luận cho đến nay:

Sub GetRandom()

Dim TempDO As Variant     Dim iRows As Integer     Dim iCols As Integer     Dim iBegRow As Integer     Dim iBegCol As Integer     Dim sCells As String     Dim J As Integer     Dim iWantRow As Integer

Set TempDO = New DataObject

iRows = Selection.Rows.Count     iCols = Selection.Columns.Count     iBegRow = Selection.Row     iBegCol = Selection.Column

If iRows < 16 Or iCols > 1 Then         MsgBox "Too few rows or too many columns"

Else         Randomize Timer         sCells = ""

For J = 1 To 15             iWantRow = Int(Rnd() * iRows) + iBegRow             sCells = sCells & Cells(iWantRow, iBegCol) & vbCrLf         Next J         TempDO.SetText sCells         TempDO.PutInClipboard     End If End Sub

Bạn nên lưu ý rằng macro này xác định — ngay sau khi các biến được khai báo — một DataObject mới và gán nó cho biến TempDO. Nếu macro ném bom vào dòng mã này, điều đó đơn giản có nghĩa là bạn cần yêu cầu VBA tham khảo thư viện thích hợp:

  1. Trong VBA Editor, chọn Tham chiếu từ menu Công cụ. VBA hiển thị hộp thoại Tham chiếu. (Xem Hình 3.)

  2. Cuộn qua danh sách các tài liệu tham khảo cho đến khi bạn thấy một tài liệu được gọi là Thư viện Đối tượng Biểu mẫu của Microsoft. (Có thể có một số phiên bản được bao gồm trong tên tham chiếu, chẳng hạn như Thư viện đối tượng Microsoft Forms 2.0.)

  3. Đảm bảo rằng hộp kiểm bên trái của thư viện đối tượng được chọn.

  4. Nhấp vào OK.

Để sử dụng macro, chỉ cần chọn tên mà bạn muốn chọn trong số 15 tên ngẫu nhiên. Trong các ví dụ cho đến nay, bạn sẽ chọn phạm vi A1: A1000. Sau đó, macro kéo ngẫu nhiên 15 tên từ các ô và đặt chúng vào Clipboard. Khi bạn chạy macro, sau đó bạn có thể dán nội dung của Bảng tạm vào bất kỳ nơi nào bạn muốn. Mỗi khi macro được chạy, một nhóm 15 khác nhau được chọn.

_Lưu ý: _

Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.

ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (12475) áp dụng cho Microsoft Excel 2007, 2010, 2013, 2016, 2019 và Excel trong Office 365. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện menu cũ hơn của Excel tại đây: