Excel có hàm chọn ngẫu nhiên trong vùng cho trước không? Nhờ chỉ giúp. (1 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

tuanfkt

Thành viên chính thức
Tham gia
22/9/06
Bài viết
69
Được thích
8
Nghề nghiệp
Kế toán
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!
 

File đính kèm

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!
Bạn dùng hàm sau:
PHP:
=INDEX($B$2:$B$17,INT(RAND()*16)+1)
Cứ bấm F9 sẽ thấy nó chọn ngẩu nhiên
 
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!
Bạn sử dụng Index() kết hợp với hàm Rand(). Xem cách dùng trong file nha.
 

File đính kèm

Hi,

Theo chủ đề này thì cho em hỏi, nếu phải lấy danh sách ngẫu nhiên từ 1 danh sách thì làm thế nào?

Thanks
 
Hi,

Theo chủ đề này thì cho em hỏi, nếu phải lấy danh sách ngẫu nhiên từ 1 danh sách thì làm thế nào?

Thanks
Đươ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é
 

File đính kèm

Đươ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é

Em đã đọc theo link kia rồi, nhưng do trình kém nên hok hiểu...nếu như file của em thế này thì bốc ra 10 số bất kỳ cho giải nhất, 10 số bất kỳ cho giải nhì thì làm sao anh nhỉ?
 

File đính kèm

Em đã đọc theo link kia rồi, nhưng do trình kém nên hok hiểu...nếu như file của em thế này thì bốc ra 10 số bất kỳ cho giải nhất, 10 số bất kỳ cho giải nhì thì làm sao anh nhỉ?
Dữ liệu của bạn bố trí theo kiểu khác nên có lẽ phải viết cho bạn 1 hàm để phục vụ riêng
PHP:
Function GetRngList(SourceRange As Range, Amount As Long)
  Dim TmpArr, Tmp, Item, ul As New Collection, n As Long
  Application.Volatile '<--- Neu muon ket qua thay doi khi bam F9
  TmpArr = SourceRange.Value
  GetRngList = ""
  Set ul = New Collection
  On Error Resume Next
  If Amount > SourceRange.Count Then Amount = SourceRange.Count
  With CreateObject("Scripting.Dictionary")
    For Each Item In TmpArr
      If Not IsEmpty(Item) Then ul.Add Item, CStr(Item)
    Next
    If ul.Count = 0 Then Exit Function
    If Amount > ul.Count Then Amount = ul.Count
    Do
      n = Int(Rnd() * ul.Count) + 1
      Tmp = ul.Item(n)
      If Not .Exists(Tmp) Then .Add Tmp, ""
    Loop Until .Count = Amount
    GetRngList = WorksheetFunction.Transpose(.Keys)
  End With
End Function
Xem file
 

File đính kèm

Lần chỉnh sửa cuối:
Dữ liệu của bạn bố trí theo kiểu khác nên có lẽ phải viết cho bạn 1 hàm để phục vụ riêng
PHP:
Function GetRngList(SourceRange As Range, Amount As Long)
  Dim TmpArr, Tmp, Item, ul As New Collection, n As Long
  Application.Volatile '<--- Neu muon ket qua thay doi khi bam F9
  TmpArr = SourceRange.Value
  GetRngList = ""
  Set ul = New Collection
  On Error Resume Next
  If Amount > SourceRange.Count Then Amount = SourceRange.Count
  With CreateObject("Scripting.Dictionary")
    For Each Item In TmpArr
      If Not IsEmpty(Item) Then ul.Add Item, CStr(Item)
    Next
    If ul.Count = 0 Then Exit Function
    If Amount > ul.Count Then Amount = ul.Count
    Do
      n = Int(Rnd() * ul.Count) + 1
      Tmp = ul.Item(n)
      If Not .Exists(Tmp) Then .Add Tmp, ""
    Loop Until .Count = Amount
    GetRngList = WorksheetFunction.Transpose(.Keys)
  End With
End Function
Xem file

tại sao em lam giống vậy thì bị lỗi "#Name?" ?
 

File đính kèm

sao attach file ko dc nhi?

Thế anh ndu96081631 bốc 10 số trong file zip trước em gửi dc hok? tại em cung làm mà bi lỗi mà ko save lai, bay h thì e ko attach file dc.
Đương nhiên là được rồi ---> Cứ đưa code vào rồi gõ công thức như file cũ thôi
(File của bạn vừa nhiều lại toàn là công thức nên sẽ nặng lắm đấy nhé)
 

File đính kèm

Tôi sửa lại code ở bài trên để cho tốc độ nhanh hơn:
PHP:
Function GetRngList(SrcRng As Range, Amount As Long)
  Dim Tmp, ul As New Collection, n As Long
  Application.Volatile '<--- Neu muon ket qua thay doi khi bam F9
  GetRngList = ""
  Set ul = New Collection
  On Error Resume Next
  If Amount > SrcRng.Count Then Amount = SrcRng.Count
  With CreateObject("Scripting.Dictionary")
    Do
      n = Int(Rnd() * SrcRng.Count) + 1
      Tmp = SrcRng(n).Value
      ul.Add Tmp, SrcRng(n).Address
      If Not .Exists(Tmp) And Not IsEmpty(Tmp) Then .Add Tmp, ""
      If ul.Count = SrcRng.Count Then Exit Do
    Loop Until .Count = Amount
    If .Count Then GetRngList = WorksheetFunction.Transpose(.Keys)
  End With
End Function
Code này nhanh hơn code cũ ít nhất từ 5 đến 10 lần ---> Với dữ liệu 6000 dòng, 26 cột (tương đương 156000 cell) khi bấm F9 để cập nhật, kết quả ra ngay lập tức
 

File đính kèm

Tôi sửa lại code ở bài trên để cho tốc độ nhanh hơn:
PHP:
Function GetRngList(SrcRng As Range, Amount As Long)
  Dim Tmp, ul As New Collection, n As Long
  Application.Volatile '<--- Neu muon ket qua thay doi khi bam F9
  GetRngList = ""
  Set ul = New Collection
  On Error Resume Next
  If Amount > SrcRng.Count Then Amount = SrcRng.Count
  With CreateObject("Scripting.Dictionary")
    Do
      n = Int(Rnd() * SrcRng.Count) + 1
      Tmp = SrcRng(n).Value
      ul.Add Tmp, SrcRng(n).Address
      If Not .Exists(Tmp) And Not IsEmpty(Tmp) Then .Add Tmp, ""
      If ul.Count = SrcRng.Count Then Exit Do
    Loop Until .Count = Amount
    If .Count Then GetRngList = WorksheetFunction.Transpose(.Keys)
  End With
End Function
Code này nhanh hơn code cũ ít nhất từ 5 đến 10 lần ---> Với dữ liệu 6000 dòng, 26 cột (tương đương 156000 cell) khi bấm F9 để cập nhật, kết quả ra ngay lập tức

Em có tải file anh về nhưng ko biết sao nó lại báo lỗi "#name?". không biết có cần phải chỉnh gì lại ko a?
 
Bạn cho mình hỏi tại sao lại không *17 mà phải +1 vậy?
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
 
Chào mọi người, mọi người giúp em với ạ.
Trong 1 dãy số từ 0 đến 9. Em muốn liệt kê tất cả các số. Số này phải có tối thiểu 4 chữ số và tối đa 8 chữ số, bao gôm cả số trùng lặp. Vậy phải dùng hàm nào ạ?
Mục đích là muốn lấy lại password cho điện thoại thôi ạ.
 
Chào mọi người, mọi người giúp em với ạ.
Trong 1 dãy số từ 0 đến 9. Em muốn liệt kê tất cả các số. Số này phải có tối thiểu 4 chữ số và tối đa 8 chữ số, bao gôm cả số trùng lặp. Vậy phải dùng hàm nào ạ?
Mục đích là muốn lấy lại password cho điện thoại thôi ạ.
Lấy được rồi thì sẽ LIỆT KÊ vào đâu? Trên Excel chăng?
Nên nhớ trên Excel chỉ có tối đa 1,048,576 dòng thôi nha (Excel 2003 còn ít hơn)
 
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 ...
 
Tiếng Việt mình có câu "được voi đòi tiên". Gặp ông sếp đòi làm việc riêng như vậy thì biết chừng nào xong.
Việc công còn có giới hạn. Việc riêng nó cũng như ghêm, mỗi ngày mỗi đòi phát triển. Điệu này cứ phải thêm thắt sửa siếc mãi cho đến khi nào ông sếp trúng số thì may ra mới được thôi.
 
Lần này em bị sếp giao cho 1 việc không giống ai, mong được chỉ giúp:
Số là ra cái loại xổ số Vietlot, ông sếp em thì nhiều tiền, ông ấy bảo 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.
PHP:
Sub Tao2000So()
 Dim J As Long, Tmp As Integer, W As Integer, Rws As Double
 Dim StrC As String, MyStr As String, C6 As String
 Const fS As String = "GPE"
    
 For J = 1 To 45
    StrC = StrC & Right("0" & CStr(J), 2)
 Next J
 Randomize:
 Sheet2.Columns("B:B").ClearContents
 MyStr = fS:                Sheet2.[b1].Value = fS
 Do
    For J = 1 To 999
        Tmp = 9 + (Rnd() * 9) \ 1
        If Tmp Mod 2 = 0 Then Tmp = Tmp + 1
        If Tmp > 14 Then
            StrC = Mid(StrC, Tmp, 10) & Left(StrC, Tmp - 1) & Mid(StrC, Tmp + 10, Len(StrC))
        Else
            StrC = Mid(StrC, Tmp + 10, Len(StrC)) & Left(StrC, Tmp - 1) & Mid(StrC, Tmp, 10)
        End If
    Next J
    
    For J = 1 To 42 Step 12
        C6 = Mid(StrC, J, 12)
        For W = 1 To 12 Step 2
            MyStr = MyStr & Mid(C6, W, 2)
        Next W
        Sheet2.[B65500].End(xlUp).Offset(1).Value = MyStr
        MyStr = fS
    Next J
    Rws = Sheet2.[b2].End(xlDown).Row
    If Rws > 2590 Then Exit Do
 Loop
End Sub
 
Chào mọi người,
Xin mọi người giúp đỡ, sếp tôi dạo này chơi cái món Vietlot, mỗi lần mua cả 2000 vé, bắt tôi lúc rảnh ngồi chọn. Xin các bác chỉ cho tôi cách lấy 2000 dãy số không trùng nhau, mỗi dãy số có 06 chữ số được chọn ngẫu nhiên từ 1-45. Nếu có thể các bác chỉ cho luôn công thức nhập một dãy số bất kỳ để kiểm tra có nằm trong 2000 dãy số đã chọn không (cái này phục vụ cho so sánh kết quả).
Chân thành cảm ơn./.
 
Xin lỗi các bác, hôm trước post bài rồi mà không để ý nó đẩy xuống trang cuối. Cảm ơn các bác
 
Tôi thì mong ông ý không trúng, vì 2 lẽ: thứ nhất, 20tr/ngày với ổng chả là gì và thứ 2 là ông ý nghĩ tôi đen nên giao việc này cho thằng khác. Chứ mà trúng thì tôi chuyển từ trợ lý sang ngồi ghi vé số !$@!!
 
Hic, bác ChanhTQ@ ơi, em chép nguyên đoạn ngôn ngữ lập trình của bác để tạo hàm mới trong Excel mà không được, bác có thể cho em một sheet làm thử để em ngồi mò và nghiền ngẫm không }}}}}
 
