Hỏi về cách lọc ra những dữ liệu trùng, copy chúng ra một vị trí khác (2 người xem)

Liên hệ QC

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

Kyne1001

Thành viên mới
Tham gia
25/5/12
Bài viết
21
Được thích
9
Nghề nghiệp
Nhân viên Kinh Doanh
Vấn đề mình gặp phải là thế này:
Mình có một bảng danh sách thông tin khách hàng rất dài. Các khách hàng của mình không hề có một mã khách hàng độc nhất nào cả. Chính vì thế nên việc hai người khác nhau mà trùng tên là hoàn toàn có khả năng xảy ra.
Điều mình cần ở đây là có cách nào có thể lọc ra những dữ liệu trùng tên nhau và copy chúng ra một vị trí khác để từ đó mình xem xét thủ công (Kiểm tra thêm Năm sinh, Địa chỉ) coi họ có thật sự là cùng một người không. Nếu cùng, mình sẽ quay lại bảng tính chính và xóa một trong hai đi.
Mình không thể sử dụng phương pháp Sort và dò được do danh sách kéo dài hàng ngàn dòng. Thêm vào đó cũng không thể dùng Advance Filter, Unique Record do cách nhập tên bên mình không thống nhất (Ví dụ: Khi thì Nguyễn Thị Mai Phương, khi thì Nguyễn T. Mai Phương, thậm chí có lúc ghi Bác sĩ Nguyễn Thị Mai Phương, địa chỉ khi thì ghi đường 3/2, khi ghi đường 3 tháng 2).
Nói tóm lại mình cần một phương pháp để trích các dữ liệu trùng ra một khu vực khác để xử lý thủ công.
File ví dụ mình gửi kèm chỉ có 10 dữ liệu thôi, file thật đến cả ngàn dòng.

Xin cảm ơn các anh chị.
 

File đính kèm

Vấn đề mình gặp phải là thế này:
Mình có một bảng danh sách thông tin khách hàng rất dài. Các khách hàng của mình không hề có một mã khách hàng độc nhất nào cả. Chính vì thế nên việc hai người khác nhau mà trùng tên là hoàn toàn có khả năng xảy ra.
Điều mình cần ở đây là có cách nào có thể lọc ra những dữ liệu trùng tên nhau và copy chúng ra một vị trí khác để từ đó mình xem xét thủ công (Kiểm tra thêm Năm sinh, Địa chỉ) coi họ có thật sự là cùng một người không. Nếu cùng, mình sẽ quay lại bảng tính chính và xóa một trong hai đi.
Mình không thể sử dụng phương pháp Sort và dò được do danh sách kéo dài hàng ngàn dòng. Thêm vào đó cũng không thể dùng Advance Filter, Unique Record do cách nhập tên bên mình không thống nhất (Ví dụ: Khi thì Nguyễn Thị Mai Phương, khi thì Nguyễn T. Mai Phương, thậm chí có lúc ghi Bác sĩ Nguyễn Thị Mai Phương, địa chỉ khi thì ghi đường 3/2, khi ghi đường 3 tháng 2).
Nói tóm lại mình cần một phương pháp để trích các dữ liệu trùng ra một khu vực khác để xử lý thủ công.
File ví dụ mình gửi kèm chỉ có 10 dữ liệu thôi, file thật đến cả ngàn dòng.

Xin cảm ơn các anh chị.

Bạn thử cách lọc theo địa chỉ này xe sao.
 

File đính kèm

Bạn thử cách lọc theo địa chỉ này xe sao.
Bạn mhung12005 ơi, cả ngàn dòng đấy!!!
File ví dụ mình gửi kèm chỉ có 10 dữ liệu thôi, file thật đến cả ngàn dòng.
Công thức này chắc chịu không nổi, muốn dùng VBA nhưng lại ngại cái dòng này chưa biết xử lý sao (trong công thức của mhung12005 cũng chưa xử lý đến điều kiện này)?
do cách nhập tên bên mình không thống nhất (Ví dụ: Khi thì Nguyễn Thị Mai Phương, khi thì Nguyễn T. Mai Phương, thậm chí có lúc ghi Bác sĩ Nguyễn Thị Mai Phương, địa chỉ khi thì ghi đường 3/2, khi ghi đường 3 tháng 2).
Hic hic hic...Mình nghĩ chắc bạn phải đưa cái dữ liệu thực lên chứ sao mà ngồi đoán được cái không thống nhất bạn nói nó được giới hạn ở dạng nào mà xử lý.
 
