Excel có hàm chọn ngẫu nhiên trong vùng cho trước không? Nhờ chỉ giúp. (9 người xem)

  • Thread starter Thread starter tuanfkt
  • Ngày gửi Ngày gửi
Liên hệ QC

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

Bạn gõ 0 vào A1
Trong Home - Editing - nhấn Fill chọn serie
Chọn Linear
Chọn Column
Step = 1
Stop = 8 số 9

Bạn sẽ có tất cả số.

Bây giờ các số từ 0 đến 999 đang không đủ 4 con, bạn thêm 0 vào đầu để chạy cái gì đó của bạn
 
Đương nhiên là được! Giả sử bạn có 1 danh sách đặt tại A1:A30 (tức 30 phần tử)... Để lấy ra 1 danh sách ngẫu nhiên 10 phần tử từ danh sách trên thì giải thuật sẽ thế này:
- Tạo 10 số ngẫu nhiên không trùng từ 1 đến 30 (tạm gọi là số thứ tự)
- Dùng hàm INDEX, lọc trong danh sách 30 phần tử theo chỉ số dòng chính là số thứ tự vừa tìm
----------------
Về việc tạo dãy số ngẫu nhiên không trùng ta dùng lập trình VBA đề tạo! Xem chi tiết tại đây: http://www.giaiphapexcel.com/forum/showthread.php?27286-Tạo-dãy-số-ngẫu-nhiên-không-trùng
Giờ tôi làm thử cho bạn 1 file như yêu cầu (lấy 10 người ngẫu nhiên trong danh sách 30 người) ---> Xem thế nào nhé

Xin lỗi nếu câu hỏi này của em làm phiền đến anh ạ!

Cho em hỏi, cũng trường hợp như trên, nhưng nếu thay vào đó là 1 danh sách gồm 16 công nhân cùng với tên sản phẩm mà họ làm ra trong 1 ngày.
Em muốn chọn 1 mẫu ngẫu nhiên danh sách gồm đầy đủ 16 công nhân kèm theo sản phẩm họ làm ra. Và lần chọn mẫu thứ 2 cũng cho ra danh sách đầy đủ 16 công nhân nhưng những sản phẩm trong mẫu thứ 2 này không trùng với những sản phẩm trong lần chọn thứ nhất.
Em có gửi file kèm theo, mong anh chỉ giáo ạ. Em cám ơn nhiều
 

File đính kèm

Sao không dùng hàm randbetween(2,17) sẽ ra 1 số ngẫu nhiên từ 2->17
 
Chào anh ndu96081631 anh có thể giúp em tạo ra nút chỉnh ngẫu nhiên lịch trực như file đinh kèm với được không ạ.
Ý em là từ thứ 2 đến chủ nhật khi bấm ngẫu nhiên trong 1 vùng thì mỗi người sẽ nhận được 1 chữ T (trực) và mỗi ngày chỉ 1 người nhận được chữ T, trong 1 tuần thừ thứ 2 đến chủ nhật ai cũng sẽ nhận được ngẫu nhiên 1 chữ T, và cứ mỗi lần bấm nút là nó sẽ thay đổi.
Rất mong anh giúp đỡ.
 

File đính kèm

Bạn vọoc tạm cái này trong lúc chờ đợi!
 

File đính kèm

Thì cứ tính đi sẽ biết
- RAND()*16 sẽ cho 1 số ngẫu nhiên trong khoảng từ 0 đến số < 16
- RAND()*16 + 1 sẽ cho 1 số ngẫu nhiên trong khoảng từ 1 đến số < 17
- INT(RAND()*16 + 1) sẽ cho 1 số nguyên ngẫu nhiên trong khoảng từ 1 đến 16
Còn nếu là:
- RAND()*17 thì sẽ cho 1 số ngẫu nhên trong khoảng từ 0 đến số <17
- INT(RAND()*17) sẽ cho 1 số ngẫu nhiên trong khoảng từ 0 đến 16
Hai cách cho kết quả khác nhau
Cho mình hỏi: INT(RAND()*16 + 1) và RANDBETWEEN(1,16) có gì khác nhau không? Tại sao mọi người lại thích dùng INT(RAND()*16 + 1) hơn vậy? Mình không hỏi về kết quả, mình hỏi về cách thức sử dụng!
 
Theo cá nhân mình thôi nha:

Có công thức xài cả trên trang tính lẫn trong VBA đều đúng thì nên xài;

Cũng vì có lúc trước không có ngay cái hàm RANDBETWEEN(GPE,16+GPE) nữa kia!

Vui nha!
 