Chào mọi người,
Xin mọi người giúp đỡ, sếp tôi dạo này chơi cái món Vietlot, mỗi lần mua cả 2000 vé, bắt tôi lúc rảnh ngồi chọn. Xin các bác chỉ cho tôi cách lấy 2000 dãy số không trùng nhau, mỗi dãy số có 06 chữ số được chọn ngẫu nhiên từ 1-45. Nếu có thể các bác chỉ cho luôn công thức nhập một dãy số bất kỳ để kiểm tra có nằm trong 2000 dãy số đã chọn không (cái này phục vụ cho so sánh kết quả).
Chân thành cảm ơn./.
Bạn nhận file xem thử, muốn thay đổi bạn bấm F9 là được, sử dụng CT nên hơi chậm tý, mình làm 2000 số, muốn nhiều hơn thì bạn kéo xuống nữa!!!
P/s: không hiểu sao sếp bạn mua 20tr/ ngày, thì thu nhập 1 năm ít nhất 10 tỷ, như vậy cần gì phải mua vé số ta!!!
 

File đính kèm

Lần chỉnh sửa cuối:
không hiểu sao sếp bạn mua 20tr/ ngày, thì thu nhập 1 năm ít nhất 10 tỷ, như vậy cần gì phải mua vé số ta!!!

