[go: up one dir, main page]

Academia.eduAcademia.edu

Ham random excel khong lặp

Điều kiện: 1. Danh sách gồm 1500 khách hàng 2. Làm sao để lấy ngẫu nhiên 100 trong 1500 khách hàng. 100 khách hàng này không trùng nhau. 3. Lấy ngẫu nhiên 100 khách hàng 2-3 lần. Giải pháp của HelloICT: Bước 1: Đánh số thứ tự cho 1500 khách hàng. Bắt đầu số 1 cho khách hàng thứ nhất và số 1500 cho khách hàng cuối cùng. Mục đích của bước này là gán 1 số đại diện cho một khách hàng. Ví dụ: số 10 đại diện cho khách hàng A, số 11 đại diện cho khách hàng B. Các số này không được lặp lại 2 lần.   Tạo cột số thứ tự đại diện cho mỗi khách hàng Bước 2: Tạo 100 số ngẫu nhiên. Bước này dùng lệnh =randbetween() sẽ gặp vấn đề các số ngẫu nhiên có thể trùng nhau. Giải pháp tốt nhất để lấy 100 số ngẫu nhiên mà không trùng nhau là sử dụng VBA. Thực hiện: Nhấn Alt + F11 để vào phần soạn thảo mã VBA >> Vào Insert > Module > Copy và dán đọan code bên dưới vào khung soạn thảo. '-------------------------------- 'Code của DONGPN '=================== Option Explicit Sub TaoNgauNhien() Dim i As Integer, j As Integer Dim Matran(), gtri, gtri2 Dim max_i, max_j As Integer max_i = 1500 max_j = 100 ' So so ngau nhien muon lay ra ReDim Matran(1 To max_i) For i = 1 To max_i Do gtri = Round(Rnd() * max_i, 0) If gtri = 0 Then GoTo tieptuc For j = 1 To i - 1 If gtri = Matran(j) Then GoTo tieptuc Next j Matran(i) = gtri Exit Do tieptuc: Loop While True Next i For i = 1 To max_j Cells(ActiveCell.Row + i, ActiveCell.Column) = Matran(i) Next i End Sub Trong đoạn code này có hai biến mà các bạn cần lưu ý: max_i: là khoảng sẽ tạo giá trị ngẫu nhiên. max_j: là số số ngẫu nhiên muốn lấy  * Cảm ơn bạn DONGPN đã bổ sung đoạn code VBA này!  Nhấn Alt + Q để đóng của sổ soạn thảo code VBA. Tiếp tục đặt con trỏ vào một cột trống trong Sheet, nhấn Alt + F8 và chạy macro này để tạo 100 số ngẫu nhiên.   Tạo 100 số ngẫu nhiên bằng code VBA Buớc 3: Dùng hàm vlookup đối chiếu giữa cột số ngẫu nhiên và bảng danh sách khách hàng để tìm ra Tên khách hàng tương ứng với từng số ngẫu nhiên. Ví dụ ta được con số ngẫu nhiên là 152 thì tên khách hàng là gì trong bảng danh sách? Công thức: =vlookup(cell-số-ngẫu-nhiên, vùng-bảng-danh-sách-gồm-cột-số-thứ-tự, số-thứ-tự-cột-cần-lấy-giá-trị-tính-từ-cột-số-thứ-tự). Ví dụ: =VLOOKUP(K4,$A$4:$D$1725,4). Nên nhớ địa chỉ bảng danh sách phải là địa chỉ tuyệt đối.    Tham chiếu tên khách hàng của 100 số ngẫu nhiên đó Như vậy, tương ứng với 100 số ngẫu nhiên lấy ra từ 1500 con số thứ tự của khách hàng, chúng ta sẽ có 100 khách hàng ngẫu nhiên tương ứng. {tipbox_right}Lưu ý rằng, mỗi khi có thay đổi, các con số ngẫu nhiên sẽ thay đổi và vì thế tên khách hàng cũng thay đổi theo. Chúc Nguyệt Minh và các bạn thử nghiệm thành công!