Giúp mình giải pháp lọc dữ liệu với

Liên hệ QC

chen44

Thành viên mới
Tham gia
30/8/17
Bài viết
20
Được thích
3
Giới tính
Nam
Mình có 2 bảng danh sách để so sánh. ví dụ:
1 3
2 5
3 7
4 8
5 9
.....................
1. Vậy thì mình làm thế nào để lọc trùng. Tức là lấy danh sách trùng thôi bỏ qua danh sách không trùng
2. Từ danh sách này mình muốn bỏ hết danh sách trùng ( như bảng trên thì bỏ luôn cả 3 và 5) trong cả 2 danh sách mà k giữ lại cái nào. Việc này để mình trả danh sách về địa phương để so sánh dữ liệu không trùng để họ rà soát.
Danh sách của mình có tận vài nghìn người cơ :(
3. Từ bài toán bên trên: file danh sách mình tải lên. Cột A là danh sách bên mình. Cột B là danh sách địa phương. Giờ mình muốn so sánh dữ liệu 2 danh sách.
1. Tìm người có ở cột A và không có ở cột B lọc ra 1 danh sách. Tương tự với cột B mà k có ở cột A và lọc ra 1 danh sách.
2. Lọc người có dữ liệu trùng ở 1 danh sách và xóa hẳn những người trùng ( tức là ví dụ có 2 ông nguyễn văn A thì xóa luôn cả 2 ông chứ không xóa 1 ông)
Thank các bạn !!!
...........................
Mong các bạn giải giúp mình với.
 

File đính kèm

  • 123.xls
    66 KB · Đọc: 6
Lần chỉnh sửa cuối:
Mình có 2 bảng danh sách để so sánh. ví dụ:
1 3
2 5
3 7
4 8
5 9
.....................
1. Vậy thì mình làm thế nào để lọc trùng. Tức là lấy danh sách trùng thôi bỏ qua danh sách không trùng
2. Từ danh sách này mình muốn bỏ hết danh sách trùng ( như bảng trên thì bỏ luôn cả 3 và 5) trong cả 2 danh sách mà k giữ lại cái nào. Việc này để mình trả danh sách về địa phương để so sánh dữ liệu không trùng để họ rà soát.
Danh sách của mình có tận vài nghìn người cơ :(
...........................
Mong các bạn giải giúp mình với.
Đưa file giả lập gần gần giống với file dữ liệu thiệt của bạn lên diễn đàn, thì sẽ có câu trả lời nhanh hơn bạn nha!

Chúc bạn ngày vui.
 
ok minh đã chỉnh sửa rồi bạn xem giúp minh nhé
Nếu dữ liệu của bạn 'vài ngàn' dòng, bạn có thể tham khảo các cách sau:
1. Dùng VBA để loại trùng theo điều kiện (bạn search trên diễn đàn GPE đã có đề cập nhiều).
2. Dùng công thức mảng được, nhưng do yếu điểm của nó không phù hợp cho loại dữ liệu >1.000 dòng.
3. Dùng công cụ: Data\Remove Duplicates (bạn search trên diễn đàn GPE đã có đề cập nhiều).
4. Cách cuối cùng đơn giản chút, bạn dễ nhìn và tự định đoạt các bước kế tiếp, nhưng hợi thủ công: dùng thêm "Cột phụ" để đánh dấu trùng lặp.
PHP:
C14=COUNTIFS($A$14:$A14,$A14,$B$14:$B14,$B14)--> Dùng đánh số thứ tự phát sinh của dữ liệu.
D14=COUNTIFS($A$14:$A$1000,$A14,$B$14:$B$1000,$B14)--> Dùng đếm xem dữ liệu có trùng hay không, nếu có nó trả ra giá trị >1
Chúc bạn ngày vui
 

File đính kèm

  • 123.xls
    124 KB · Đọc: 13
Có mấy chục ngàn dòng vẫn dùng hàm Vlookup được cơ mà bạn. Bạn có biết dùng hàm Vlookup không?

Danh sách A thì dùng hàm dò từ danh sách B -> cái nào lỗi #N/A thì có ở A mà không ở B

Còn B thì ngược lại A thôi....
 
Nếu dữ liệu của bạn 'vài ngàn' dòng, bạn có thể tham khảo các cách sau:
1. Dùng VBA để loại trùng theo điều kiện (bạn search trên diễn đàn GPE đã có đề cập nhiều).
2. Dùng công thức mảng được, nhưng do yếu điểm của nó không phù hợp cho loại dữ liệu >1.000 dòng.
3. Dùng công cụ: Data\Remove Duplicates (bạn search trên diễn đàn GPE đã có đề cập nhiều).
4. Cách cuối cùng đơn giản chút, bạn dễ nhìn và tự định đoạt các bước kế tiếp, nhưng hợi thủ công: dùng thêm "Cột phụ" để đánh dấu trùng lặp.
PHP:
C14=COUNTIFS($A$14:$A14,$A14,$B$14:$B14,$B14)--> Dùng đánh số thứ tự phát sinh của dữ liệu.
D14=COUNTIFS($A$14:$A$1000,$A14,$B$14:$B$1000,$B14)--> Dùng đếm xem dữ liệu có trùng hay không, nếu có nó trả ra giá trị >1
Chúc bạn ngày vui
Thanks bạn. Remove duplicates thì chỉ xóa 1 dữ liệu. Mình muốn xóa hẳn cả 2 để đưa danh sách không trùng khớp về cho địa phương rà soát tiếp thì như thế không được.
 
Thanks bạn. Remove duplicates thì chỉ xóa 1 dữ liệu. Mình muốn xóa hẳn cả 2 để đưa danh sách không trùng khớp về cho địa phương rà soát tiếp thì như thế không được.
Thì trong file của tôi, bạn có thể filter cột D, lấy giá trị lớn hơn 1, rồi chọn các hàng (chọn toàn bộ cả hàng) đó, nhớ nhấn ALT+";", rồi CTRL+"-" là bạn xóa nó ngay.
Muốn lưu những dữ liệu trùng, thì sau khi nhấn ALT+";", bạn copy rồi chép qua sheet khác.

Chúc bạn ngày vui.
 
chào các anh chị ! các anh chị có thể giúp em viết code cho yêu cầu sau :
trong sheet thang1 có rất nhiều dòng có code trùng nhau , yêu cầu tìm những dòng có code trùng nhau sau đó so sánh số liệu những dòng trùng trong các cột còn lại nếu có ô khác thì copy sang sheet fiter và tô màu. trong sheet có rất nhiều dòng êm chỉ copy một vài ví dụ , mong các anh chị giúp đỡ, em cảm ơn các anh chị nhiều
 

File đính kèm

  • thang1.xlsx
    11.6 KB · Đọc: 10
chào các anh chị ! các anh chị có thể giúp em viết code cho yêu cầu sau :
trong sheet thang1 có rất nhiều dòng có code trùng nhau , yêu cầu tìm những dòng có code trùng nhau sau đó so sánh số liệu những dòng trùng trong các cột còn lại nếu có ô khác thì copy sang sheet fiter và tô màu. trong sheet có rất nhiều dòng êm chỉ copy một vài ví dụ , mong các anh chị giúp đỡ, em cảm ơn các anh chị nhiều
Bạn thử:
PHP:
Sub abc()
    Dim i, LR, j
    LR = Range("A" & Rows.Count).End(xlUp).Row
    For i = 6 To LR
        For j = 3 To 9
            If Cells(i, 1).Value = Cells(i + 1, 1).Value Then
                If Cells(i, 2).Value = Cells(i + 1, 2).Value Then
                    If Cells(i, j).Value <> Cells(i + 1, j).value Then
                        Cells(i + 1, j).Interior.ColorIndex = 6
                    End If
                End If
            End If
        Next
    Next
End Sub
 
Lần chỉnh sửa cuối:
Code chạy ok rồi , cảm ơn bạn rất nhiều!Chúc bạn nhiều sức khỏe!
 
bạn phulien1902 làm phiền quá thật ngại , giúp mình thêm vấn đề này nhé crm ơn bạn nhiều nhiều
tìm các dòng có code trùng nhau ví dụ 20030101 sau đó tính tổng từng cột còn lại của code 20030101 rồi xuất ra sheet filter( số liệu bảng này mỗi code sẽ có rất nhiều dòng trùng vì là tổng hợp của nhiều tháng) Xin các anh chị cao thủ giúp em viết code cho yêu cầu trên cảm ơn các anh chị nhiều!
 

File đính kèm

  • baco cao tong hop.xlsx
    11.7 KB · Đọc: 12
bạn phulien1902 làm phiền quá thật ngại , giúp mình thêm vấn đề này nhé crm ơn bạn nhiều nhiều
tìm các dòng có code trùng nhau ví dụ 20030101 sau đó tính tổng từng cột còn lại của code 20030101 rồi xuất ra sheet filter( số liệu bảng này mỗi code sẽ có rất nhiều dòng trùng vì là tổng hợp của nhiều tháng) Xin các anh chị cao thủ giúp em viết code cho yêu cầu trên cảm ơn các anh chị nhiều!
Sao lại tính tổng cả đơn giá vậy bạn
 
à xin lỗi bạn !vì mình đang tập làm nên mình tạo dữ liệu tạm cho nhanh nên tiêu đề mình đặt tạm trên bảng dữ liệu lớn tất cả các cột có cn số đều là giá trị cần tính tổng
 
à xin lỗi bạn !vì mình đang tập làm nên mình tạo dữ liệu tạm cho nhanh nên tiêu đề mình đặt tạm trên bảng dữ liệu lớn tất cả các cột có cn số đều là giá trị cần tính tổng
Bạn thử với:
PHP:
Sub Sum_abc()
    Dim i&, j&, k&, ii%, Dic As Object, a, b, Tmp$
    Sheet2.Range("A6").Resize(65000, 9).ClearContents
    a = Range(Sheets("Thang1").[A5], Sheets("Thang1").[A65000].End(3)).Resize(, 9)
    ReDim b(1 To UBound(a, 1), 1 To UBound(a, 2))
    Set Dic = CreateObject("Scripting.Dictionary")
    With Dic
        For i = 1 To UBound(a, 1)
            Tmp = a(i, 1)
            If Not .Exists(Tmp) Then
                k = k + 1
                .Add Tmp, k
                For j = 1 To UBound(a, 2)
                    b(k, j) = a(i, j)
                Next j
            Else
                For ii = 3 To 9
                    b(.Item(Tmp), ii) = b(.Item(Tmp), ii) + a(i, ii)
                Next
            End If
        Next i
    End With
    With Sheets("Filter")
        .Range("A6").Resize(k, UBound(a, 2)) = b
        .Range("A6").Resize(, 9).Font.Bold = True
        [A6].CurrentRegion.Borders.Value = 1
    End With
End Sub
 
Lần chỉnh sửa cuối:
Mình test thử code rồi cảm ơn bạn phulien1902 rất nhiều, diễn đàn này rất bổ ích cho mọi người nhật là những người mới bập bẽ học vba như mình, chúc bạn và diễn đàn ngày càng gặt hát nhiều thành công. Cảm ơn bạn và diễn đàn rất rất nhiều!
 
Chào bạn phulien1902 bạn xem giúp mình 2 đoạn trên bạn viết giúp minh với số lượng dòng nhiều code báo lỗi bạn giúp minh nhé cảm ơn bạn phàn code sum và code tô màu sự khác nhau đều ko chạy được .Mình sửa lại thế này bạn kiểm tra giúp mình sai chỗ nào cảm ơn bạn nhiều



Sub Sum_abc()
Dim i&, j&, k&, ii%, Dic As Object, a, b, Tmp$
Sheet2.Range("A6").Resize(65000, 84).ClearContents
a = Range(Sheets("Thang1").[A5], Sheets("Thang1").[A65000].End(3)).Resize(, 84)
ReDim b(1 To UBound(a, 1), 1 To UBound(a, 1))
Set Dic = CreateObject("Scripting.Dictionary")
With Dic
For i = 1 To UBound(a, 1)
Tmp = a(i, 1)
If Not .Exists(Tmp) Then
k = k + 1
.Add Tmp, k
For j = 1 To UBound(a, 2)
b(k, j) = a(i, j)
Next j
Else
For ii = 3 To 84
b(.Item(Tmp), ii) = b(.Item(Tmp), ii) + a(i, ii)
Next
End If
Next i
End With
With Sheets("Filter")
.Range("A6").Resize(k, UBound(a, 1)) = b
.Range("A6").Resize(, 84).Font.Bold = True
[A6].CurrentRegion.Borders.Value = 1
End With
End Sub


Sub abc()
Dim i, LR, j
LR = Range("A" & Rows.Count).End(xlUp).Row
For i = 6 To LR
For j = 3 To 84
If Cells(i, 1).Value = Cells(i + 1, 1).Value Then
If Cells(i, 2).Value = Cells(i + 1, 2).Value Then
If Cells(i, j).Value <> Cells(i + 1, j) Then
Cells(i + 1, j).Interior.ColorIndex = 6
End If
End If
End If
Next
Next
End Sub

Bạn thông cảm vì mình ko biết upfile lên web báo dung lượng lớn mình share trên google driver:
https://drive.google.com/drive/folders/1FMJmsj-lYuawsxtcPM_Th-1f0r1eLx3Q?usp=sharing
 
Chào bạn phulien1902 bạn xem giúp mình 2 đoạn trên bạn viết giúp minh với số lượng dòng nhiều code báo lỗi bạn giúp minh nhé cảm ơn bạn phàn code sum và code tô màu sự khác nhau đều ko chạy được .Mình sửa lại thế này bạn kiểm tra giúp mình sai chỗ nào cảm ơn bạn nhiều



Sub Sum_abc()
Dim i&, j&, k&, ii%, Dic As Object, a, b, Tmp$
Sheet2.Range("A6").Resize(65000, 84).ClearContents
a = Range(Sheets("Thang1").[A5], Sheets("Thang1").[A65000].End(3)).Resize(, 84)
ReDim b(1 To UBound(a, 1), 1 To UBound(a, 1))
Set Dic = CreateObject("Scripting.Dictionary")
With Dic
For i = 1 To UBound(a, 1)
Tmp = a(i, 1)
If Not .Exists(Tmp) Then
k = k + 1
.Add Tmp, k
For j = 1 To UBound(a, 2)
b(k, j) = a(i, j)
Next j
Else
For ii = 3 To 84
b(.Item(Tmp), ii) = b(.Item(Tmp), ii) + a(i, ii)
Next
End If
Next i
End With
With Sheets("Filter")
.Range("A6").Resize(k, UBound(a, 2)) = b
.Range("A6").Resize(, 84).Font.Bold = True
[A6].CurrentRegion.Borders.Value = 1
End With
End Sub


Sub abc()
Dim i, LR, j
LR = Range("A" & Rows.Count).End(xlUp).Row
For i = 6 To LR
For j = 3 To 84
If Cells(i, 1).Value = Cells(i + 1, 1).Value Then
If Cells(i, 2).Value = Cells(i + 1, 2).Value Then
If Cells(i, j).Value <> Cells(i + 1, j) Then
Cells(i + 1, j).Interior.ColorIndex = 6
End If
End If
End If
Next
Next
End Sub

Bạn thông cảm vì mình ko biết upfile lên web báo dung lượng lớn mình share trên google driver:
https://drive.google.com/drive/folders/1FMJmsj-lYuawsxtcPM_Th-1f0r1eLx3Q?usp=sharing
Bạn sửa lại chỗ này là được:
Sub Sum_abc()
Dim i&, j&, k&, ii%, Dic As Object, a, b, Tmp$
Sheet2.Range("A6").Resize(65000, 84).ClearContents
a = Range(Sheets("Thang1").[A5], Sheets("Thang1").[A65000].End(3)).Resize(, 84)
ReDim b(1 To UBound(a, 1), 1 To UBound(a,2))
Set Dic = CreateObject("Scripting.Dictionary")
With Dic
For i = 1 To UBound(a, 1)
Tmp = a(i, 1)
If Not .Exists(Tmp) Then
k = k + 1
.Add Tmp, k
For j = 1 To UBound(a, 2)
b(k, j) = a(i, j)
Next j
Else
For ii = 3 To 84
b(.Item(Tmp), ii) = b(.Item(Tmp), ii) + a(i, ii)
Next
End If
Next i
End With
With Sheets("Filter")
.Range("A6").Resize(k, UBound(a, 2)) = b
.Range("A6").Resize(, 84).Font.Bold = True
[A6].CurrentRegion.Borders.Value = 1
End With
End Sub
 
Ok rồi, cảm ơn bạn PacificPR nhiều , bạn xem giúp mình phần code tô màu các mã trùng mà có số liệu khác nhau , cuối năm làm bá cáo mà số liệu nhiều quá gặp bạn giúp đỡ thật là may mắn không biết nói gì hơn ngoài sự cảm kích dành cho bạn!
 
Ok rồi, cảm ơn bạn PacificPR nhiều , bạn xem giúp mình phần code tô màu các mã trùng mà có số liệu khác nhau , cuối năm làm bá cáo mà số liệu nhiều quá gặp bạn giúp đỡ thật là may mắn không biết nói gì hơn ngoài sự cảm kích dành cho bạn!
Nếu mã thì mình tô Cột 1 thôi chứ sao lại tô từ cột 3 đến cột 84 vậy bạn. Dữ liệu nhiều thế này máy chựu sao nổi
25905 dòng và 84 cột đó bạn. Mình thử sửa lại một tí ti thôi nha
PHP:
Sub abc()
    Dim i, LR, j
    Dim Rng As Range
    LR = Range("A" & Rows.Count).End(xlUp).Row
    For i = 6 To LR
        For j = 3 To 84
            If Cells(i, 1).Value = Cells(i + 1, 1).Value Then
                If Cells(i, 2).Value = Cells(i + 1, 2).Value Then
                    If Cells(i, j).Value <> Cells(i + 1, j) Then
                        If Rng Is Nothing Then
                            Set Rng = Cells(i + 1, j)
                        Else
                            Set Rng = Union(Rng, Cells(i + 1, j))
                        End If
                        'Cells(i + 1, j).Interior.ColorIndex = 6
                    End If
                End If
            End If
        Next
    Next
    Rng.Interior.ColorIndex = 6
End Sub
 
À nếu vậy thì bạn giúp mình tô cột mã nếu từ cột 3-84 mà có sự thay đổi ( khác với những cột cùng mã)
 
Web KT
Back
Top Bottom