Thiệt ra đánh nhiều thì khả năng gỡ lại cũng nhiều. Nếu tính trung bình qua một thời gian dài thì chỉ lỗ khoảng 10-20%.

Thường thường với con số này là nhóm người chung lại (câu lạc bộ - club). Có thể tên sếp xí xọn tuyên bố với mấy ngừoi khác trong nhóm:
- Để tớ bảo lính nó làm cho 1 phần mềm chọn số, dò số khoẻ ru...
Cái mà tôi nói "được voi đòi tiên" là ở chỗ khoảng 1 tháng sau sẽ đòi khai triển phần mềm làm thống kê những số nào ra nhiều ít ra sao, và dự đánh những con số tối ưu.

Đó là trường hợp bình thường. Cũng có khả năng sếp này muốn thụt két. Đem tiền cơ quan ra mua vé số, ăn thì bỏ túi, các vé thua thì đem về đưa cho kế toán tính vào chi phí bồi dưỡng nhân viên.

(*) nếu ở nước ngoài thì chơi cờ bạc là một phương pháp rửa tiền tránh thuế của dân làm ăn lớn.
 
Cảm ơn bạn nhiều. Mình sẽ nghiên cứu file của bạn }}}}}
 
Uhm, mình hiểu ý bạn. Nhưng bạn yên tâm, hệ thống công ty đều là thuộc sở hữu tư nhân, sếp mình dùng tiền cá nhân thôi, đúng là thu nhập của ổng mỗi năm trên dưới 100 tỷ, nên ổng coi đây là trò tiêu khiển và cũng có thể ổng muốn thử khả năng xử lý tất cả các vấn đề trên trời dưới đất của mình. Cảm ơn mọi người đã giúp đỡ }}}}}
 
