KhanhbkPro
Thành viên mới
- Tham gia
- 19/9/09
- Bài viết
- 10
- Được thích
- 0
Thì sửa lại lại cho đúng ý đồ của bạn thôi: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
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
Ví dụ minh họa sẽ dễ hiểu hơn: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ờ
Sub Test()
Range("C1:C10").Select
Range("C1:C10").Font.Bold = True
Range("C1:C10").Interior.ColorIndex = 3
End Sub
Sub Test()
With Range("C1:C10")
.Select
.Font.Bold = True
.Interior.ColorIndex = 3
End With
End Sub
Dictionary Object là món chuyên về lọc duy nhất trong VBAÀ 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")