Giúp em nâng cấp hàm phát ngẫu nhiên

Liên hệ QC

KhanhbkPro

Thành viên mới
Tham gia
19/9/09
Bài viết
10
Được thích
0
Em sử dụng hàm phát ngẫu nhiên này. Ví dụ phát 20 số ngẫu nhiên từ 1 đến 100, tại sao giá trị trung bình của 20 số lại ko thể nhỏ hơn 25. Help me. thanks very much
 

File đính kèm

Em sử dụng hàm phát ngẫu nhiên này. Ví dụ phát 20 số ngẫu nhiên từ 1 đến 100, tại sao giá trị trung bình của 20 số lại ko thể nhỏ hơn 25. Help me. thanks very much
Thì sửa lại lại cho đúng ý đồ của bạn thôi:
PHP:
Function UniqueRandomNum(ByVal Bottom As Long, ByVal Top As Long, ByVal Amount As Long, ByVal AveCrit As Double)
  Dim Tmp As Long, TmpAve As Double
  Application.Volatile
  On Error Resume Next
  If Amount > Top - Bottom + 1 Then Amount = Top - Bottom + 1
  With CreateObject("Scripting.Dictionary")
    Do
      Tmp = Int(Rnd() * (Top - Bottom + 1)) + Bottom
      If .Count = 0 Then
        TmpAve = Tmp
      Else
        TmpAve = WorksheetFunction.Average(.Keys, Tmp)
      End If
      If Not .Exists(Tmp) And TmpAve <= AveCrit Then .Add Tmp, ""
    Loop Until .Count = Amount
    UniqueRandomNum = WorksheetFunction.Transpose(.Keys)
  End With
End Function
- Quét chọn D1:D20 rồi gõ vào thanh Formula công thức =UniqueRandomNum(1,100,20,25) ---> Tức lấy 20 số ngẫu nhiên không trùng tính từ 1 đến 100 sao cho trung bình cộng của 20 số này <= 25
Gõ hàm trực tiếp vào cell, ra kết quả luôn, khỏi cần bấm nút luôn
 

File đính kèm

Upvote 0
Cảm ơn anh rất nhiều. Anh có tài liệu liên quan đến lệnh With...... End With ko. Cho em tham khảo với. Từ trước đến nay em toàn viết với For, Do...Loop, chưa sử dụng nó bao giờ
 
Upvote 0
Vì em muốn hiểu sâu hơn cách thành lập hàm này. Cảm ơn anh nhiều
 
Upvote 0
Cảm ơn anh rất nhiều. Anh có tài liệu liên quan đến lệnh With...... End With ko. Cho em tham khảo với. Từ trước đến nay em toàn viết với For, Do...Loop, chưa sử dụng nó bao giờ
Ví dụ minh họa sẽ dễ hiểu hơn:
- Code 1:
PHP:
Sub Test()
  Range("C1:C10").Select
  Range("C1:C10").Font.Bold = True
  Range("C1:C10").Interior.ColorIndex = 3
End Sub
- Code 2: Sửa lại code 1, dùng With... End With
PHP:
Sub Test()
  With Range("C1:C10")
    .Select
    .Font.Bold = True
    .Interior.ColorIndex = 3
  End With
End Sub
Có thấy gần giống như là ĐẶT THÀNH THỪA SỐ CHUNG trong toán không?
Tóm lại: Tham gia diễn đàn này thường xuyên, bạn sẽ tích lũy được kiến thức thôi
 
Upvote 0
À hiểu rồi, cái này giống với cách tạo kiểu dữ liệu do người dùng tự lập. Em hay thường xuyên ghé thăm diễn đàn lắm

Em vẫn chưa hiểu về cái này. ANh giải thích dùm em một tí dc ko

CreateObject
("Scripting.Dictionary")
 
Upvote 0
À hiểu rồi, cái này giống với cách tạo kiểu dữ liệu do người dùng tự lập. Em hay thường xuyên ghé thăm diễn đàn lắm

Em vẫn chưa hiểu về cái này. ANh giải thích dùm em một tí dc ko

CreateObject
("Scripting.Dictionary")
Dictionary Object là món chuyên về lọc duy nhất trong VBA
Bạn nhập từ khóa Dictionary vào khung tìm kiếm của GPE ---> Có cả đống
 
Upvote 0
Web KT

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

Back
Top Bottom