[Help] Macro Tìm kiếm giá trị trùng và xóa giá trị đó (1 người xem)

Liên hệ QC

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

ngoctuyen1995

Thành viên hoạt động
Tham gia
25/4/17
Bài viết
196
Được thích
19
Giới tính
Nữ
Chào cả nhà GPEX!
Mong cả nhà giúp em hoàn thành bài tập dưới ạ...
trong file đính kèm có 3 cột Tháng nhập hàng, tên người làm Cửa Hàng..
Tại cột Cửa Hàng sẽ tìm kiếm giá trị bị trùng và xóa nguyên dòng của giá trị đó, điều kiện là Tháng nhập hàng của giá trị bị trùng phải nhỏ hơn tháng nhập hàng bị trùng kia..

Vd: Cửa Hàng: 65508151 (có 2 giá trị trùng), Tháng nhập hàng: 42017 và 52017 thì sẽ xóa dòng 42017..

Mong các Thầy GPEX giúp đỡ em ạ..
 

File đính kèm

Em đang cần gấp phần này ạ...mong các Thầy giúp đỡ em... :(
 
Upvote 0
Chào cả nhà GPEX!
Mong cả nhà giúp em hoàn thành bài tập dưới ạ...
trong file đính kèm có 3 cột Tháng nhập hàng, tên người làm Cửa Hàng..
Tại cột Cửa Hàng sẽ tìm kiếm giá trị bị trùng và xóa nguyên dòng của giá trị đó, điều kiện là Tháng nhập hàng của giá trị bị trùng phải nhỏ hơn tháng nhập hàng bị trùng kia..

Vd: Cửa Hàng: 65508151 (có 2 giá trị trùng), Tháng nhập hàng: 42017 và 52017 thì sẽ xóa dòng 42017..

Mong các Thầy GPEX giúp đỡ em ạ..
Bạn sử dụng code này nhé:
Mã:
Sub Test()
    With Sheet1.[A1].CurrentRegion
        .Sort [A1], xlDescending
        .RemoveDuplicates 3, xlYes
    End With
End Sub
 

File đính kèm

Upvote 0
Bạn sử dụng code này nhé:
Mã:
Sub Test()
    With Sheet1.[A1].CurrentRegion
        .Sort [A1], xlDescending
        .RemoveDuplicates 3, xlYes
    End With
End Sub
Cảm ơn Thầy đã giúp đỡ em ạ,
khi em test lại thì kết quả bị sai ạ, ví dụ trong file cửa hàng 65506611 được nhập 03 lần 122016, 62017, 22017.. nếu đúng thì sẽ lấy giá trị 62017 là tháng gần nhất còn những tháng còn lại sẽ bị xoá ạ, nhưng macro của mình đang lấy 122016... Thầy giúp em sửa lại nhé...
Cảm ơn Thầy ạ.
 
Upvote 0
Cảm ơn Thầy đã giúp đỡ em ạ,
khi em test lại thì kết quả bị sai ạ, ví dụ trong file cửa hàng 65506611 được nhập 03 lần 122016, 62017, 22017.. nếu đúng thì sẽ lấy giá trị 62017 là tháng gần nhất còn những tháng còn lại sẽ bị xoá ạ, nhưng macro của mình đang lấy 122016... Thầy giúp em sửa lại nhé...
Cảm ơn Thầy ạ.
Ôi trời đất! Bây giờ xem lại mới để ý ra 122016 tức là tháng 12/2016, 62017 tức là tháng 6/2017. Ai lại đi nhập dữ liệu kiểu đó?
 
Upvote 0
Ôi trời đất! Bây giờ xem lại mới để ý ra 122016 tức là tháng 12/2016, 62017 tức là tháng 6/2017. Ai lại đi nhập dữ liệu kiểu đó?
Dạ! do Sếp yêu cầu vậy ạ.. Nếu nhập 62017 macro chạy không được thì nhập 6/2017 cũng được ạ... Thầy giúp em nhé
 
Upvote 0
Dạ! do Sếp yêu cầu vậy ạ.. Nếu nhập 62017 macro chạy không được thì nhập 6/2017 cũng được ạ... Thầy giúp em nhé
Bạn sửa lại code như sau:
Mã:
Sub Test()
    Dim n As Long
    n = Sheet1.[A65000].End(xlUp).Row 'Xac dinh dong cuoi
    Sheet1.[D1] = "Nam_Thang" 'Tieu de cot phu
    Sheet1.Range("D2:D" & n) = "=RIGHT(RC[-3],4)&TEXT(LEFT(RC[-3],LEN(RC[-3])-4),""00"")" 'Cong thuc cho cot phu
    With Sheet1.[A1].CurrentRegion
        .Sort [D1], xlDescending 'Sap xep theo cot phu (Nam_Thang)
        .RemoveDuplicates 3, xlYes 'Xoa du lieu trung
    End With
    Sheet1.Range("D1:D" & n).Clear 'Xoa cot phu
End Sub
 

File đính kèm

Upvote 0
Bạn sửa lại code như sau:
Mã:
Sub Test()
    Dim n As Long
    n = Sheet1.[A65000].End(xlUp).Row 'Xac dinh dong cuoi
    Sheet1.[D1] = "Nam_Thang" 'Tieu de cot phu
    Sheet1.Range("D2:D" & n) = "=RIGHT(RC[-3],4)&TEXT(LEFT(RC[-3],LEN(RC[-3])-4),""00"")" 'Cong thuc cho cot phu
    With Sheet1.[A1].CurrentRegion
        .Sort [D1], xlDescending 'Sap xep theo cot phu (Nam_Thang)
        .RemoveDuplicates 3, xlYes 'Xoa du lieu trung
    End With
    Sheet1.Range("D1:D" & n).Clear 'Xoa cot phu
End Sub
Em cảm ơn Thầy nhiều ạ.. đúng ý em rồi ạ, code rất chi tiết ạ :D... mà hình như code này xoá tới cột C phải không Thầy... nếu em muốn xoá tới cột khác thì em cần chỉnh ở đoạn nào ạ, vì data thưc tế của em lên đến 30 cột ạ... giúp em lần cuối nhé...
Cảm ơn Thầy nhiều..
 
Upvote 0
Em cảm ơn Thầy nhiều ạ.. đúng ý em rồi ạ, code rất chi tiết ạ :D... mà hình như code này xoá tới cột C phải không Thầy... nếu em muốn xoá tới cột khác thì em cần chỉnh ở đoạn nào ạ, vì data thưc tế của em lên đến 30 cột ạ... giúp em lần cuối nhé...
Cảm ơn Thầy nhiều..
Trong code tôi đã ghi chú thích rất chi tiết rồi đấy, bạn cứ "xào nấu" theo ý mình thôi. Ý tưởng của tôi là: Sắp xếp dữ liệu theo Tháng nhập giảm dần (vì cột A chưa chuẩn nên tôi thêm cột D làm cột phụ). Sau đó sử dụng chức năng Remove Duplicates để xóa dữ liệu trùng theo cột C (Cửa hàng), hiển nhiên là chức năng này chỉ giữ lại bản ghi trên cùng, tức là bản ghi ứng với Tháng nhập sau cùng. Vậy là xong.
 
Upvote 0
Trong code tôi đã ghi chú thích rất chi tiết rồi đấy, bạn cứ "xào nấu" theo ý mình thôi. Ý tưởng của tôi là: Sắp xếp dữ liệu theo Tháng nhập giảm dần (vì cột A chưa chuẩn nên tôi thêm cột D làm cột phụ). Sau đó sử dụng chức năng Remove Duplicates để xóa dữ liệu trùng theo cột C (Cửa hàng), hiển nhiên là chức năng này chỉ giữ lại bản ghi trên cùng, tức là bản ghi ứng với Tháng nhập sau cùng. Vậy là xong.
Dạ! Em hiểu rồi ạ...

Cảm ơn Thầy chúc Thầy sức khoẻ và thành công ạ..!!
 
Upvote 0
Dạ! Em hiểu rồi ạ...

Cảm ơn Thầy chúc Thầy sức khoẻ và thành công ạ..!!
Bạn cứ thử sức mình đi, dựa vào ý tưởng đó là làm được thôi. Nếu loay hoay mãi mà vẫn không xong thì lại hỏi tiếp, mỗi ngày tích góp một ít rồi bạn sẽ tự làm được nhiều bài toán phức tạp hơn nữa kìa.
Chúc bạn thành công.
 
Upvote 0
Web KT

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

Back
Top Bottom