Chào anh ndu96081631 anh có thể giúp em tạo ra nút chỉnh ngẫu nhiên lịch trực như file đinh kèm với được không ạ.
Ý em là từ thứ 2 đến chủ nhật khi bấm ngẫu nhiên trong 1 vùng thì mỗi người sẽ nhận được 1 chữ T (trực) và mỗi ngày chỉ 1 người nhận được chữ T, trong 1 tuần thừ thứ 2 đến chủ nhật ai cũng sẽ nhận được ngẫu nhiên 1 chữ T, và cứ mỗi lần bấm nút là nó sẽ thay đổi.
Rất mong anh giúp đỡ.
sử dụng file của bạn ChanhTQ@ và vọoc lung tung, còn nhiều thứ muốn làm nhưng không biết lệnh
 

File đính kèm

sử dụng file của bạn ChanhTQ@ và vọoc lung tung, còn nhiều thứ muốn làm nhưng không biết lệnh
.....-+*/ trên cả điều em cần....Không biết nói gì hơn. Em xin chân thành cảm ơn.
Anh cho em hỏi thêm 1 câu nữa là nếu mình muốn chèn thêm người thì mình phải làm những bước nào ạ.
 
Lần chỉnh sửa cuối:
Giả sử tôi có danh sách học sinh (B2:B30), ở ô C1 tôi muốn chọn ngẫu nhiên tên học sinh có trong danh sách đó được không? Đại khái như là phải trả bài ngày hôm đó. Rất mong mọi người giúp đỡ.
Rất cảm ơn!

http://www.giaiphapexcel.com/diendan/threads/118102.Tặng-các-bạn-file-QUAY-SỐ-TRÚNG-THƯỞNG
bạn tham khảo bài viết đính kèm link nhé. có thể chọn số hiệu hs để gọi lên bảng như z nè. thấy hay góp ý cho bạn đó
 
.....-+*/ trên cả điều em cần....Không biết nói gì hơn. Em xin chân thành cảm ơn.
Anh cho em hỏi thêm 1 câu nữa là nếu mình muốn chèn thêm người thì mình phải làm những bước nào ạ.
chỉ có 7 ngày nên phải có 7 người, mỗi người trực 1 ngày, trên 7 người sẽ có người nghĩ trong tuần, code sẽ khác nhiều, và chạy cho cả tháng mới tính được số lần trực tương đối đồng đều
sửa tạm sub Main để chọn ngẫu nhiên 7 người trong số người từ 7 trở lên, chưa tính số lần trực tương đối đồng đều trong tháng
Mã:
Sub Main()
Dim d1 As Object, d2 As Object, Arr(), i As Integer, Srow As Integer
Set d1 = CreateObject("Scripting.Dictionary")
Set d2 = CreateObject("Scripting.Dictionary")
Srow = Range("B65000").End(xlUp).Row - 3
ReDim Arr(1 To Srow, 1 To 7)
Randomize
For i = 1 To 7
lap1:
    dong = Int(Srow * Rnd + 1)
    If Not d1.exists(dong) Then
        d1.Add dong, ""
lap2:
        cot = Int(7 * Rnd + 1)
        If Not d2.exists(cot) Then
            d2.Add cot, ""
            Arr(dong, cot) = "T"
        Else
            GoTo lap2
        End If
    Else
        GoTo lap1
    End If
Next i
Cells(4, Fistweek).Resize(Srow, 7) = Arr
Set d1 = Nothing: Set d2 = Nothing
End Sub
 
Lần chỉnh sửa cuối:
chỉ có 7 ngày nên phải có 7 người, mỗi người trực 1 ngày, trên 7 người sẽ có người nghĩ trong tuần, code sẽ khác nhiều, và chạy cho cả tháng mới tính được số lần trực tương đối đồng đều
sửa tạm sub Main để chọn ngẫu nhiên 7 người trong số người từ 7 trở lên, chưa tính số lần trực tương đối đồng đều trong tháng
Mã:
Sub Main()
Dim d1 As Object, d2 As Object, Arr(), i As Integer, Srow As Integer
Set d1 = CreateObject("Scripting.Dictionary")
Set d2 = CreateObject("Scripting.Dictionary")
Srow = Range("B65000").End(xlUp).Row - 3
ReDim Arr(1 To Srow, 1 To 7)
Randomize
For i = 1 To 7
lap1:
    dong = Int(Srow * Rnd + 1)
    If Not d1.exists(dong) Then
        d1.Add dong, ""
lap2:
        cot = Int(7 * Rnd + 1)
        If Not d2.exists(cot) Then
            d2.Add cot, ""
            Arr(dong, cot) = "T"
        Else
            GoTo lap2
        End If
    Else
        GoTo lap1
    End If
Next i
Cells(4, Fistweek).Resize(Srow, 7) = Arr
Set d1 = Nothing: Set d2 = Nothing
End Sub
Cảm ơn anh, 1 lần nữa anh giúp em code, nếu 7 người 7 ngày không trùng, thì cứ dưới 14 người thì ngẫu nhiên 2 người trùng trong 1 tuần, dưới 21 người thì 3 người trùng trong 1 tuần, dưới 28 người thì 4 người trùng trong 1 tuần,....cứ như vậy mình lấy 7 ngày mình x số người trong tuần trùng ngẫu nhiên cũng được ạ.
Chân thành cảm ơn anh.
 