Cái tầm vực của loại dò vé số là tầm vực lớn. Bởi vì cuối cùng nó cũng tiến tới đòi hỏi khả năng làm thống kê.
Thu nhập cả 100 tỷ mà cũng khong bỏ ra được vài chục triệu mướn người viết cho cái phần mềm, chạy dot net hoặc java đường hoàng. Cha nội này là dân đại gia mà nhỏ nhặt những chuyện không đáng.

Tối thiểu cũng phải dùng Access. Excel không phải là CSDL, về sau này làm thống kê càng lúc càng miễn cưỡng.

Mà cái này nếu đúng sì tin thì phải viết trên mobile, chạy điện thoại cầm tay và pad mới thực sự là chiến.
 
Lần chỉnh sửa cuối:
Loại bài vé số muốn thực hiện thì phải thiết kế quy trình lấy số. Có hai loại lấy số:
1. loại lấy ngẫu nhiên 100% - lấy 6 trong 45 số hoàn toàn ngẫu nhiên
2. loại có phân lượng - số này có cơ hội nhiều hơn số kia, dựa vào sở thích cá nhân hoặc thống kê các lần sổ trước đó, hoặc các lần lấy vé trước đó. Đế thực hiện loại này cần phải có một biểu đồ map. Ví dụ map 45 số thành 1000, 50 số đầu map thành 1, 20 số tiếp map thành 2, vv...

Giả sử tầm vực của ta giới hạn ở loại ngẫu nhiên 100% thì quy trình như sau:

1. Lập hàm lấy số. Hàm này nhận một mảng các số đã được chọn rồi, trả về 1 số trong 45 (*), và không có trong các số của mảng đã cho.
2. Gọi hàm này 6 (*) lần. Ghi vào mảng (**)
3. Đem kết quả so sánh với các vé đã chọn. Nếu không bị trùng thì ghi lại vào nhóm mảng đã chọn
4. Nếu bị trùng thì trở lai bước 2 để chọn lại
5. Sau khi đã chọn đủ số vé thì dừng. Ghi lại vào sheet.

