Quy Vu
Thành viên chính thức
- Tham gia
- 4/8/17
- Bài viết
- 65
- Được thích
- 4
- Giới tính
- Nam
Bạn sử dụng code bác @ndu96081631 thử nếu muốn thay đổi nhấn F9Chào các anh chị trong diễn đàn,
Em có một bài tập muốn nhờ các anh chị giúp đỡ, mong được hỗ trợ ạ
- Điền một số ngẫu nhiên từ 1 tới 59 vào 6 ô liền nhau bất kì như dưới, sao cho 6 số này không số nào trùng nhau?
- View attachment 215890
Function UniqueRandomNum(Bottom As Long, Top As Long, Amount As Long)
Application.Volatile
On Error Resume Next
If Amount > Top - Bottom + 1 Then Amount = Top - Bottom + 1
With CreateObject("Scripting.Dictionary")
Do
.Add Int(Rnd() * (Top - Bottom + 1)) + Bottom, ""
Loop Until .Count = Amount
UniqueRandomNum = WorksheetFunction.Transpose(.Keys)
End With
End Function
Bạn sử dụng code bác @ndu96081631 thử nếu muốn thay đổi nhấn F9
Mã:Function UniqueRandomNum(Bottom As Long, Top As Long, Amount As Long) Application.Volatile On Error Resume Next If Amount > Top - Bottom + 1 Then Amount = Top - Bottom + 1 With CreateObject("Scripting.Dictionary") Do .Add Int(Rnd() * (Top - Bottom + 1)) + Bottom, "" Loop Until .Count = Amount UniqueRandomNum = WorksheetFunction.Transpose(.Keys) End With End Function
Vậy thời buổi này đua nhau tìm kiếm và copy paste chỉnh sửa cho phù hợp với dữ liệu rồi lưu gửi file qua, suy cho cùng diễn đàn vô cùng tài nguyên hay được đóng góp từ các chú đi trước, tuổi trẻ chỉ cần hưởng thụ thành quả mà thôi. hahaMình cũng có file này, chưa kịp gửi là Bác gửi trước rồi.
Bác biết code thì còn sửa được, em không biết nên cái nào tương tự thì mới làm được thôi.Vậy thời buổi này đua nhau tìm kiếm và copy paste chỉnh sửa cho phù hợp với dữ liệu rồi lưu gửi file qua, suy cho cùng diễn đàn vô cùng tài nguyên hay được đóng góp từ các chú đi trước, tuổi trẻ chỉ cần hưởng thụ thành quả mà thôi. haha
Nếu dùng hàm thì thử cái này, chưa kiểm tra có trùng không?Chào các anh chị trong diễn đàn,
Em có một bài tập muốn nhờ các anh chị giúp đỡ, mong được hỗ trợ ạ
- Điền một số ngẫu nhiên từ 1 tới 59 vào 6 ô liền nhau bất kì như dưới, sao cho 6 số này không số nào trùng nhau?
- View attachment 215890
=IFERROR(LARGE(ROW(INDIRECT(1&":"&59))*NOT(COUNTIF($B$7:B7,ROW(INDIRECT(1&":"&59)))),RANDBETWEEN(1,59-1-ROW(A1)+2)),"")
Bạn haha hơi sớm. Tuổi trẻ chỉ cần hưởng thụ thì chỉ được cái phần thô sơ và lỗi thời của bọn đi trước thôi.Vậy thời buổi này đua nhau tìm kiếm và copy paste chỉnh sửa cho phù hợp với dữ liệu rồi lưu gửi file qua, suy cho cùng diễn đàn vô cùng tài nguyên hay được đóng góp từ các chú đi trước, tuổi trẻ chỉ cần hưởng thụ thành quả mà thôi. haha
Cho nên được học như bài 8 của bácBạn haha hơi sớm. Tuổi trẻ chỉ cần hưởng thụ thì chỉ được cái phần thô sơ và lỗi thời của bọn đi trước thôi.
Lúc tìm kiếm và copy paste chỉnh sửa cho phù hợp, "tuổi trẻ" cũng cần phải tìm hiểu nguyên lý, và như vậy mới có thể cải tiến theo thời đại.
Code ở bài #2 phải dùng On Error là vì lúc viết code đó, người viết chưa nắm hết cách hoạt động của Dictionary.
Đơn giản là hàm add bị lỗi nếu key đã có sẵn, và vì vậy phải bẫy lỗi.
Mấy năm sau này, GPE rành hơn về Dictionary nên biết rằng hàm gán item cho key có thể mặc định add nếu key chưa có.
Vì vậy, nếu sửa dòng:
.Add Int(Rnd() * (Top - Bottom + 1)) + Bottom, ""
Thành:
.Item( Int(Rnd() * (Top - Bottom + 1)) + Bottom) = ""
Thì sẽ không phải bẫy lỗi.
cái này C++ 5 dòng là chạy như Vietlot luon.Bạn haha hơi sớm. Tuổi trẻ chỉ cần hưởng thụ thì chỉ được cái phần thô sơ và lỗi thời của bọn đi trước thôi.
Lúc tìm kiếm và copy paste chỉnh sửa cho phù hợp, "tuổi trẻ" cũng cần phải tìm hiểu nguyên lý, và như vậy mới có thể cải tiến theo thời đại.
Code ở bài #2 phải dùng On Error là vì lúc viết code đó, người viết chưa nắm hết cách hoạt động của Dictionary.
Đơn giản là hàm add bị lỗi nếu key đã có sẵn, và vì vậy phải bẫy lỗi.
Mấy năm sau này, GPE rành hơn về Dictionary nên biết rằng hàm gán item cho key có thể mặc định add nếu key chưa có.
Vì vậy, nếu sửa dòng:
.Add Int(Rnd() * (Top - Bottom + 1)) + Bottom, ""
Thành:
.Item( Int(Rnd() * (Top - Bottom + 1)) + Bottom) = ""
Thì sẽ không phải bẫy lỗi.
Thiệt ra code bài #2 vẫn còn thiếu 1 chỗ mà tôi chưa nói ra. Cố tìm thử.Cho nên được học như bài 8 của bác
hi hi.... Bác @VetMini không biết được đâu, cháu biết roài.Thiệt ra code bài #2 vẫn còn thiếu 1 chỗ mà tôi chưa nói ra. Cố tìm thử.
Thật hay ảo vậy bạn?cái này C++ 5 dòng là chạy như Vietlot luon.
Thật hay ảo không phải là vấn đề.Thật hay ảo vậy bạn?
Có khả năng Code chạy từ sáng tới chiều chưa xongThiệt ra code bài #2 vẫn còn thiếu 1 chỗ mà tôi chưa nói ra. Cố tìm thử.
Chắc bác định nói tới RandomizeThiệt ra code bài #2 vẫn còn thiếu 1 chỗ mà tôi chưa nói ra. Cố tìm thử.
cái này C++ 5 dòng là chạy như Vietlot luon.
Lời hứa gió bay.Xin chân thành cảm ơn = Xin chân thành cảm ơn + X ( X mình sẽ công bố sau )
Sub A_9Dong()
Dim i, Chuoi As String
Randomize
Do While UBound(Split(Application.Trim(Chuoi))) < 5
i = Fix(Rnd() * 60)
If InStr(" " & Chuoi & " ", " " & i & " ") = 0 Then Chuoi = Chuoi & " " & i
Loop
Range("A1").Resize(1, 6) = Split(Application.Trim(Chuoi))
End Sub
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 1
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 2