minh cần các bạn giúp với điều kiện nhập liệu trong excel?

Liên hệ QC

SQHV2020

Thành viên mới
Tham gia
5/4/20
Bài viết
2
Được thích
0
Điều kiện cho ô nhập liệu là 1 dãy số có tối đa 8 chữ số nhưng các số này khác nhau, không được trùng nhau
VD: 12345678 nếu nhập 12234567 là không cho nhập
 
Function DoKyTuLap(s As String) As Integer
' ham do chuoi s va tra ve vi tri ky tu co lap lai (xuat hien hon 1 lần)
' neu co nhieu ky tu lap lai thi ham chi tra ve truong hop dau tien
' neu khong co ky tu lap lai thi ham tra ve 0
For DoKyTuLap = 1 To Len(s) - 1
If InStr(DoKyTuLap+1, s, Mid(s, DoKyTuLap, 1)) Then Exit For
Next DoKyTuLap
If DoKyTuLap >= Len(s) Then DoKyTuLap = 0
End Function

Muốn dùng trong sự kiện WorkSheet_Change thì nhét code này vào:

KTLap = DoKyTuLap(Target.Value)
If KTLapThen MsgBox("ky tu " & Mid(Target.Value, KTLap, 1) & " lap lai")

Muốn dùng trong worksheet thì đại khái như vầy:
=IF(DoKyTuLap($A1), "hổng được", "được")
 
Upvote 0
Function DoKyTuLap(s As String) As Integer
' ham do chuoi s va tra ve vi tri ky tu co lap lai (xuat hien hon 1 lần)
' neu co nhieu ky tu lap lai thi ham chi tra ve truong hop dau tien
' neu khong co ky tu lap lai thi ham tra ve 0
For DoKyTuLap = 1 To Len(s) - 1
If InStr(DoKyTuLap+1, s, Mid(s, DoKyTuLap, 1)) Then Exit For
Next DoKyTuLap
If DoKyTuLap >= Len(s) Then DoKyTuLap = 0
End Function

Muốn dùng trong sự kiện WorkSheet_Change thì nhét code này vào:

KTLap = DoKyTuLap(Target.Value)
If KTLapThen MsgBox("ky tu " & Mid(Target.Value, KTLap, 1) & " lap lai")

Muốn dùng trong worksheet thì đại khái như vầy:
=IF(DoKyTuLap($A1), "hổng được", "được")
cám ơn ban. Minh thu xem sao
 
Upvote 0
Còn 1 iêu cầu nữa mà chưa thỏa; đó là nhập hơn 8 số vẫn sẵn sàng trả kết quả;

Mà hình như hàm chấp nhận ký tự luôn (?)
Tôi là dân chuyên quản trị nên luôn luôn làm việc theo châm ngôn "chia để trị". Rất ít khi tôi viết một hàm làm đủ thứ.

=IF(And(IsText($A1),Len($A1)>8,DoKyTuLap($A1)>0), "hổng được", "được")

Hoặc viết hàm bao:

Function KhongDat(s As String) As Boolean
KhongDat = (Not IsNumeric(s)) Or (Len(s) > 8) Or (DoKyTuLap(s)>0)
End Function
 
Upvote 0
Web KT

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

Back
Top Bottom