(*) Đặt 45 và 6 là hai const, ở tầm vực tổng thể (global). Về sau này muốn thay đổi lúc nào cũng dễ.
(**) mảng số hay string gì cũng được
(***) Ở con số vé vài ngàn như thế này, sau khi chọn số xong, phần mềm thường làm một thống kê cho biết các số được chọn nhiều ít như thế nào. Hoành tráng hơn thì vẽ một biểu đồ thống kê. Dân chuyên nghiệp còn có thể tạo một báo cáo cho biết khả năng xác suất trúng nếu các con số sổ ra thuộc về vùng nào.
 
bạn leoheocon ơi, bạn giúp mình cái này với ah. cái bản excel của bạn up lên là rất ok rồi, nhưng nói thật, để bảng tính đó ra một phát hơn 8 triệu số thì nó ko ra nổi đâu, nặng quá mà, đơ máy ngay. mình nhiều khi chọn được trên 10 số đến 20 số, và giải đặc biệt sẽ nằm trong số đó, nhưng để biết được các số mình chọn bao gồm những số nào thì thật quá khó, bạn giúp mình vụ này với. Ý là bây giờ mình cần một bảng tính mà tự mình sẽ điền các con số bất kỳ, không đầy đủ 45 số như vietlott, mà mình điền khoảng 15 số thôi, bạn làm giúp mình cái bảng tính đó với. mình cần bảng 15 số do mình tự điền. hoặc 24 số do mình tự chọn được không??? giúp mình với nhé, mình cám ơnView attachment thủ công.xlsx
 
Lần chỉnh sửa cuối:
Em có một bài toán như thế này xin nhờ anh chị giải quyết giúp ạ
  1. Có một danh sách cán bộ và danh sách phòng thi
  2. Yêu cầu: Phân công cán bộ coi thi ngẫu nhiên mà không phải bốc phiếu thủ công và đưa ra kết quả vào vùng kết quả em đã tô vàng
  3. Mỗi phòng thi 2 giám thị. Mỗi giám thị chỉ coi 1 phòng thi
  4. Số lượng phòng thi có thể thay đổi theo từng buổi thi
Em xin cảm ơn anh chị trước ạ
 

File đính kèm

Lần chỉnh sửa cuối:
Em có một bài toán như thế này xin nhờ anh chị giải quyết giúp ạ
  1. Có một ds cán bộ và ds phòng thi
  2. Yêu cầu: Phân công cán bộ coi thi ngẫu nhiên mà không phải bốc phiếu thủ công và đưa ra kết quả vào vùng kết quả em đã tô vàng
Em xin cảm ơn anh chị trước ạ
Bạn lập topic mới. Nêu yêu cầu và điều kiện cụ thể (ví dụ mỗi phòng thi có mấy chục giám thị). Không viết tắt. Đính kèm file...
 
Em cũng có yêu cầu gần giống với bạn đầu tiên trong topic.
Em có list A gồm 30 người, list B gồm 10 người ngẫu nhiên từ list A.
Em muốn chọn ngẫu nhiên 5 người thuộc list A mà không thuộc list B. Vậy em phải làm sao ạ?
 
Mọi người ơi, cho em hỏi muốn viết một phần mềm chọn ngẫu nhiên 2 ô dử liệu trên cùng một dòng, trong vùng dữ liệu cho trước và thông báo hết khi các dữ liệu trong vùng dữ liệu đã được chọn qua hết rồi. thì phải làm như thế nào ạ...mong mọi ngưới giúp e với...với mục đích tạo phần mềm học tập ạ
 
Mọi người ơi, cho em hỏi muốn viết một phần mềm chọn ngẫu nhiên 2 ô dử liệu trên cùng một dòng, trong vùng dữ liệu cho trước và thông báo hết khi các dữ liệu trong vùng dữ liệu đã được chọn qua hết rồi. thì phải làm như thế nào ạ...mong mọi ngưới giúp e với...với mục đích tạo phần mềm học tập ạ
Phần mềm chắc là khó đấy, nhưng mà code chap 2 của n phần tử chắc là làm được. Bạn làm một file ví dụ xem sao.
 
Mọi người ơi, cho em hỏi muốn viết một phần mềm chọn ngẫu nhiên 2 ô dử liệu trên cùng một dòng, trong vùng dữ liệu cho trước và thông báo hết khi các dữ liệu trong vùng dữ liệu đã được chọn qua hết rồi. thì phải làm như thế nào ạ...mong mọi ngưới giúp e với...với mục đích tạo phần mềm học tập ạ
Theo bạn thì bạn sẽ học được những gì qua bài tập này?
Nói mục đích cụ thể, tôi hướng dẫn trực tiếp vào phần đó, khỏi phải học vòng vo.
 
