Nhờ a/c viết hàm tạo kí tự ngẫu nhiên

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

lala_qn

Thành viên tiêu biểu
Tham gia
2/5/09
Bài viết
598
Được thích
17
Nghề nghiệp
chưa ổn định
Chào a/c !
Nhờ a/c viết dùm e hàm tạo chuỗi kí tự ngẫu nhiên với 2 điều kiện sau:
- Bao gồm kí tự là chữ ngẫu nhiên trong chuỗi , ngẫu nhiên chữ thường và hoa
- Chuỗi kí tự ngẫu nhiên số lượng kí tự trong khoảng từ 5 đến 7 kí tự
e cảm ơn nhiều ạ !
 
Lần chỉnh sửa cuối:
Chào a/c !
Nhờ a/c viết dùm e hàm tạo chuỗi kí tự ngẫu nhiên với 2 điều kiện sau:
- Bao gồm kí tự số và chữ ngẫu nhiên trong chuỗi
- Chuỗi kí tự ngẫu nhiên số lượng kí tự trong khoảng từ 5 đến 8 kí tự
e cảm ơn nhiều ạ !
CT này tại A1!!!!!!
Mã:
A1=CHOOSE(RANDBETWEEN(1,3),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),CHAR(RANDBETWEEN(97,122)))&CHOOSE(RANDBETWEEN(1,3),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),CHAR(RANDBETWEEN(97,122)))&CHOOSE(RANDBETWEEN(1,3),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),CHAR(RANDBETWEEN(97,122)))&CHOOSE(RANDBETWEEN(1,3),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),CHAR(RANDBETWEEN(97,122)))&CHOOSE(RANDBETWEEN(1,3),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),CHAR(RANDBETWEEN(97,122)))&CHOOSE(RANDBETWEEN(1,4),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),"",CHAR(RANDBETWEEN(97,122)))&CHOOSE(RANDBETWEEN(1,4),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),"",CHAR(RANDBETWEEN(97,122)))&CHOOSE(RANDBETWEEN(1,4),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),"",CHAR(RANDBETWEEN(97,122)))
Rồi fill xuống tuỳ ý
Sau đó bấm F9 chuỗi sẽ thay đổi ngẫu nhiên!!!
P/s: CT này dài, bạn có thể sử dụng Name để CT đơn giản hơn!!!
 
1 cách khác để bạn tham khảo: Xài hàm tự tạo sau đây:
PHP:
Function ChuoiNgau()
 Dim  DD As Byte, Tmp As Byte
 Dim Chu As String
 
 Randomize
 DD = 5 + 4 * Rnd() \ 1
 Do
    Tmp = 48 + 42 * Rnd()
    If Tmp < 65 Then
        If Tmp > 57 Then Tmp = Tmp - 8
        ChuoiNgau = ChuoiNgau & CStr(Chr(Tmp))
    ElseIf Tmp > 64 Then
        ChuoiNgau = ChuoiNgau & Chr(Tmp)
    End If
    If Len(ChuoiNgau) = DD Then Exit Function
 Loop
 End Function
 
Lần chỉnh sửa cuối:
Thay đổi một chút
Function ChuoiNgau()
Dim DD As Byte, Tmp As Byte
Dim Chu As String

Randomize
DD = 5 + 3 * Rnd() \ 1
Do
Tmp = 48 + 74 * Rnd()
If Tmp < 58 Then
ChuoiNgau = ChuoiNgau & Chr(Tmp)
ElseIf (Tmp > 64 And Tmp < 91) Or Tmp > 96 _
Then ChuoiNgau = ChuoiNgau & Chr(Tmp)
End If
If Len(ChuoiNgau) = DD Then Exit Function
Loop
End Function
 
CT này tại A1!!!!!!
Mã:
A1=CHOOSE(RANDBETWEEN(1,3),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),CHAR(RANDBETWEEN(97,122)))&CHOOSE(RANDBETWEEN(1,3),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),CHAR(RANDBETWEEN(97,122)))&CHOOSE(RANDBETWEEN(1,3),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),CHAR(RANDBETWEEN(97,122)))&CHOOSE(RANDBETWEEN(1,3),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),CHAR(RANDBETWEEN(97,122)))&CHOOSE(RANDBETWEEN(1,3),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),CHAR(RANDBETWEEN(97,122)))&CHOOSE(RANDBETWEEN(1,4),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),"",CHAR(RANDBETWEEN(97,122)))&CHOOSE(RANDBETWEEN(1,4),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),"",CHAR(RANDBETWEEN(97,122)))&CHOOSE(RANDBETWEEN(1,4),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),"",CHAR(RANDBETWEEN(97,122)))
Rồi fill xuống tuỳ ý
Sau đó bấm F9 chuỗi sẽ thay đổi ngẫu nhiên!!!
P/s: CT này dài, bạn có thể sử dụng Name để CT đơn giản hơn!!!
làm thử thấy khả năng có 5 ký tự quá nhỏ
 
