Kiểm tra trùng dữ liệu trong 1 cột (dùng Code)

Liên hệ QC

thanhnhanubnd

Thành viên hoạt động
Tham gia
12/9/08
Bài viết
180
Được thích
29
Nghề nghiệp
Xay dung
Mình có cột F có dữ liệu, bao gồm số và chữ : 1,2, 2a, 3b....
Mình muốn hỏi dùng code thế nào để phát hiện số trùng và hiện Mgsbox thông báo những số trùng đó. Thank
 
bạn tự sửa lại đoạn code này từ tô màu đỏ cho những ô có giá trị giống nhau sang hiển thị thông báo msgbox như bạn cần nhé
 

File đính kèm

  • TestForDups1.zip
    9.5 KB · Đọc: 1,530
Thêm 1 macrro nữa để bạn tham khảo

Chú ý khi dùng: Bạn thêm bên phải liền kề 1 cột trắng, sẽ OK!
PHP:
Option Explicit
Sub TimTrung()
 Dim eRw As Long, Ww As Long:           Dim MyAdd As String
 Dim Rng As Range, sRng As Range
 
 eRw = [f65500].End(xlUp).Row:          Columns("G:G").Clear
 For Ww = 1 To eRw
    With Cells(Ww, "F")
        If .Offset(, 1).Value = "" Then
            Set Rng = .Offset(1).Resize(eRw)
            Set sRng = Rng.Find(.Value, , xlFormulas, xlWhole)
            If Not sRng Is Nothing Then
                MyAdd = sRng.Address
                Do
                    sRng.Offset(, 1) = .Address
                    Set sRng = Rng.FindNext(sRng)
                Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
            End If
        End If
    End With
 Next Ww
End Sub
& sau đây là kết quả sau khi chạy macro:
F | G
An 01|
An 06 |
An 07|
An 08|
An 09 |
Anh 3|
Anh 5|
Anh 9 |
Anh 9| $F$8
An 06|$F$2
An 09|$F$5
An 03|
An 09|$F$5
An 05|
 
Các bạn dùng Macro lằng nhằng lắm, hãy dùng luôn tiện các hàm của Excel ấy:
1. B1: Sắp xếp Data cột theo thứ tự.
2. B2: Dùng hàm Exact là Ok
Ví dụ:

ABHungTRUEHungFALSELanFALSETuanFALSE
Khi đó Tru là trùng dữ liệu, false là không trùng dữ liệu.
 
Giả sử vùng dữ liệu của bạn là a2:a24, bạn dung condition format với công thức
=COUNTIF($A$2:$A$32,A24)>1 (Cho đổi màu nền đỏ chẳng hạn)
Nếu dữ liệu trùng sẽ chuyển nền đỏ và lọc theo số đó là được
 
Chào bạn,

Đoạn code này hay đấy nhưng mà mình muốn mở rộng vùng dữ liệu đến dòng cuối cùng 65536 thì phải sửa đoạn code làm sao ? nếu được viết thêm đoạn code thì trích dữ liệu trùng qua một sheet mới luôn được không vậy bạn ?

Thanks.
Anh Tú.
"Love is beautiful when it's unconclusive".

Ngyên văn bên dưới:
___________________________________________________________________________
bạn tự sửa lại đoạn code này từ tô màu đỏ cho những ô có giá trị giống nhau sang hiển thị thông báo msgbox như bạn cần nhé
Tập tin đính kèm
zip.gif
TestForDups1.zip (9.5 KB, 14 lần tải)
 
Mình có cột F có dữ liệu, bao gồm số và chữ : 1,2, 2a, 3b....
Mình muốn hỏi dùng code thế nào để phát hiện số trùng và hiện Mgsbox thông báo những số trùng đó. Thank
Mình làm code này. Bạn bôi đen vùng muốn kiểm tra. Ấn nút. Những ô bị trùng sẽ bị tô màu đỏ.
PHP:
Sub KiemtraDulieutrung()
Dim cell As Range
For Each cell In Selection
    If WorksheetFunction.CountIf(Selection, cell) > 1 Then cell.Interior.ColorIndex = 3
Next
End Sub

Trong file đính kèm mình có minh họa thêm cách dùng bằng công thức kết hợp với CF. Bạn tham khảo nha.
 

