Chọn tên ngẫu nhiên (Microsoft Excel)
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:
-
Nhập = RAND () vào ô B1.
-
Nhập công thức sau vào ô C1:
-
Chọn dải ô B1: C1 và điền vào hàng 1000.
-
Chọn phạm vi B1: C1000.
-
Nhấn Ctrl + C để sao chép phạm vi vào Bảng tạm.
-
Chọn Dán Đặc biệt từ menu Chỉnh sửa. Excel sẽ hiển thị hộp thoại Dán Đặc biệt. (Xem Hình 1.)
-
Đảm bảo rằng nút radio Giá trị được chọn.
-
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.
-
Chọn một ô trong cột C.
-
Chọn Sắp xếp từ menu Dữ liệu. Excel sẽ hiển thị hộp thoại Sắp xếp.
(Xem Hình 2.)
-
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 iRows As Integer Dim iCols As Integer Dim iBegRow As Integer Dim iBegCol As Integer Dim J As Integer Dim sCells As String 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
Để sử dụng macro này, chỉ cần chọn tên mà bạn muốn chọn trong 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 (2811) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003. Bạn có thể tìm phiên bản của mẹo này cho giao diện ribbon của Excel (Excel 2007 trở lên) tại đây: