Hiện thông báo khi thấy giá trị trong ô có số bị lặp (1 người xem)

Liên hệ QC

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

Vũ Hải Sơn

Thành viên chính thức
Tham gia
12/10/18
Bài viết
66
Được thích
13
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

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 đính kèm

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 đỡ ạ!
 
Bấm CSE tiếp
Mã:
=MAX(IFERROR(--MID(A4;ROW($A$1:$A$16);1);0))
Đã nói CSE thớt không hiểu mờ.
Nếu không nói rõ ra CSE như thế nào thì nên dùng hàm mảng tự động (gợi ý: Aggregate)

(hầu hết dân chơi hàm mảng đều đã tốt nghiệp khoá aggregate hết rồi)
 
Chính vì không hiểu mới cho làm đi làm lại làm nhiều trường hợp rồi sẽ hiểu thôi.
Đưa luôn hàm AGGREGATE sợ hóc xương
Mã:
=AGGREGATE(14;6;--MID(A4;ROW($A$1:$A$16);1);1)
Copy công thức từ a đến z lấy gì hóc? Đã nói là dân cẩu thả mờ. Chỉ không hiểu chỉ dẫn thôi, chứ công thức cần gì hiểu.
Gặp dân này thì có cái gì chỉ cần copy/paste cứ việc đưa hết lên, không cần phải ngại. Trước mắt thấy CSE là hóc rồi đấy.
 
Bấm CSE tiếp
Mã:
=MAX(IFERROR(--MID(A4;ROW($A$1[SIZE=16px]ũng ví dụ đó mình tổng hợp lại và bạn viết giúp mình công thức tổng quát nhé[/SIZE]
[/QUOTE]

Bấm CSE tiếp
Mã:
=MAX(IFERROR(--MID(A4;ROW($A$1:$A$16);1);0))
Trường hợp dãy số mà chỉ cần có 1số 0 cũng sẽ báo nhập lại. Mình tổng hợp lại đề bài. Bạn làm giúp nhé. Nếu phiếu nhập vào chỉ cần có 1 số 0 hoặc có số bất kỳ lặp lại hoặc giá trị lớn nhất lớn hơn 1 số quy định là ví dụ là 6 thì trả về kết quả là Nhập lại, còn lại sẽ là hợp lệ. M ko biết gộp coong thức của bạn sao cho ra kết quả đúng. Bạn hỗ trợ với ạ! Cảm ơn bạn thật nhiều!
 
Thì nối thêm số 0 vào coi như mặc định nó có 1 số 0 rồi, chỗ nào là A4 thì thay bằng A4&"0"
Mình tổng hợp lại đề bài
Bạn có biết hai cái mình hỏi nó sẽ có rất nhiều cách làm khác nhau không, nếu bạn nói đủ từ đầu chắc có cách làm khác từ lâu rồi đâu phải lòng vòng từng công thức một vậy.
Nản mình không tham gia nữa
 
Thì nối thêm số 0 vào coi như mặc định nó có 1 số 0 rồi, chỗ nào là A4 thì thay bằng A4&"0"

Bạn có biết hai cái mình hỏi nó sẽ có rất nhiều cách làm khác nhau không, nếu bạn nói đủ từ đầu chắc có cách làm khác từ lâu rồi đâu phải lòng vòng từng công thức một vậy.
Nản mình không tham gia nữa
Bạn thông cảm, khi mình làm, mình mới nhận ra vấn đề phât sinh. Giúp mình trót đi bạn !
Bài đã được tự động gộp:

Bạn thông cảm, khi mình làm, mình mới nhận ra vấn đề phât sinh. Giúp mình trót đi bạn !
Mình đã thử nối chuỗi với 0. Nhưng kết quả lại không ra
 

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

Back
Top Bottom