Tạo nhiều lần các dãy số random không trùng lặp (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

hanxaram

Thành viên mới
Tham gia
23/9/09
Bài viết
4
Được thích
0
Chào các anh,chị trên GPE. Em có một chút rắc rối với bảng tính excel nhờ mọi người giải đáp giúp.
Giả sử em có bảng tính gồm 1000 giá trị từ 1> 1000. Ngày thứ nhất em muốn chọn ra 10 số ngẫu nhiên không trùng nhau trong số 1000 số cho trước.
Ngày thứ 2, em muốn lấy tiếp 10 số ngẫu nhiên không trùng nhau nhưng phải đảm bảo rằng không có số nào trùng với 10 số đã lấy của ngày thứ 1.
Tương tự là các ngày tiếp theo cũng lấy random giống như ngày thứ 2( tức là không trùng với các ngày trước đó).
Mọi người giúp em với. thanks cả nhà.
 
Chào các anh,chị trên GPE. Em có một chút rắc rối với bảng tính excel nhờ mọi người giải đáp giúp.
Giả sử em có bảng tính gồm 1000 giá trị từ 1> 1000. Ngày thứ nhất em muốn chọn ra 10 số ngẫu nhiên không trùng nhau trong số 1000 số cho trước.
Ngày thứ 2, em muốn lấy tiếp 10 số ngẫu nhiên không trùng nhau nhưng phải đảm bảo rằng không có số nào trùng với 10 số đã lấy của ngày thứ 1.
Tương tự là các ngày tiếp theo cũng lấy random giống như ngày thứ 2( tức là không trùng với các ngày trước đó).
Mọi người giúp em với. thanks cả nhà.
Thử với code này. Dữ liệu từ ô A1 >>> An
PHP:
Sub test()
Dim I As Long, J As Long, Min As Long, Max As Long
Dim Tam As Long, PreviousArr(), Sarr()
With CreateObject("Scripting.Dictionary")
   If [B1] <> "" Then
      PreviousArr = Range([B1], [B65536].End(3)).Value
      For I = 1 To UBound(PreviousArr)
         .Add PreviousArr(I, 1), ""
      Next
   End If
   Sarr = Range([A1], [A65536].End(3)).Value
   Min = Application.Min(Sarr): Max = Application.Max(Sarr)
   Do
      Tam = Int((Max - Min + 1) * Rnd + Min)
      If Not .exists(Tam) Then
         J = J + 1: .Add Tam, ""
      End If
   Loop Until J = 10 Or .Count = UBound(Sarr)
   [B1].Resize(.Count) = Application.Transpose(.keys)
End With
End Sub
 
Lần chỉnh sửa cuối:
cám ơn bác quanghai. Bác giải thích rõ hơn được không ah. Em không hiểu về cách chạy của nó. thanks bac.
 
cám ơn bác quanghai. Bác giải thích rõ hơn được không ah. Em không hiểu về cách chạy của nó. thanks bac.
Muốn hiểu được code vận hành thế nào thì phải tìm sách VBA đọc. Còn muốn sử dụng code thì cứ copy code vào 1 module rồi bấm F5.
Mở file lên, bấm Alt+F11, chọn Insert, Module và copy code dán vào. Vậy là được rồi
 
[ThongBao]Giả sử em có bảng tính gồm 1000 giá trị từ 1. Ngày thứ nhất em muốn chọn ra 10 số ngẫu nhiên không trùng nhau trong số 1000 số đó
Ngày thứ 2, em muốn lấy tiếp 10 số ngẫu nhiên không trùng nhau nhưng phải đảm bảo rằng không có số nào trùng với 10 số đã lấy của ngày thứ 1.
Tương tự là các ngày tiếp theo cũng lấy random giống như ngày thứ 2( tức là không trùng với các ngày trước đó).
Mọi người giúp em với.[/thOngbao]

Việc này bạn có thể làm nhờ trợ giúp của RAND()
(*) Lập hàm RAND() bên cạch cột số của bạn;
(*) Copy & dán Value cột mới tạo;
(*) Xếp cả 2 cột theo chiều giảm dần theo cột vừa dán value;
(*) Mỗi ngày cứ copy lấy mươi anh gần bạn nhất là được.
 
Web KT

Bài viết mới nhất

Back
Top Bottom