Theo bạn thì bạn sẽ học được những gì qua bài tập này?
Nói mục đích cụ thể, tôi hướng dẫn trực tiếp vào phần đó, khỏi phải học vòng vo.
Dạ .. e muốn tạo một cái phần mêm flashcard để học tiếng nhật cụ thể là học chử kanji
Bài đã được tự động gộp:

Phần mềm chắc là khó đấy, nhưng mà code chap 2 của n phần tử chắc là làm được. Bạn làm một file ví dụ xem sao.

e có một file excel như vậy nhửng nó chỉ hiển thị ngẫu nhiên mot du liệu trong vùng dữ liệu cho trước thôi...nhưng e muốn nó hiển thị một cách ngẫu nhiên nhưng nó biết đến khi nào là đã hiển thị hết vùng du liệu và e muôn khi một dử liệu cột A hiên lên trên nếu muốn xem dữ liệu cột B tương đối với cột A thì phải làm sao e không biết làm mọi người giúp e với
 

File đính kèm

Lần chỉnh sửa cuối:
Dạ .. e muốn tạo một cái phần mêm flashcard để học tiếng nhật cụ thể là học chử kanji
Bài đã được tự động gộp:



e có một file excel như vậy nhửng nó chỉ hiển thị ngẫu nhiên mot du liệu trong vùng dữ liệu cho trước thôi...nhưng e muốn nó hiển thị một cách ngẫu nhiên nhưng nó biết đến khi nào là đã hiển thị hết vùng du liệu và e muôn khi một dử liệu cột A hiên lên trên nếu muốn xem dữ liệu cột B tương đối với cột A thì phải làm sao e không biết làm mọi người giúp e với
Tháo bỏ merge cells vùng a2:e14 rồi dùng đọan code này xem sao
Mã:
Option Explicit
Public PArr As Variant
Public Num As Long
Public Num1 As Long
Sub Random_()
Dim i, j
If Num = 0 Then
    Dim Sarr As Variant
    Sarr = Sheet1.Range("a30").CurrentRegion
    ReDim PArr(1 To 3, 1 To UBound(Sarr))
    For i = 1 To UBound(Sarr)
        PArr(1, i) = Sarr(i, 1)
        PArr(2, i) = Sarr(i, 2)
    Next i
    Num1 = UBound(Sarr)
End If
If Num = Num1 Then
    MsgBox "Da het so lieu"
    Exit Sub
End If
Randomize
j = UBound(PArr, 2) * 10
i = (Rnd() * (j - 1)) \ 10 + 1
Do While PArr(3, i) = 1
    i = (Rnd() * (j - 1)) \ 10 + 1
Loop
PArr(3, i) = 1
Num = Num + 1
Sheet1.Range("a2") = PArr(1, i)
Sheet1.Range("b2") = PArr(2, i)
End Sub
 
Hoăc thử code này:
Mã:
Public Sub Random2()
Static soCau As Long
Static dArr As Variant
Static k As Long
Dim sArr(), i As Long, r As Long
If soCau = 0 Then
    sArr = Range("A30:B" & Range("B" & Rows.Count).End(xlUp).Row).Value
    k = UBound(sArr, 1)
    ReDim dArr(1 To k, 1 To 2)
    Randomize
         For i = 1 To k
                r = Int(Rnd() * (k - i + 1)) + 1
                dArr(i, 1) = sArr(r, 1)
                dArr(i, 2) = sArr(r, 2)
                sArr(r, 1) = sArr(k - i + 1, 1)
            sArr(r, 2) = sArr(k - i + 1, 2)
        Next
End If
If soCau = k Then
    MsgBox "Da hêt so cau"
Else
    soCau = soCau + 1
    Range("A15") = dArr(soCau, 1)
    Range("B15") = dArr(soCau, 2)
End If
End Sub
 