Hic, kẹt cái là đây là thông tin khách hàng nên mình không thể gửi lên mạng được.
Hay bạn xem giùm mình dựa trên file này đi. Đây là danh sách mình thu thập được trên mạng thôi, không có gì bí mật cả, gửi cũng chẳng sao.
Danh sách này cũng bị trùng và cũng cần làm như cái danh sách khách hàng, đỡ hơn ở chỗ là cách gõ tên nó thống nhất (Nguyễn Thị Phương Mai luôn luôn là Nguyễn Thị Phương Mai, không có Nguyễn T. gì hết).
Còn vụ cách gõ tên không thống nhất mình sẽ dùng Find and Replace để sửa lại vậy.

mhung12005: Thanks bạn, để mình nghiên cứu thử xem sao, trình độ Excel cũng cỡ bằng A nên hơi khó khăn trong vụ này tí.
 

File đính kèm

Hic, kẹt cái là đây là thông tin khách hàng nên mình không thể gửi lên mạng được.
Hay bạn xem giùm mình dựa trên file này đi. Đây là danh sách mình thu thập được trên mạng thôi, không có gì bí mật cả, gửi cũng chẳng sao.
Danh sách này cũng bị trùng và cũng cần làm như cái danh sách khách hàng, đỡ hơn ở chỗ là cách gõ tên nó thống nhất (Nguyễn Thị Phương Mai luôn luôn là Nguyễn Thị Phương Mai, không có Nguyễn T. gì hết).
Còn vụ cách gõ tên không thống nhất mình sẽ dùng Find and Replace để sửa lại vậy.

mhung12005: Thanks bạn, để mình nghiên cứu thử xem sao, trình độ Excel cũng cỡ bằng A nên hơi khó khăn trong vụ này tí.

Mình chỉ giúp được bạn lọc theo địa chỉ thôi, chứ còn cái vụ gõ tên không thống nhất thì mình chịu. Đành chờ các cao thủ khác vậy. Bạn thử file này xem có dùng được không nhé. Công thức mảng nên cũng hơi chậm.
 

File đính kèm

  • 4.rar
    4.rar
    63.2 KB · Đọc: 48
À, vụ cách gõ tên không thống nhất mình đã bỏ thời gian ra sửa lại hết rồi nên giờ nó không còn là vấn đề nữa.
Hôm nay thứ 7 rảnh rỗi, mình thử nghiên cứu công thức mảng của bạn xem sao, cái vụ mảng này hoàn toàn là mới với mình. May mà PC của cơ quan mình không tồi.
Dù sao cũng cám ơn bạn.
 
À, vụ cách gõ tên không thống nhất mình đã bỏ thời gian ra sửa lại hết rồi nên giờ nó không còn là vấn đề nữa.
Hôm nay thứ 7 rảnh rỗi, mình thử nghiên cứu công thức mảng của bạn xem sao, cái vụ mảng này hoàn toàn là mới với mình. May mà PC của cơ quan mình không tồi.
Dù sao cũng cám ơn bạn.
Vậy bạn xem thử file này xem có đờ rối mắt hơn không nhé.
Mình nghĩ nếu bạn đồng nhất được dữ liệu trên thì dùng Advanced Filter cho nó nhẹ nhàng!
 

File đính kèm

  • 4.rar
    4.rar
    51.5 KB · Đọc: 18
Vậy bạn xem thử file này xem có đờ rối mắt hơn không nhé.
Mình nghĩ nếu bạn đồng nhất được dữ liệu trên thì dùng Advanced Filter cho nó nhẹ nhàng!