Xin chào các anh chị,
Nhờ các anh chị chỉ giúp cho công thức tính lựa chọn ngẫu nhiên 1 bạn nam và 1 bạn nữ để trực vệ sinh lớp học như file đính kèm. Mình có thử làm kết hợp bằng hàm index và rand rồi nhưng không được, vd như chạy random ra ô c5 thì bạn nam 4 và nữ 2 sẽ là team trực nhật hộm đó, cũng không cần phân bổ công bằng, chỉ cần ngẫu nhiên, nếu không công bằng có thể nhấn f9 tiếp để chọn cặp khác. Mong các anh chị giúp đỡ sớm, xin cảm ơn các anh chị trước
 

File đính kèm

Xin chào các anh chị,
Nhờ các anh chị chỉ giúp cho công thức tính lựa chọn ngẫu nhiên 1 bạn nam và 1 bạn nữ để trực vệ sinh lớp học như file đính kèm. Mình có thử làm kết hợp bằng hàm index và rand rồi nhưng không được, vd như chạy random ra ô c5 thì bạn nam 4 và nữ 2 sẽ là team trực nhật hộm đó, cũng không cần phân bổ công bằng, chỉ cần ngẫu nhiên, nếu không công bằng có thể nhấn f9 tiếp để chọn cặp khác. Mong các anh chị giúp đỡ sớm, xin cảm ơn các anh chị trước
công thức ô A1, và dùng format theo điều kiện các ô
 

File đính kèm

công thức ô A1, và dùng format theo điều kiện các ô[/QUOTE
Xin cảm ơn anh HieuCD rất nhiều. Vợ em thấy hay quá nên muốn nhờ em chọn random món ăn cho đỡ đau đầu __--__. Em OK luôn nhưng mày mò theo cách của anh HieuCD hướng dẫn theo file trước có lẽ lại không áp dụng được. Em mày mò từ tối hôm qua tới giờ chưa ra, mong các anh chị em chỉ giáo thêm cho em ở file đính kèm nhé. Em xin cảm ơn trước
 

File đính kèm

công thức ô A1, và dùng format theo điều kiện các ô[/QUOTE
Xin cảm ơn anh HieuCD rất nhiều. Vợ em thấy hay quá nên muốn nhờ em chọn random món ăn cho đỡ đau đầu __--__. Em OK luôn nhưng mày mò theo cách của anh HieuCD hướng dẫn theo file trước có lẽ lại không áp dụng được. Em mày mò từ tối hôm qua tới giờ chưa ra, mong các anh chị em chỉ giáo thêm cho em ở file đính kèm nhé. Em xin cảm ơn trước
Bạn thử công thức này
Mã:
=INDEX(B2:D4,RANDBETWEEN(1,3),RANDBETWEEN(1,3))
 
Nói chung là cần tạo số ngẫu nhiên, ơ đây mình dùng cách dài hơn nhưng cũng dùng được.
=INDEX($B$2:$B$17,RANDBETWEEN(1,ROWS($B$2:$B$17)))

Tổng quát bạn có thể dùng Name thay cho địa chỉ trong công thức trên theo dạng
=INDEX(DanhSachHocVien,RANDBETWEEN(1,ROWS(DanhSachHocVien)))
 
Lần chỉnh sửa cuối:
Gửi bác ndu96081613,
Trước tiên cho em gửi lời cảm ơn vì mấy bài viết của bác đã khai sáng cho em rất nhiều. Tuy nhiên, đợt này em có bị sếp giao cho một cái công việc không giống ai, mầy mò mãi cũng chưa làm được, mong bác chỉ giúp em.
Số là thế này, dạo này nó ra cái loại xổ số Vietlot, ông sếp em thì nhiều tiền, ông ấy bảo mày rảnh thì chọn cho anh một bảng số để anh chuyển cho đại lý nó in vé, mỗi lần ổng bắt em chọn khoảng 2000 số ngẫu nhiên không trùng. Nghe thì dễ, nhưng bắt tay vào làm em thấy nó thật rối rắm. Chung quy lại đề bài ổng đưa ra được tóm lược như sau: chọn ngẫu nhiên dãy số bao gồm 06 số tự nhiên trong 45 số tự nhiên có thứ tự từ 01-45. Chọn ra khoảng 1000-2000 dãy số như vậy và không trùng lắp. Sau đó thiết lập công thức để kiểm tra một dãy số bất kỳ mình nhập vào xem có nằm trong 2000 dãy số đã chọn không (cái này phục vụ cho việc khi đã có kết quả xổ số). Bác chỉ cho em với, đội ơn bác.
 
xổ số kiểu Mỹ đã len lỏi khắp nơi trong dân gian .... Giờ mình đi uống Cà phê cũng nghe bàn Vietlot , lên công ty cũng nghe bàn Vietlot , ngồi nhậu cũng nghe bàn Vietlot ...
 
Web KT

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

Back
Top Bottom