Hoăc thử code này:
Mã:
Public Sub Random2()
Static soCau As Long
Static dArr As Variant
Static k As Long
Dim sArr(), i As Long, r As Long
If soCau = 0 Then
    sArr = Range("A30:B" & Range("B" & Rows.Count).End(xlUp).Row).Value
    k = UBound(sArr, 1)
    ReDim dArr(1 To k, 1 To 2)
    Randomize
         For i = 1 To k
                r = Int(Rnd() * (k - i + 1)) + 1
                dArr(i, 1) = sArr(r, 1)
                dArr(i, 2) = sArr(r, 2)
                sArr(r, 1) = sArr(k - i + 1, 1)
            sArr(r, 2) = sArr(k - i + 1, 2)
        Next
End If
If soCau = k Then
    MsgBox "Da hêt so cau"
Else
    soCau = soCau + 1
    Range("A15") = dArr(soCau, 1)
    Range("B15") = dArr(soCau, 2)
End If
End Sub
code nay được nek ad...cám ơn ad nhiu lắm
Bài đã được tự động gộp:

Tháo bỏ merge cells vùng a2:e14 rồi dùng đọan code này xem sao
Mã:
Option Explicit
Public PArr As Variant
Public Num As Long
Public Num1 As Long
Sub Random_()
Dim i, j
If Num = 0 Then
    Dim Sarr As Variant
    Sarr = Sheet1.Range("a30").CurrentRegion
    ReDim PArr(1 To 3, 1 To UBound(Sarr))
    For i = 1 To UBound(Sarr)
        PArr(1, i) = Sarr(i, 1)
        PArr(2, i) = Sarr(i, 2)
    Next i
    Num1 = UBound(Sarr)
End If
If Num = Num1 Then
    MsgBox "Da het so lieu"
    Exit Sub
End If
Randomize
j = UBound(PArr, 2) * 10
i = (Rnd() * (j - 1)) \ 10 + 1
Do While PArr(3, i) = 1
    i = (Rnd() * (j - 1)) \ 10 + 1
Loop
PArr(3, i) = 1
Num = Num + 1
Sheet1.Range("a2") = PArr(1, i)
Sheet1.Range("b2") = PArr(2, i)
End Sub
code nay s e bấm chạy code thi nó không nhảy j hết ad ơi
Bài đã được tự động gộp:

Hoăc thử code này:
Mã:
Public Sub Random2()
Static soCau As Long
Static dArr As Variant
Static k As Long
Dim sArr(), i As Long, r As Long
If soCau = 0 Then
    sArr = Range("A30:B" & Range("B" & Rows.Count).End(xlUp).Row).Value
    k = UBound(sArr, 1)
    ReDim dArr(1 To k, 1 To 2)
    Randomize
         For i = 1 To k
                r = Int(Rnd() * (k - i + 1)) + 1
                dArr(i, 1) = sArr(r, 1)
                dArr(i, 2) = sArr(r, 2)
                sArr(r, 1) = sArr(k - i + 1, 1)
            sArr(r, 2) = sArr(k - i + 1, 2)
        Next
End If
If soCau = k Then
    MsgBox "Da hêt so cau"
Else
    soCau = soCau + 1
    Range("A15") = dArr(soCau, 1)
    Range("B15") = dArr(soCau, 2)
End If
End Sub
khi thông báo hết số câu thì có cách nào cho nó chạy lại mà không cần tắt bảng tính không Bạn. và khi dử liệu cột A hiện lên mình nhập một dữ liệu vào một ô quy định nếu trùng với dữ liệu cột B mà tương đối với cột A trong vùng dử liệu chó trước thì sẻ cộng điểm vào ô điểm qui định nếu không trùng thì không cộng điểm...có cách nào làm được như v không Bạn giúp mình với...
 
Lần chỉnh sửa cuối:
Thay câu:

MsgBox "Da hêt so cau"

bằng câu:

If MsgBox("Da hêt so cau" & ChrW(10) & " Ban muon chay lai?", vbOKCancel, "Thong bao") = vbOK Then soCau = 0

If MsgBox("Da hêt so cau" & ChrW(10) & " Ban muon chay lai?", vbOKCancel, "Thong bao") = vbOK Then
soCau = 0
Random2 ' chạy lại luôn
End If

Đồng thời, đặt randomize ở đầu sub

Static RNDMIZED As Boolean
IF Not RNDMIZED Then Randomize: RNDMIZED = True
 