A, thanks bạn nhiều lắm. File của bạn cũng hơi bị không đúng những gì mình cần nhưng nhờ nó mà mình đã mò ra được cách làm rồi.
Tổng kết lại điều mình cần ở đây là tìm ra những dòng bị trùng để có thể xem xét chúng một cách thủ công (không phải xóa chúng).
Mình đã tìm ra cách làm như trong file này.
Tiếp theo mình chỉ cần Adv Filter các giá trị True để copy chúng ra chỗ khác hay đơn gian hơn là Auto Filter rồi Sort để thấy chúng nằm gần nhau.
Cảm ơn các bạn đã giúp đỡ.
 

File đính kèm

Lần chỉnh sửa cuối:
A, thanks bạn nhiều lắm. File của bạn cũng hơi bị không đúng những gì mình cần nhưng nhờ nó mà mình đã mò ra được cách làm rồi.
Tổng kết lại điều mình cần ở đây là tìm ra những dòng bị trùng để có thể xem xét chúng một cách thủ công (không phải xóa chúng).
Mình đã tìm ra cách làm như trong file này.
Tiếp theo mình chỉ cần Adv Filter các giá trị True để copy chúng ra chỗ khác hay đơn gian hơn là Auto Filter rồi Sort để thấy chúng nằm gần nhau.
Cảm ơn các bạn đã giúp đỡ.
Vậy bạn dùng thử cái này để kiểm tra xem có nhẹ nhàng hơn chút không nhé, gom cả 4 cột để lọc duy nhất. Bấm nút Check để chạy CODE.
PHP:
Sub loc()
Dim i As Long, j As Long, k As Long
Dim sArr(), dArr(), TmpArr
Dim Dic As Object
sArr = Range("B2:B" & [B65536].End(xlUp).Row).Resize(, 4).Value
Set Dic = CreateObject("scripting.dictionary")
ReDim dArr(1 To UBound(sArr, 1), 1 To UBound(sArr, 2))
For i = 1 To UBound(sArr, 1)
TmpArr = sArr(i, 1) & sArr(i, 2) & sArr(i, 3) & sArr(i, 4)
If Not Dic.exists(TmpArr) Then
    k = k + 1
    Dic.Add TmpArr, k
    For j = 1 To 4
        dArr(k, j) = sArr(i, j)
    Next
End If
Next
Range("G2:I1000").ClearContents
[G2].Resize(k, 4) = dArr
Range("G2:G" & [G65536].End(xlUp).Row).Sort Key1:=Range("G2"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
End Sub
Công việc còn lại bạn tự chỉnh sao để đạt đc mục đích của mình nhé!
 

File đính kèm

Vậy bạn dùng thử cái này để kiểm tra xem có nhẹ nhàng hơn chút không nhé, gom cả 4 cột để lọc duy nhất. Bấm nút Check để chạy CODE.
PHP:
Sub loc()
Dim i As Long, j As Long, k As Long
Dim sArr(), dArr(), TmpArr
Dim Dic As Object
sArr = Range("B2:B" & [B65536].End(xlUp).Row).Resize(, 4).Value
Set Dic = CreateObject("scripting.dictionary")
ReDim dArr(1 To UBound(sArr, 1), 1 To UBound(sArr, 2))
For i = 1 To UBound(sArr, 1)
TmpArr = sArr(i, 1) & sArr(i, 2) & sArr(i, 3) & sArr(i, 4)
If Not Dic.exists(TmpArr) Then
    k = k + 1
    Dic.Add TmpArr, k
    For j = 1 To 4
        dArr(k, j) = sArr(i, j)
    Next
End If
Next
Range("G2:I1000").ClearContents
[G2].Resize(k, 4) = dArr
Range("G2:G" & [G65536].End(xlUp).Row).Sort Key1:=Range("G2"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
End Sub
Công việc còn lại bạn tự chỉnh sao để đạt đc mục đích của mình nhé!
Cơ bản là vậy nhưng để chắc ăn hơn thì ở đoạn này
TmpArr = sArr(i, 1) & sArr(i, 2) & sArr(i, 3) & sArr(i, 4)
ta nên cho vào giữa các phần tử 1 ký tự đặc biệt gì đo, tốt nhất là ký tự không thể gõ bằng tay (vbBack hay Chr(1) gì đó...)
------------------------------
Làm việc với mảng cũng "vi vu" lắm chứ Bé Còi
Chúc mừng nha!
 
Web KT

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

Back
Top Bottom