File đính kèm

  • Tim du lieu bi trung bang CF-VBA.xls
    24 KB · Đọc: 735
Ý mình là thế này : Tìm trên toàn bộ cột nào đó, nếu có số trùng thì ko cần bôi đỏ mà chỉ cần hiện mgsbox :
1. Đếm xem có bao nhiêu số trùng nhau.
2. Các số đó là số nào.

ví dụ : 1,2,1,4,5,6,2,5,7 -->

Có 3 số trùng nhau, đó là : 1,2,5.

Thank
 
Mọi người thích dungf marco nhỉ. Lợi thế của Marco là gì vậy ?
 
Ý mình là thế này : Tìm trên toàn bộ cột nào đó, nếu có số trùng thì ko cần bôi đỏ mà chỉ cần hiện mgsbox :
1. Đếm xem có bao nhiêu số trùng nhau.
2. Các số đó là số nào.

ví dụ : 1,2,1,4,5,6,2,5,7 -->

Có 3 số trùng nhau, đó là : 1,2,5.

Thank
Bạn bôi đen vùng cần kiểm tra và bấm nút :
PHP:
Sub KiemtraDulieutrung2()
Dim cell As Range, Str As String, count As Long
Str = "-"
For Each cell In Selection
    If WorksheetFunction.CountIf(Selection, cell) > 1 And InStr(1, Str, cell) = 0 Then
        count = count + 1
        Str = Str & cell & "-"
    End If
Next
MsgBox "Co " & count & " so bi trung. Cac so do la :" & Chr(10) & Str
End Sub
 

File đính kèm

  • Tim du lieu bi trung bang CF-VBA.xls
    38.5 KB · Đọc: 422
Bạn bôi đen vùng cần kiểm tra và bấm nút :
PHP:
Sub KiemtraDulieutrung2()
Dim cell As Range, Str As String, count As Long
Str = "-"
For Each cell In Selection
    If WorksheetFunction.CountIf(Selection, cell) > 1 And InStr(1, Str, cell) = 0 Then
        count = count + 1
        Str = Str & cell & "-"
    End If
Next
MsgBox "Co " & count & " so bi trung. Cac so do la :" & Chr(10) & Str
End Sub
Danh cải tiến lại. cho 1 InputBox và chỉ cần đặt con trỏ vào 1 cell nào đó trong vùng là được rồi ---> Đôi khi vùng dử liệu lớn quá, việc quét chọn bằng tay cũng khá khó khăn!
 
Đúng rồi, nhờ bạn HoangDanh hiệu chỉnh : ta chọn ô A1 là có thể kiểm tra toàn bộ dữ liệu ở cột F ( Bao gồm dữ liệu số, lẫn chữ).Thank.
 
Cám ơn bạn Danh,

Nhưng mà mình nhập dữ liệu đến dòng cuối cùng, dòng số 65536 thì chương trình tìm lâu quá, mất 15 -20 phút mới tìm ra được, có cách nào nhanh hơn nữa không ?

Thanks.
Anh Tú.
"Love is beautiful when it's unconclusive".
 
chào bạn,code này bạn có thể phát triển them là tính số lần trùng nhau của từng dữ liệu được ko?được thì giúp minh với
 
chào bạn,code này bạn có thể phát triển them là tính số lần trùng nhau của từng dữ liệu được ko?được thì giúp minh với

Sửa của Hoàng Danh lại giùm Bạn nè:
Bôi đen dữ liệu xong chạy code này:
Mã:
Sub DemDulieutrung()
Dim cell As Range, Str As String
Dim n As Long
Str = ""
For Each cell In Selection
    n = WorksheetFunction.CountIf(Selection, cell)
    If n > 1 And InStr(1, Str, cell) = 0 Then Str = Str & cell & " trung: " & n & " lan " & Chr(10)
Next
MsgBox Str
 End Sub
 
Cám ơn bạn. Đang cần đoạn code này -\\/.
 
CF không dùng được cho trường hợp này ah các bác? Em không biết dùng Macro nên chẳng hiểu gì mà bây giờ vùng dữ liệu bên em lớn quá không biết kiểm tra kiểu gì. :(
 
Web KT
Back
Top Bottom