Hiện thông báo khi thấy giá trị trong ô có số bị lặp

Liên hệ QC

Vũ Hải Sơn

Thành viên chính thức
Tham gia
12/10/18
Bài viết
55
Được thích
12
Mình có một cột có chứa các ký tự số. Giờ mình muốn dùng hàm kiểm tra nếu ô đó có giá trị số bị lặp lại VD như 1134, 1233 thì sẽ đưa ra môt kết quả thông báo như trong file đính kèm. Nhờ mọi người giúp đỡ ạ!
 

File đính kèm

  • file mẫu.xlsx
    9.2 KB · Đọc: 22
Mình có một cột có chứa các ký tự số. Giờ mình muốn dùng hàm kiểm tra nếu ô đó có giá trị số bị lặp lại VD như 1134, 1233 thì sẽ đưa ra môt kết quả thông báo như trong file đính kèm. Nhờ mọi người giúp đỡ ạ!
Nếu dùng VBA thì thử code dưới đây
Mã:
Option Explicit

Sub abcd()
Dim nguon, so, kq
Dim i, j, k
With Sheet1
    nguon = .Range("A4:A11")
    ReDim kq(1 To UBound(nguon), 1 To 1)
    For i = 1 To UBound(nguon)
        ReDim so(9)
        For j = 1 To Len(nguon(i, 1))
            k = CInt(Mid(nguon(i, 1), j, 1))
            If so(k) = 1 Then
                kq(i, 1) = "Nhap lai"
                Exit For
            Else
                so(k) = 1
                kq(i, 1) = "Hop le"
            End If
        Next j
    Next i
    .Range("B4:B11").ClearContents
    .Range("B4:B11") = kq
End With
End Sub
 
Thông báo: "Hơi hơi hợp

Trường hợp nhập 121 thông báo như thế nào?
cũng vẫn thông báo nhập lại. Bạn nghiên cứu hỗ trợ mình nhé. Mình đang cần chỗ này mà bí quá.
Bài đã được tự động gộp:

Nếu dùng VBA thì thử code dưới đây
Mã:
Option Explicit

Sub abcd()
Dim nguon, so, kq
Dim i, j, k
With Sheet1
    nguon = .Range("A4:A11")
    ReDim kq(1 To UBound(nguon), 1 To 1)
    For i = 1 To UBound(nguon)
        ReDim so(9)
        For j = 1 To Len(nguon(i, 1))
            k = CInt(Mid(nguon(i, 1), j, 1))
            If so(k) = 1 Then
                kq(i, 1) = "Nhap lai"
                Exit For
            Else
                so(k) = 1
                kq(i, 1) = "Hop le"
            End If
        Next j
    Next i
    .Range("B4:B11").ClearContents
    .Range("B4:B11") = kq
End With
End Sub
chỗ mình hỏi thì nó chỉ là một phần của cả bài toán thôi. thế nên mình mong bạn hỗ trợ mình dùng hàm để mình kết hợp với hàm khác cho cả bài toán của mình.
 
Công thức khủng thì có kết hợp nổi với hàm khác hôn?

Nếu muốn gả bán kết hợp gì gì đó thì phải dùng UDF.
Hàm chỉ cần duyệt từ đầu đến cuói chuỗi. Thấy ký tự lặp lại thì thoát.
 
Lần chỉnh sửa cuối:
M chỉ vướng chỗ này thôi bạn à. Chỗ này gỡ dc thì bài toán của m sẽ trọn vẹn tất cả các trường hợp có thể xảy ra.
 
Lại được bữa lẩu rồi anh ơi.
Cả bài toán của m là như vậy này bạn. M nhập số phiếu vào và nó cho ra kết quả, phiếu đủ, phiếu thiếu, phiếu ko hợp lệ. Còn trường hợp m hỏi là có khả năng ng nhập vô tình nhập số phiếu có số bị lặp trong chuỗ số đó..
 
Cả bài toán của m là như vậy này bạn. M nhập số phiếu vào và nó cho ra kết quả, phiếu đủ, phiếu thiếu, phiếu ko hợp lệ. Còn trường hợp m hỏi là có khả năng ng nhập vô tình nhập số phiếu có số bị lặp trong chuỗ số đó..
Mình đang bảo Anh VetMini chứ bài của bạn mình không biết gì.
 
Nếu dùng VBA thì thử code dưới đây
Mã:
Option Explicit

Sub abcd()
Dim nguon, so, kq
Dim i, j, k
With Sheet1
    nguon = .Range("A4:A11")
    ReDim kq(1 To UBound(nguon), 1 To 1)
    For i = 1 To UBound(nguon)
        ReDim so(9)
        For j = 1 To Len(nguon(i, 1))
            k = CInt(Mid(nguon(i, 1), j, 1))
            If so(k) = 1 Then
                kq(i, 1) = "Nhap lai"
                Exit For
            Else
                so(k) = 1
                kq(i, 1) = "Hop le"
            End If
        Next j
    Next i
    .Range("B4:B11").ClearContents
    .Range("B4:B11") = kq
