Tìm dữ liệu trùng có điều kiện và gộp dữ liệu

Liên hệ QC

thesaintzero

Thành viên hoạt động
Tham gia
16/3/09
Bài viết
158
Được thích
8
Chào các bác, cụ thể em có một tí rắc rối về cái lọc theo điều kiện và xóa dòng:
em mô tả một tí
chẳng là trong file của em có Cột "Tờ" dựa vào cột "Tờ" này cột "Thửa" có dữ liệu nào trùng thì cột "MDSD" sẽ gộp lại sau đó xóa đi 1 hàng trùng chỉ để lại 1 dữ liệu thui ah!... có thể em giải thích hơi khó hiểu tí.... mong các bác thông cảm. em gửi file lên mong các bác xem xét dùm em ah!
 

File đính kèm

Chào các bác, cụ thể em có một tí rắc rối về cái lọc theo điều kiện và xóa dòng:
em mô tả một tí
chẳng là trong file của em có Cột "Tờ" dựa vào cột "Tờ" này cột "Thửa" có dữ liệu nào trùng thì cột "MDSD" sẽ gộp lại sau đó xóa đi 1 hàng trùng chỉ để lại 1 dữ liệu thui ah!... có thể em giải thích hơi khó hiểu tí.... mong các bác thông cảm. em gửi file lên mong các bác xem xét dùm em ah!
Cột MDSD nếu trùng thì dữ liệu sẽ nối với nhau bởi dấu "+" đúng không bạn? Ví dụ: "ONT+CLN"
 
Không thấy bạn hồi âm nên làm mò!
Bạn xem có đúng ý không nhé?
Mã:
Public Sub loc()
Dim Dic As Object, i As Long, Arr(), Kq(), Lr As Long, j As Long
Set Dic = CreateObject("Scripting.Dictionary")
Lr = Sheet3.Range("A" & Rows.Count).End(xlUp).Row
Arr = Sheet3.Range("A2:E" & Lr)
ReDim Kq(1 To UBound(Arr), 1 To 5)
For i = 1 To UBound(Arr)
    With Dic
        If Not .Exists(Arr(i, 3)) Then
            d = d + 1
            .Add Arr(i, 3), Arr(i, 5)
            Kq(d, 1) = d
            Kq(d, 2) = Arr(i, 2)
            Kq(d, 3) = Arr(i, 3)
            Kq(d, 4) = Arr(i, 4)
            Kq(d, 5) = Arr(i, 5)
        Else
            Kq(d, 5) = .Item(Arr(i, 3)) & "+" & Arr(i, 5)
        End If
    End With
Next i
Sheet3.Range("A2:E200000").ClearContents
Sheet3.Range("A2").Resize(d, 5) = Kq
End Sub
 
Lần chỉnh sửa cuối:
xin lỗi bạn, mình vừa đi ra ngoài ăn cơm hjhjhj, đúng như bạn miêu tả, nếu 2 dữ liệu trùng nhau thì cột MDSD sẽ gộp 2 dữ liệu trùng làm 1 và xóa hàng nào ko gộp lại.
 
Đúng như ý mình rồi, nhưng bạn có thể giải thích code cho mình hiểu thêm được không vậy?
 
bạn chuot0106 ơi mấy bữa nay thấy sai mà ko biết nguyên nhân sao, bạn cho cái cột MDSD thì đúng rồi nhưng cột SHT thì mỗi tờ có SHT từ 1----> một thửa nhất định, bạn cho nó chạy từ trên xuống dưới vậy không đúng, nhờ bạn xem xét lại dùm mình đi, mình cám ơn bạn nhiều.
 
bạn chuot0106 ơi mấy bữa nay thấy sai mà ko biết nguyên nhân sao, bạn cho cái cột MDSD thì đúng rồi nhưng cột SHT thì mỗi tờ có SHT từ 1----> một thửa nhất định, bạn cho nó chạy từ trên xuống dưới vậy không đúng, nhờ bạn xem xét lại dùm mình đi, mình cám ơn bạn nhiều.
Bạn nhập vài kết quả mong muốn bằng tay và đưa File lên đây.
 
bạn chuot0106 ơi mấy bữa nay thấy sai mà ko biết nguyên nhân sao, bạn cho cái cột MDSD thì đúng rồi nhưng cột SHT thì mỗi tờ có SHT từ 1----> một thửa nhất định, bạn cho nó chạy từ trên xuống dưới vậy không đúng, nhờ bạn xem xét lại dùm mình đi, mình cám ơn bạn nhiều.
Có phải như thế này không:(Bấm vào hình xem kết quả)
P/s: Dữ liệu của bạn mà làm Pivot Table thì sẽ dễ xem và đơn giản hơn nhiều.
 

File đính kèm

Có phải như thế này không:(Bấm vào hình xem kết quả)
P/s: Dữ liệu của bạn mà làm Pivot Table thì sẽ dễ xem và đơn giản hơn nhiều.
cám ơn bạn nhiều nha! chính xác là như vậy đó. Mình thì không rành cái vụ Pivot Table này cho lắm, cũng chịu mày mò lắm, ngặt nỗi là mỗi lần làm là phải search lại từ đầu ah!
 
Ah! bạn giangleloi cho mình hỏi thêm được nữa không, công thức của bạn nếu phía sau là cột F có các dữ liệu là chữ ví dụ: địa chỉ thì nó không chạy chỉ load được dạng số thôi, hoặc cột diện tích thì mình thay bằng "1t" "2t" chẳng hạn, nó chỉ ra số 1 và 2 thôi, bạn có cách nào chỉ giúp mình luôn đi.
 
