Vầy mới thật là "cực ngắn" đây:
Chảo bácPHP:Sub Filter_Unique() [E1].CurrentRegion.ClearContents Range([A1], [A65536].End(xlUp)).AdvancedFilter 2, , [E1], True [E1].CurrentRegion.Sort [E1], 1, Header:=1, DataOption1:=1 End Sub
Em cảm ơn bác về những hướng dẫn của chủ đề này. Em cũng làm thử như hướng dẫn, kết hợp với record marco để ra Code. Em không hiểu sao nó vẫn chưa lọc được danh sách duy nhất.
Ngoài ra vùng dữ liệu để lọc em không muốn "tham lam" lấy cả cột mà muốn chọn lựa thì thế nào ạ?
Mong được giúp đỡ
Link tải file: https://dl.dropbox.com/s/09oke3h6ss74scg/XuatNhapTon.xls?dl=1
Vầy mới thật là "cực ngắn" đây:
Chảo bácPHP:Sub Filter_Unique() [E1].CurrentRegion.ClearContents Range([A1], [A65536].End(xlUp)).AdvancedFilter 2, , [E1], True [E1].CurrentRegion.Sort [E1], 1, Header:=1, DataOption1:=1 End Sub
Em cảm ơn bác về những hướng dẫn của chủ đề này. Em cũng làm thử như hướng dẫn, kết hợp với record marco để ra Code. Em không hiểu sao nó vẫn chưa lọc được danh sách duy nhất.
Ngoài ra vùng dữ liệu để lọc em không muốn "tham lam" lấy cả cột mà muốn chọn lựa thì thế nào ạ?
Mong được giúp đỡ
Link tải file: https://dl.dropbox.com/s/09oke3h6ss74scg/XuatNhapTon.xls?dl=1
Điều kiện để dùng Advanced Filter là DỮ LIỆU PHẢI CÓ TIÊU ĐỀ
Nếu bạn cố tình chọn vùng dữ liệu không bao gồm tiêu đề thì Excel sẽ tự lấy cell đầu làm tiêu đề ---> dẫn đến cái tiêu đề (giả mạo) này có thể bị trùng với 1 em nào đó
Code sửa lại:
Mã:Sub Unique() Sheets("Nhap").Range("D17:D1100").AdvancedFilter 2, , Sheets("TonKho").Range("C5"), True End Sub
Vầy mới thật là "cực ngắn" đây:
Chảo bácPHP:Sub Filter_Unique() [E1].CurrentRegion.ClearContents Range([A1], [A65536].End(xlUp)).AdvancedFilter 2, , [E1], True [E1].CurrentRegion.Sort [E1], 1, Header:=1, DataOption1:=1 End Sub
Em cảm ơn bác về những hướng dẫn của chủ đề này. Em cũng làm thử như hướng dẫn, kết hợp với record marco để ra Code. Em không hiểu sao nó vẫn chưa lọc được danh sách duy nhất.
Ngoài ra vùng dữ liệu để lọc em không muốn "tham lam" lấy cả cột mà muốn chọn lựa thì thế nào ạ?
Mong được giúp đỡ
Link tải file: https://dl.dropbox.com/s/09oke3h6ss74scg/XuatNhapTon.xls?dl=1
Nếu vậy bạn nên dùng Dictionary thì ngon lành mà. Cũng ngắn gọn mà.
Hoặc xử theo kiểu bình dân là sau khi lọc xong xóa nội dung E1 đi, hoặc cut từ E2 đến dòng cuối cột E dán đè lên E1
Code sửa lại:
Mã:Sub Unique() Sheets("Nhap").Range("D17:D1100").AdvancedFilter 2, , Sheets("TonKho").Range("C5"), True End Sub
Sheets("Nhap").Range("D18:D1100").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("C6"), Unique:=True
Em dùng code trên của bác thay cho
thì thấy: 1. Lần đầu báo lỗi như hình gửi kèm. 2. Chạy lần 2 thì không báo lỗi nhưng trong sheet TonKho các dữ liệu trong sheet bị xóa sạch trước khi danh sách lọc xuât hiện. Ẹc ẹcMã:Sheets("Nhap").Range("D18:D1100").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("C6"), Unique:=True
Sub Unique()
With Sheets("TonKho")
Sheets("Nhap").Range("D17:D1100").AdvancedFilter 2, , .Range("C5"), True
.Range("A6:N1000").Sort .[C6], 1, Header:=0
End With
End Sub
Đoán: Nếu bạn dùng thêm đoạn [C6].CurrentRegion.Sort [C6], 1, Header:=0, DataOption1:=1 thì dữ liệu của bạn sẽ... tè lè luôn (và báo lỗi)
Muốn sort thì phải vầy:
Mã:Sub Unique() With Sheets("TonKho") Sheets("Nhap").Range("D17:D1100").AdvancedFilter 2, , .Range("C5"), True .Range("A6:N1000").Sort .[C6], 1, Header:=0 End With End Sub
=Sheet1!$A$3:$A$100
DK=IF(IF(ISERROR((MATCH(DL,DL,0)=ROW(INDIRECT("$1:"&ROWS(DL))))*(DL<>"")),0,(MATCH(DL,DL,0)=ROW(INDIRECT("$1:"&ROWS(DL))))*(DL<>"")),ROW(INDIRECT("$1:"&ROWS(DL))),"")
=IF(ROWS($1:1)<=COUNT(DK),INDEX(DL,SMALL(DK,ROWS($1:1))),"")