End With
End Sub
Đoạn code của bạn gợi ý cho mình sẽ sửa lại cách bố trí cái bảng dữ liệu của mình. Mình sửa lại đề bài như thế này nhé. Khi mình nhập dữ liệu vào ô và enter. Nó sẽ kiểm tra cứ có thấy 1 số trong chuỗi số nhập vào mà xuất hiện lặp lại thì sẽ xuất hiện cảnh báo ngay và ko cho nhập. Ví dụ nhu 11234, 12335, 23455...
Bạn giúp m với nhé!
 
...

chỗ mình hỏi thì nó chỉ là một phần của cả bài toán thôi. thế nên mình mong bạn hỗ trợ mình dùng hàm để mình kết hợp với hàm khác cho cả bài toán của mình.
Bạn chạy thử công thức dưới đây
Mã:
B4=IF(MAX(INDEX(LEN(A4)-LEN(SUBSTITUTE(A4,ROW($A$1:$A$9),"")),,))>1,"Nhập lại","Hợp lệ")
 
Bạn chạy thử công thức dưới đây
Đoạn ROW($A$1:$A$9) có khi thêm chút vì chưa lường trường hợp số 0, thêm ROW($A$1:$A$10)-1
Thêm một cách cho vui (đúng sai hên xui --=0 --=0 --=0 )
Mã:
=IF(LEN(A4)=SUMPRODUCT((IFERROR(FIND(ROW($A$1:$A$10)-1;A4);0)>0)*1);"Hợp lệ";"Nhập lại")
Kết thúc công thức bấm CSE
 
Đoạn ROW($A$1:$A$9) có khi thêm chút vì chưa lường trường hợp số 0, thêm ROW($A$1:$A$10)-1
Thêm một cách cho vui (đúng sai hên xui --=0 --=0 --=0 )
Mã:
=IF(LEN(A4)=SUMPRODUCT((IFERROR(FIND(ROW($A$1:$A$10)-1;A4);0)>0)*1);"Hợp lệ";"Nhập lại")
Kết thúc công thức bấm CSE
Mình đã làm theo như 2 công thức bạn gửi trong file mẫu và cho kết quả khác nhau. Công thức sau thì kết quả không đúng. Bạn xem thêm cho mình trường hợp nhập có số 0 cũng báo là nhập lại nhé! Bạn có thể giải thích một chút cho mình chỗ Row($A$1:$A$10) và sao mình ko copy công thức mà các ô dưới vẫn tự nhảy kết quả nhé. Mình cũng muốn hiểu về nó để có thể áp dụng cho những bài toán khác. Cảm ơn bạn nhiều lăm!
 

File đính kèm

  • file mẫu.xlsx
    10.4 KB · Đọc: 6

File đính kèm

  • file mẫu (1).xlsx
    10.9 KB · Đọc: 4
Công thức sau là mảng mà kết thúc công thức thay vì Enter bấm ctrl shift enter
...
Thớt khoái viết tắt nhưng không có nghĩa là biết đọc khi người khác viết tắt. (bởi vậy tôi mới chết giấc)

Đoạn ROW($A$1:$A$9) có khi thêm chút vì chưa lường trường hợp số 0, thêm ROW($A$1:$A$10)-1
Thêm một cách cho vui (đúng sai hên xui --=0 --=0 --=0 )
Mã:
=IF(LEN(A4)=SUMPRODUCT((IFERROR(FIND(ROW($A$1:$A$10)-1;A4);0)>0)*1);"Hợp lệ";"Nhập lại")
Kết thúc công thức bấm CSE
Câu này bị bỏ qua bởi vì:
1. Thớt quá cẩu thả, không đọc đến dòng ấy.
2. Không hiểu CSE là gì.
 
Thớt khoái viết tắt nhưng không có nghĩa là biết đọc khi người khác viết tắt. (bởi vậy tôi mới chết giấc)


Câu này bị bỏ qua bởi vì:
1. Thớt quá cẩu thả, không đọc đến dòng ấy.
2. Không hiểu CSE là gì.

Thớt khoái viết tắt nhưng không có nghĩa là biết đọc khi người khác viết tắt. (bởi vậy tôi mới chết giấc)


Câu này bị bỏ qua bởi vì:
1. Thớt quá cẩu thả, không đọc đến dòng ấy.
2. Không hiểu CSE là

Thớt khoái viết tắt nhưng không có nghĩa là biết đọc khi người khác viết tắt. (bởi vậy tôi mới chết giấc)


Câu này bị bỏ qua bởi vì:
1. Thớt quá cẩu thả, không đọc đến dòng ấy.
2. Không hiểu CSE là gì.
Nhờ các cao nhân chỉ chỗ này nữa với. Mình muốn tìm giá trị lớn nhất trong cái dãy số ví dụ 1456 bằng mấy để mình làm phép so sánh. Nhờ mọi người giúp đỡ ạ!
 
Web KT
Back
Top Bottom