làm thử thấy khả năng có 5 ký tự quá nhỏ
Muốn tỷ lệ 5 kí tự tăng lên cũng dễ mà, mình chỉnh CT lại!!!!
Mã:
A1==CHOOSE(RANDBETWEEN(1,3),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),CHAR(RANDBETWEEN(97,122)))&CHOOSE(RANDBETWEEN(1,3),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),CHAR(RANDBETWEEN(97,122)))&CHOOSE(RANDBETWEEN(1,3),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),CHAR(RANDBETWEEN(97,122)))&CHOOSE(RANDBETWEEN(1,3),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),CHAR(RANDBETWEEN(97,122)))&CHOOSE(RANDBETWEEN(1,3),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),CHAR(RANDBETWEEN(97,122)))&CHOOSE(RANDBETWEEN(1,10),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),"",CHAR(RANDBETWEEN(97,122)),"","","","","","","")&CHOOSE(RANDBETWEEN(1,10),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),"",CHAR(RANDBETWEEN(97,122)),"","","","","","","")&CHOOSE(RANDBETWEEN(1,10),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),"",CHAR(RANDBETWEEN(97,122)),"","","","","","","")
 
Muốn tỷ lệ 5 kí tự tăng lên cũng dễ mà, mình chỉnh CT lại!!!!
Mã:
A1==CHOOSE(RANDBETWEEN(1,3),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),CHAR(RANDBETWEEN(97,122)))&CHOOSE(RANDBETWEEN(1,3),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),CHAR(RANDBETWEEN(97,122)))&CHOOSE(RANDBETWEEN(1,3),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),CHAR(RANDBETWEEN(97,122)))&CHOOSE(RANDBETWEEN(1,3),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),CHAR(RANDBETWEEN(97,122)))&CHOOSE(RANDBETWEEN(1,3),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),CHAR(RANDBETWEEN(97,122)))&CHOOSE(RANDBETWEEN(1,10),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),"",CHAR(RANDBETWEEN(97,122)),"","","","","","","")&CHOOSE(RANDBETWEEN(1,10),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),"",CHAR(RANDBETWEEN(97,122)),"","","","","","","")&CHOOSE(RANDBETWEEN(1,10),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),"",CHAR(RANDBETWEEN(97,122)),"","","","","","","")
Bây giờ khả năng 8 ký tự bị hơi ít
 
Public Function chuoi()
n = Application.WorksheetFunction.RandBetween(5, 8)
i = 1
Dim text, texti As String
Do Until i > n
u = Application.WorksheetFunction.RandBetween(0, 2)
If u = 0 Then
texti = Application.WorksheetFunction.RandBetween(0, 9)
Else
texti = Chr(Application.WorksheetFunction.RandBetween(65, 90))
End If
text = text & texti
i = i + 1
Loop
chuoi = text
End Function
 
Lần chỉnh sửa cuối:
Góp thêm một cách ...
Để gọn công thức, đặt name A:
=MID("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",RANDBETWEEN(1,36),1)
Công thức ngẫu nhiên:
=A&A&A&A&A&CHOOSE(RANDBETWEEN(1,4),"",A,A&A,A&A&A)
 
Góp thêm một cách ...
Để gọn công thức, đặt name A:
=MID("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",RANDBETWEEN(1,36),1)
Công thức ngẫu nhiên:
=A&A&A&A&A&CHOOSE(RANDBETWEEN(1,4),"",A,A&A,A&A&A)
làm tương tự
đặt name A:
=MID("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",RANDBETWEEN(1,62),1)
Công thức ngẫu nhiên:
=LEFT(A&A&A&A&A&A&A&A,RANDBETWEEN(5,8))
 
cảm ơn a/c đã nhiệt tình giúp đỡ ạ
e có 1 chút thay đổi trong điều kiện là trong chuỗi từ 5-7 kí tự là chữ ko có số, và các chữ sẽ ngẫu nhiên chữ thường và chữ hoa trong chuỗi ạ, nhờ a/c viết dùm hàm này
 
cảm ơn a/c đã nhiệt tình giúp đỡ ạ
e có 1 chút thay đổi trong điều kiện là trong chuỗi từ 5-7 kí tự là chữ ko có số, và các chữ sẽ ngẫu nhiên chữ thường và chữ hoa trong chuỗi ạ, nhờ a/c viết dùm hàm này
cứ theo các công thức trên, và bạn tự sửa lại thì sẽ được
 