Mọi người ơi cho e hỏi...e có một bảng tinh như ở dưới.. khi e bấm ô next thì một chử kanji khác hiện lên ngẫu nhiên từ vùng dữ liệu nhập sẵn ở phía dưới..và khi em nhâp liệu vào ô đáp án là chử hiragana theo cột B tướng đối với cột A từ vùng dữ liệu thì làm thế nào để noa hiểu là đúng hay sai khi em bấm vào nút kiểm tra,... và tự động cộng điểm vào ô điểm khi dử liệu em nhập vào đúng với dử liệu cột B trong vùng dữ liệu bên dưới...hiện số câu sai vào ô số từ sai...em tạo phần mềm này để tự học chử kanji ạ...mọi người giúp em với
 

File đính kèm

các bác cho e hỏi e có một bảng tính khi e nhập dữ liệu vào 2 ô ở cột b của sheet1 thi lam cach nao có thể ấn một nút nó tự copy qua 2 ô o sheet2 và cứ như thế nó xêp dần xuống ở sheet 2/...bác nào biet chỉ e với
 

File đính kèm

Đươ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é
Anh ơi, Với một dãy số trùng lặp thì nên làm như thế nào vậy ạ?
 
Anh ơi, Với một dãy số trùng lặp thì nên làm như thế nào vậy ạ?
Mình có cách cù lần, như sau:
b1./ Tìm trị cực đại & cực tiểu trong dãy
b2./ Tạo vòng lặp duyệt từ cực tiểu đến cực đại vừa tìm thấy
b2.1./ Khi duyệt thấy 1 chỉ số trong vòng lặp mà có trong dãy, ta ghi nối vô tham biến kiểu chuỗi (đã khai báo trước) theo kiểu
StrC= StrC & Right("00" & CStr(J),3)
b3./ Kích hoạt hàm tạo số ngẫu
b4./ Tạo vòng lặp Do . . Loop
b4.1./ Trong vòng lặp ta lấy 1 số ngẫu bất kì trong (khuôn khổ) độ dài của chuỗi StrC
b4.2./ Nếu số ngẫu được tạo ra trùng với các số 1, 4, 7, . . thì ta tiến hành:
a) Tăng biến đếm lên 1
b) Cắt 3 kí tự tại vị trí ngẫu, biếm thành kí số & ghi vô đâu đó
c) Cắt bỏ 3 kí tự tại vị trí ngẫu (trở đi) khỏi chuỗi StrC
Thực hiện vòng lặp Do . .Loop này đến thi biến đếm thỏa
Chúc bạn thành công & cuối tuần vui vẻ!

[Nhớ làm xong trước khi trái bóng ở MĐ lăn đó nghe!]
 
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!

Đơn giản là bạn nhập ô C1 như thế này:
=INDEX(B2:B30,RANDBETWEEN(2,30))
 
Đươ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é
bác ơi! sao em vào file của bác thì có hàm UniqueRandomNum còn file khác thì ko có hàm đó? Vậy thì mình nên làm sao để tất cả file Excel có hàm UniqueRandomNum ?
 
Bạn ơi phần mềm mình cần là khi mình chọn 3 hoặc 4 số thì phần mềm có thể chọn lọc cho mình thành nhiều cặp số 06 cặp mà các cặp chúng hay về với nhau ví dụ mình chọn 12-15-18-45 thì phần mềm lọc ra 100 cặp hoặc 500 cặp 6 số mà 2 cặp số phần mềm chọn đã về cùng với một trong các cặp 12-15-18-45 trong các kỳ quay trước . Cảm ơn bạn
 
Bạn nhận file xem thử, muốn thay đổi bạn bấm F9 là được, sử dụng CT nên hơi chậm tý, mình làm 2000 số, muốn nhiều hơn thì bạn kéo xuống nữa!!!
P/s: không hiểu sao sếp bạn mua 20tr/ ngày, thì thu nhập 1 năm ít nhất 10 tỷ, như vậy cần gì phải mua vé số ta!!!
Nếu mà ko muốn dừng ở 2000 mà muốn nó chạy hết tất cả các cách thì làm như thế nào v ạ
E tính nó ra 5.864.443.200 cách
 

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

Back
Top Bottom