Hỏi về hàm random trong VBA (1 người xem)

  • Thread starter Thread starter aviaiva
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

aviaiva

Thành viên thường trực
Tham gia
17/8/08
Bài viết
316
Được thích
242
các bác giúp em bài chuyển số vào trong các ô trống một cách ngẫu nhiên
yêu cầu chi tiết em đính kèm trong file
em xin được cảm ơn trước
 

File đính kèm

Lần chỉnh sửa cuối:
Xem trong file thấy hàng 1 có 5 số từ 1 đến 5, với 15 ô, yêu cầu lặp tối đa 2 lần => bài toán vô nghiệm.
Hoặc là chưa hiểu hết ý của bạn muốn gì???
 
Upvote 0
Xem trong file thấy hàng 1 có 5 số từ 1 đến 5, với 15 ô, yêu cầu lặp tối đa 2 lần => bài toán vô nghiệm.Hoặc là chưa hiểu hết ý của bạn muốn gì???
tối đa 2 lần trong 5 ô trống của 1 range, tối thiểu 1 lần trong 5 ô trống của 1 range VD: range( b:f) 1 2 2 3 5 range(h:l) 4-3-5-1-2 ...
 
Upvote 0
Bạn xài thử cặp macro này xem sao:

Mã:
Option Explicit
[b]Sub SoNgau()[/b]
 Dim Jj As Long, Ww As Byte
 Dim StrC As String
 
 Randomize:                 Jj = 1 + 2 * Rnd \ 1
 With [x5]
    .Value = .Offset(, -Jj).Value
 End With
 For Jj = 3 To 6 Step 2
    For Ww = 20 To 24
        StrC = StrC & Right("00" & Cells(Jj, Ww).Value, 2)
    Next Ww
    XuLiSo StrC, Jj
    StrC = ""
 Next Jj
 [x5].Value = ""
[b]End Sub[/b]
Mã:
[b]Sub XuLiSo(StrC As String, Rws As Long)[/b]
 Dim Jj As Long, Ff As Long, VTr As Byte
 Dim Cls As Range
 
 Set Cls = Union(Cells(Rws, "B"), Cells(Rws, "H"), Cells(Rws, "n"))
 
 For Ff = 1 To (Cells.Columns.Count * Rws)
    Randomize:              Jj = 1 + 8 * Rnd() \ 1
    If Jj Mod 2 = 0 Then Jj = Jj + 1
    If Jj = 9 Then
        StrC = Right(StrC, 2) & Left(StrC, 8)
    Else
        StrC = Mid(StrC, Jj, 10) & Left(StrC, Jj - 1)
    End If
    If Not Intersect(Cells(Ff), Cls) Is Nothing Then
        Cells(Ff).Value = Left(StrC, 2)
        Cells(Ff + 1).Value = Mid(StrC, 3, 2)
        Cells(Ff + 2).Value = Mid(StrC, 5, 2)
        Cells(Ff + 3).Value = Mid(StrC, 7, 2)
        Cells(Ff + 4).Value = Mid(StrC, 9, 2)
    End If
 Next Ff[b]
End Sub[/b]

Chu1 í: Mình đã chuyển các số liệu nguồn sang fải 1 cột rồi đó nha.
 
Upvote 0
mình không hiểu đoạn code Jj = 1 + 2 * Rnd \ 1
h
àm Rnd\1 có ý nghĩa thế nào? đã tìm hiểu trên google nhưng không có kết quả
mình mới tìm hiểu về Vba nhưng bấm F1 và F2 trong vba đều không nói rõ về Rnd\ có ý nghĩa thế nào?
xin hỏi mọi người cách tìm hiểu nếu gặp phải hàm mà mình không biết
 
Lần chỉnh sửa cuối:
Upvote 0
mình không hiểu đoạn code Jj = 1 + 2 * Rnd \ 1
h
àm Rnd\1 có ý nghĩa thế nào? đã tìm hiểu trên google nhưng không có kết quả
mình mới tìm hiểu về Vba nhưng bấm F1 và F2 trong vba đều không nói rõ về Rnd\ có ý nghĩa thế nào?
xin hỏi mọi người cách tìm hiểu nếu gặp phải hàm mà mình không biết

Rnd() là hàm tạo & cho ta 1 số ngẫu nhiên từ 0.0 cho tới .99999(9)

"\" là toán tử trong VBA; Nó tương đương với hàm lấy số nguyên Int(Num)

(Mọi chuyện này bạn có thể thử nghiệm thông qua cửa sổ Immediate, nha!)

Chúc ngày vui & kết quả mĩ mãn!
 
Upvote 0
Web KT

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

Back
Top Bottom