Mình lại tò mò & muốn hỏi chủ topic rằng tạo chuỗi ngẫu này nhằm mục đích gì?

Một khi biết mục đích cụ thể, có thể có thành viên góp í cho bạn những vấn đề liên quan khác & khả dĩ hơn chăng?
 
CT này tại A1!!!!!!
Mã:
A1=CHOOSE(RANDBETWEEN(1,3),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),CHAR(RANDBETWEEN(97,122)))&CHOOSE(RANDBETWEEN(1,3),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),CHAR(RANDBETWEEN(97,122)))&CHOOSE(RANDBETWEEN(1,3),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),CHAR(RANDBETWEEN(97,122)))&CHOOSE(RANDBETWEEN(1,3),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),CHAR(RANDBETWEEN(97,122)))&CHOOSE(RANDBETWEEN(1,3),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),CHAR(RANDBETWEEN(97,122)))&CHOOSE(RANDBETWEEN(1,4),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),"",CHAR(RANDBETWEEN(97,122)))&CHOOSE(RANDBETWEEN(1,4),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),"",CHAR(RANDBETWEEN(97,122)))&CHOOSE(RANDBETWEEN(1,4),CHAR(RANDBETWEEN(65,90)),RANDBETWEEN(0,9),"",CHAR(RANDBETWEEN(97,122)))
Rồi fill xuống tuỳ ý
Sau đó bấm F9 chuỗi sẽ thay đổi ngẫu nhiên!!!
P/s: CT này dài, bạn có thể sử dụng Name để CT đơn giản hơn!!!
e thấy hàm này gần đúng đề bài, có cách nào bỏ kí tự số đi và ngẫu nhiên trong khoảng từ 5-7 kí tự là ok ạ
giúp dùm e với ạ, thanks !
 
nhờ a/c giúp dùm e với ạ, thanks ạ !
 
/(/hờ a/c giúp dùm e với ạ, thanks ạ !
Mình cũng chỉ tập tành công thức như bạn thôi; Theo hướng dẫn của bài trên, bạn làm như sau:

Bước 1: Tạo 2 Names (tên);
Name thứ nhất có tên là gpe với Refers To có nội dung sau: =CHAR(RANDBETWEEN(65,90))
Name thứ 2 có têm là COM với Refers To có nội dung sau: =CHAR(RANDBETWEEN(97,122))

Sau đó chọn 1 ô trống muốn áp đặt hàm & nhập vô công thức sau:
=CHOOSE(RANDBETWEEN(1,2),gpe,COM)&CHOOSE(RANDBETWEEN(1,2),COM,gpe)&CHOOSE(RANDBETWEEN(1,2),gpe,COM)&CHOOSE(RANDBETWEEN(1,2),gpe,CHAR(RANDBETWEEN(97,122)))&CHOOSE(RANDBETWEEN(1,2),gpe,COM)&CHOOSE(RANDBETWEEN(1,3),gpe,"","")&CHOOSE(RANDBETWEEN(1,4),gpe,"","","")

Mong là bạn sẽ thành công như mình!

 
Lần chỉnh sửa cuối:
=CHOOSE(RANDBETWEEN(1,2),gpe,COM)&CHOOSE(RANDBETWEEN(1,2),COM,gpe)&CHOOSE(RANDBETWEEN(1,2),gpe,COM)&CHOOSE(RANDBETWEEN(1,2),gpe,CHAR(RANDBETWEEN(97,122)))&CHOOSE(RANDBETWEEN(1,2),gpe,COM)&CHOOSE(RANDBETWEEN(1,3),gpe,"","")&CHOOSE(RANDBETWEEN(1,4),gpe,"","","")
Mong là bạn sẽ thành công như mình!

chỉ sợ mong muốn ấy thật mong manh !$@!!!$@!!!$@!!
Các công thức ở trên đã rõ ràng , chỉ cần linh động chút là tự sửa được mà chủ thớt còn chưa làm nổi , mà thầy còn dán cái công thức không có thẻ
Mã:
 , bị phát sinh thêm các dấu Space không mong muốn nữa thì  +-+-+-++-+-+-++-+-+-+
 
Sao lại không mong muốn chứ?
Cần mã có độ dài từ 5 đến 7 mà!
 
nhờ a/c giúp dùm e với ạ, thanks ạ !
 
Chắc bạn nên tự làm thôi; Bí thì tìm trên diễn đàn (như cách gán 1 Name như thế nào)
Chứ đọc công thức vậy mà chưa hiểu thì chịu bạn rồi!
 
Web KT

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

Back
Top Bottom