Delete dòng trùng mỗi khi ghi dữ liệu mới vào

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

hadoan-pap

Thành viên tiêu biểu
Tham gia
8/7/15
Bài viết
453
Được thích
18
Em chào mọi người!

Dạ em có 1 file excel mà liên tục được ghi dữ liệu mới vào tại cột A ạ.

Em muốn kiểm tra tại cột A để xóa đi các dòng có giá trị tại cột A trùng nhau, chỉ giữ lại các dòng trên cùng đầu tiên mà em có bôi vàng ạ.

Em xin cảm ơn rất nhiều!
 

File đính kèm

  • Book1.xlsm
    11 KB · Đọc: 18
Upvote 0
Xóa các giá trị trùng nhau xong lại

sao đọc khó hiểu thế nhỉ. Kết quả bạn muốn bôi màu vàng. Là những mã xuất hiện > 2 lần mà.
Dạ vâng tức ở cột A, kiểm tra các dòng có giá trị tại cột A mà giống nhau thì xóa đi các dòng bên dưới, chỉ giữ lại các dòng trên cùng ( tức là đã ghi từ trước vào file rồi ạ )
 
Upvote 0
Dạ vâng tức ở cột A, kiểm tra các dòng có giá trị tại cột A mà giống nhau thì xóa đi các dòng bên dưới, chỉ giữ lại các dòng trên cùng ( tức là đã ghi từ trước vào file rồi ạ )
Thế bạn muốn khi có đầy đủ dữ liệu rồi mới bấm nút hay là nó sẽ tự động thực hiện khi dữ liệu được đẩy vào cột A
 
Upvote 0
Vậy thủ macro này sau khi đã có dữ liệu:

PHP:
Sub XoaDongTrung()
 Dim Rng As Range, sRng As Range, dRg As Range
 Dim Rws As Long, J As Long
 Dim MyAdd As String
 
 Rws = [A2].CurrentRegion.Rows.Count
 For J = 1 To Rws
    If Cells(J, "A").Value = "" Then Exit For
    Set Rng = Cells(J, "A").Offset(1).Resize(Rws)
    Set sRng = Rng.Find(Cells(J, "a").Value, , xlFormulas, xlWhole)
    If Not sRng Is Nothing Then
        MyAdd = sRng.Address
        Do
            If dRg Is Nothing Then
                Set dRg = Rows(sRng.Row & ":" & sRng.Row)
            Else
                Set dRg = Union(dRg, Rows(sRng.Row & ":" & sRng.Row))
            End If
            Set sRng = Rng.FindNext(sRng)
        Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
        If Not dRg Is Nothing Then
            dRg.Delete:            Set dRg = Nothing
        End If
    End If
 Next J
End Sub
 
Upvote 0
Vậy thủ macro này sau khi đã có dữ liệu:

PHP:
Sub XoaDongTrung()
 Dim Rng As Range, sRng As Range, dRg As Range
 Dim Rws As Long, J As Long
 Dim MyAdd As String
 
 Rws = [A2].CurrentRegion.Rows.Count
 For J = 1 To Rws
    If Cells(J, "A").Value = "" Then Exit For
    Set Rng = Cells(J, "A").Offset(1).Resize(Rws)
    Set sRng = Rng.Find(Cells(J, "a").Value, , xlFormulas, xlWhole)
    If Not sRng Is Nothing Then
        MyAdd = sRng.Address
        Do
            If dRg Is Nothing Then
                Set dRg = Rows(sRng.Row & ":" & sRng.Row)
            Else
                Set dRg = Union(dRg, Rows(sRng.Row & ":" & sRng.Row))
            End If
            Set sRng = Rng.FindNext(sRng)
        Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
        If Not dRg Is Nothing Then
            dRg.Delete:            Set dRg = Nothing
        End If
    End If
 Next J
End Sub
Dạ em cảm ơn ạ!
Bài đã được tự động gộp:

Bút sa gà chết.
Nhập lộn nó xóa cha cái dòng đúng thì làm cách nào chỉnh?
Dạ dữ liệu mới ghi vào nó ghi lần lượt xuống bên dưới anh ạ. Nên sau khi ghi thì mình check trùng để xóa các dữ liệu mới được ghi vào mà bị trùng ạ,
 
Upvote 0
Thì 'Tay làm hàm nhai' thôi; Nhập lại & bấm xóa. . . . . ; Nếu lộn 4 lần thì sẽ bị đuổi việc!
1. Thứ tự dòng dữ liệu nhập lại sẽ bị đổi. Từ một vị trí nào đó, bây giờ là vị trí nhập.
2. Ngoài cái mã ra, làm cách nào biết trước đó là cái gì.

Nhiều người thích "tự động" mà không hề nghĩ tới việc đồ tự động thường ủi càn qua những cái có trước đó.
 
Upvote 0
Web KT
Back
Top Bottom