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

Liên hệ QC
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

  • Book1_2.xlsx
    393.5 KB · Đọc: 230
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

  • Danh sach phan cong coi thi.xls
    32 KB · Đọc: 28
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.
 
Web KT
Back
Top Bottom