Ah! bạn giangleloi cho mình hỏi thêm được nữa không, công thức của bạn nếu phía sau là cột F có các dữ liệu là chữ ví dụ: địa chỉ thì nó không chạy chỉ load được dạng số thôi, hoặc cột diện tích thì mình thay bằng "1t" "2t" chẳng hạn, nó chỉ ra số 1 và 2 thôi, bạn có cách nào chỉ giúp mình luôn đi.
Thế thì post lại cái file đó của bạn lên nhé. Chứ bạn đưa file sao thì làm theo như vậy, giờ bạn kêu rằng nó khác, tưởng tượng làm sao được?
 
Thế thì post lại cái file đó của bạn lên nhé. Chứ bạn đưa file sao thì làm theo như vậy, giờ bạn kêu rằng nó khác, tưởng tượng làm sao được?
Đây nè bạn, cụ thể mình muốn cột MDSD nó cộng gộp 2 loại MDSD lại với nhau còn dữ liệu trùng còn lại thì xóa cái hàng đó đi chỉ chừa lại hàng đã cộng gộp MDSD, các cột khác giữ nguyên nhưng xóa hàng theo cột MDSD.
 

File đính kèm

Đây nè bạn, cụ thể mình muốn cột MDSD nó cộng gộp 2 loại MDSD lại với nhau còn dữ liệu trùng còn lại thì xóa cái hàng đó đi chỉ chừa lại hàng đã cộng gộp MDSD, các cột khác giữ nguyên nhưng xóa hàng theo cột MDSD.

Không theo dõi yêu cầu của bạn từ đầu. Nhìn dữ liệu làm "thí thí", nếu được thì xài nhé.
Tạo 1 sheet GPE có cấu trúc tiêu đề như sheet AN HIEP nhé.
PHP:
Public Sub GPE_()
Dim Dic As Object, sArr(), dArr(), I As Long, J As Long, K As Long, Tem As String, Rws As Long
Set Dic = CreateObject("Scripting.Dictionary")
sArr = Sheets("AN HIEP").Range("A3", Sheets("AN HIEP").Range("A3").End(xlDown)).Resize(, 61).Value
ReDim dArr(1 To UBound(sArr, 1), 1 To 61)
For I = 1 To UBound(sArr, 1)
    Tem = sArr(I, 2) & "#" & sArr(I, 3)
    If Not Dic.Exists(Tem) Then
        K = K + 1
        Dic.Add Tem, K
        dArr(K, 1) = K
        For J = 2 To 61
            dArr(K, J) = sArr(I, J)
        Next J
    Else
        Rws = Dic.Item(Tem)
        dArr(Rws, 5) = dArr(Rws, 5) & "+" & sArr(I, 5)  '<-----Dòng này không cần thì xóa.'
        dArr(Rws, 6) = dArr(Rws, 6) & "+" & sArr(I, 6)  '<-----Dòng này không cần thì xóa.'
        dArr(Rws, 9) = dArr(Rws, 9) & "+" & sArr(I, 9)  ' Gộp MSDD'
        dArr(Rws, 11) = dArr(Rws, 11) & "+" & sArr(I, 11)   '<-----Dòng này không cần thì xóa.'
    End If
Next I
Sheets("GPE").Range("A3").Resize(K, 61) = dArr
Set Dic = Nothing
End Sub
 
Lần chỉnh sửa cuối:
Không theo dõi yêu cầu của bạn từ đầu. Nhìn dữ liệu làm "thí thí", nếu được thì xài nhé.
Tạo 1 sheet GPE có cấu trúc tiêu đề như sheet AN HIEP nhé.
PHP:
Public Sub GPE_()
Dim Dic As Object, sArr(), dArr(), I As Long, J As Long, K As Long, Tem As String, Rws As Long
Set Dic = CreateObject("Scripting.Dictionary")
sArr = Sheets("AN HIEP").Range("A3", Sheets("AN HIEP").Range("A3").End(xlDown)).Resize(, 61).Value
ReDim dArr(1 To UBound(sArr, 1), 1 To 61)
For I = 1 To UBound(sArr, 1)
    Tem = sArr(I, 2) & "#" & sArr(I, 3)
    If Not Dic.Exists(Tem) Then
        K = K + 1
        Dic.Add Tem, K
        dArr(K, 1) = K
        For J = 2 To 61
            dArr(K, J) = sArr(I, J)
        Next J
    Else
        Rws = Dic.Item(Tem)
        dArr(Rws, 5) = dArr(Rws, 5) & "+" & sArr(I, 5)  '<-----Dòng này không cần thì xóa.'
        dArr(Rws, 6) = dArr(Rws, 6) & "+" & sArr(I, 6)  '<-----Dòng này không cần thì xóa.'
        dArr(Rws, 9) = dArr(Rws, 9) & "+" & sArr(I, 9)  ' Gộp MSDD'
        dArr(Rws, 11) = dArr(Rws, 11) & "+" & sArr(I, 11)   '<-----Dòng này không cần thì xóa.'
    End If
Next I
Sheets("GPE").Range("A3").Resize(K, 61) = dArr
Set Dic = Nothing
End Sub
cám ơn Ba Tê nha! đúng kết quả mình cần rồi.
 
Chào anh/chị

Mọi người có thể hướng dẫn em tìm dữ liệu bị trùng theo bảng exceel em gửi được không? những dữ liệu bị trùng của một mã nhân viên thì tô màu lên. không sử dụng Filter

Em cảm ơn
 

File đính kèm

Web KT

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

Back
Top Bottom