Nhờ giúp đỡ tách dữ liệu trùng ngày hôm trước so với ngày hôm sau (1 người xem)

Liên hệ QC

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

hiepnh1985

Thành viên chính thức
Tham gia
31/8/10
Bài viết
76
Được thích
48
Tình hình là em có một danh sách dữ liệu cần lọc nhưng em bị vướng. Cụ thể như sau:

- Ngày một em bán hàng cho 5 khách là A, B, C, D, E và em có Danh sách 1.

- Ngày hôm sau em bán hàng cho 5 khách hàng cũ là A, B, C, D, E và thêm 3 khách hàng mới F, G, H. Lúc này em có Danh sách 2 gồm 8 khách hàng và nó bị lẫn lộn vào nhau không sao phân biệt được.

Giờ em muốn lọc ra được danh sách chỉ có 3 ông F, G, H của ngày thứ 2 mà chưa biết làm cách nào. Ký hiệu A, B, C,...chỉ là minh họa còn cụ thể em gửi file đính kèm. Cái này giống như kiểu tách thóc và gạo trong chuyện Tấm Cám đó ạ +-+-+-+
Screenshot 2015-01-17 21.35.45.jpg

Các bác ai biết cách xử lý (đơn thuần excel hoặc dùng cả VBA) thì chỉ giúp em với ạ. Em cảm ơn các bác nhiều.
 

File đính kèm

Tình hình là em có một danh sách dữ liệu cần lọc nhưng em bị vướng. Cụ thể như sau:

- Ngày một em bán hàng cho 5 khách là A, B, C, D, E và em có Danh sách 1.

- Ngày hôm sau em bán hàng cho 5 khách hàng cũ là A, B, C, D, E và thêm 3 khách hàng mới F, G, H. Lúc này em có Danh sách 2 gồm 8 khách hàng và nó bị lẫn lộn vào nhau không sao phân biệt được.

Giờ em muốn lọc ra được danh sách chỉ có 3 ông F, G, H của ngày thứ 2 mà chưa biết làm cách nào. Ký hiệu A, B, C,...chỉ là minh họa còn cụ thể em gửi file đính kèm. Cái này giống như kiểu tách thóc và gạo trong chuyện Tấm Cám đó ạ +-+-+-+
View attachment 135674

Các bác ai biết cách xử lý (đơn thuần excel hoặc dùng cả VBA) thì chỉ giúp em với ạ. Em cảm ơn các bác nhiều.

Làm như thế này được không bạn
 

File đính kèm

Cũng được bạn nhé. Mình sẽ tìm cách xử lý khâu còn lại. Cảm ơn bạn nhiều }}}}}
 
Cảm ơn bạn nhé, nhờ bạn nhắc nên mình tìm được lệnh trong VBA rồi. Đây là cấu trúc
Sub Locdulieu()
Dim eR1 As Long, eR2 As Long, i As Long, j As Long
Dim Rng1 As Range, Rng2 As Range, Clls As Range
eR1 = ActiveSheet.Range("B65000").End(xlUp).Row
Set Rng1 = ActiveSheet.Range("B2:B" & eR1)
eR2 = ActiveSheet.Range("C65000").End(xlUp).Row
Set Rng2 = ActiveSheet.Range("C2:C" & eR2)
j = 1
For Each Clls In Rng2
If Not Application.CountIf(Rng1, Clls) = 1 Then
j = j + 1
Cells(j, 4) = Clls
End If
Next
End Sub
 
Cảm ơn bạn nhé, nhờ bạn nhắc nên mình tìm được lệnh trong VBA rồi. Đây là cấu trúc
Sub Locdulieu()
Dim eR1 As Long, eR2 As Long, i As Long, j As Long
Dim Rng1 As Range, Rng2 As Range, Clls As Range
eR1 = ActiveSheet.Range("B65000").End(xlUp).Row
Set Rng1 = ActiveSheet.Range("B2:B" & eR1)
eR2 = ActiveSheet.Range("C65000").End(xlUp).Row
Set Rng2 = ActiveSheet.Range("C2:C" & eR2)
j = 1
For Each Clls In Rng2
If Not Application.CountIf(Rng1, Clls) = 1 Then
j = j + 1
Cells(j, 4) = Clls
End If
Next
End Sub
Bài này dùng Advanced Filter cái xoẹt là ra chứ cần gì công thức hay code
 
Bài này dùng Advanced Filter cái xoẹt là ra chứ cần gì công thức hay code
Nhờ chú ndu chỉ dùm con cách dùng Advanced Filter với ạ. Bài này con dùng hàm nhưng dữ liệu lấy ra không liền từng dòng mà nằm cách nhau nên về hình thức trông không được đẹp lắm. Cám ơn chú nhiều ạ.
 
Bài này dùng Advanced Filter cái xoẹt là ra chứ cần gì công thức hay code

Bác ơi em chưa rõ cái này lắm ạ. Em mới chỉ biết để dùng nó lọc dữ liệu duy nhật và copy tới một ô khác thôi. Bác có thể chỉ giúp em được không ạ. Em cảm ơn bác nhiều.

+-+-+-+
 
Nhờ chú ndu chỉ dùm con cách dùng Advanced Filter với ạ. Bài này con dùng hàm nhưng dữ liệu lấy ra không liền từng dòng mà nằm cách nhau nên về hình thức trông không được đẹp lắm. Cám ơn chú nhiều ạ.

Bác ơi em chưa rõ cái này lắm ạ. Em mới chỉ biết để dùng nó lọc dữ liệu duy nhật và copy tới một ô khác thôi. Bác có thể chỉ giúp em được không ạ. Em cảm ơn bác nhiều.

+-+-+-+

Đây là bài toán: TÌM CÁC PHẦN TỬ CÓ TRONG DANH SÁCH 2 NHƯNG KHÔNG CÓ TRONG DANH SÁCH 1
Dùng Advanced Filter thế này:

[video=youtube;4dXAyjtVxEg]https://www.youtube.com/watch?v=4dXAyjtVxEg&feature=youtu.be[/video]


Ngoài ra còn có bài toán: TÌM CÁC PHẦN TỬ CÓ TRONG CẢ 2 DANH SÁCH, cũng dùng Advanced Filter tương tự (chỉ thay đổi công thức điều kiện một chút)
 
cảm ơn bạn nhé, nhờ bạn nhắc nên mình tìm được lệnh trong vba rồi. đây là cấu trúc
sub locdulieu()
dim er1 as long, er2 as long, i as long, j as long
dim rng1 as range, rng2 as range, clls as range
er1 = activesheet.range("b65000").end(xlup).row
set rng1 = activesheet.range("b2:b" & er1)
er2 = activesheet.range("c65000").end(xlup).row
set rng2 = activesheet.range("c2:c" & er2)
j = 1
for each clls in rng2
if not application.countif(rng1, clls) = 1 then
j = j + 1
cells(j, 4) = clls
end if
next
end sub
thêm một cách dùng match nữa bạn nhé
Mã:
Sub Locdulieu1()
    Dim j As Long
    Dim Rng1 As Range, Rng2 As Range, Clls As Range
        Set Rng1 = Sheet1.Range("B2:B" & Sheet1.Range("B65000").End(3).Row)
        Set Rng2 = Sheet1.Range("C2:C" & Sheet1.Range("C65000").End(3).Row)
        j = 1
    For Each Clls In Rng2
        If Application.IsNA(Application.Match(Clls, Rng1, 0)) Then
            j = j + 1
            Cells(j, 4) = Clls
        End If
    Next
End Sub
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom