Trích lọc danh sách duy nhất trong danh sách có chứa dòng rỗng (1 người xem)

Liên hệ QC

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

Trích lọc danh sách duy nhất trong danh sách có chứa dòng rổng

Cảm ơn bạn ndu96081631
user_offline.gif
thật nhiều. Nhờ công thức của bạn mà mình đã tiết kiệm rất nhiều thời gian để tính công (sản phẩm mà công nhân làm ra) cho công nhân. Một lần nữa xin cảm ơn.
 
SortMatrix

Các anh xem giúp em file lọc dữ liệu này với. Em dùng SortMatrix của anh gì đấy nhưng chưa cho kết quả chính xác theo mong muốn của em. Nhờ các anh giúp đỡ. Cảm ơn các anh.
 

File đính kèm

Lọc như vầy còn nhanh gọn hơn nữa:
PHP:
Sub Filter_Unique()
    Dim Src As Range, Des As Range
    Application.ScreenUpdating = False
    Set Src = Range("A5:A" & [A65536].End(xlUp).Row)
    [C5].CurrentRegion.ClearContents
    Src.AdvancedFilter Action:=2, CopyToRange:=[C5], Unique:=True
    Set Des = Range("C5:C" & [C65536].End(xlUp).Row)
    Des.Sort Key1:=Des(2), Order1:=1, Header:=1
    Application.ScreenUpdating = True
End Sub
Khỏi cần đặt name
 

File đính kèm

Các anh xem giúp em file lọc dữ liệu này với. Em dùng SortMatrix của anh gì đấy nhưng chưa cho kết quả chính xác theo mong muốn của em. Nhờ các anh giúp đỡ. Cảm ơn các anh.
Bạn làm giống như bài tôi vừa đưa lên (chỉ sửa lại 1 tí về vị trị các cell) là ra ngay kết quả như mong muốn!
PHP:
Sub Filter_Unique()
    Dim Src As Range, Des As Range
    Application.ScreenUpdating = False
    Set Src = Range("A1:A" & [A65536].End(xlUp).Row)
    [E1].CurrentRegion.ClearContents
    Src.AdvancedFilter Action:=2, CopyToRange:=[E1], Unique:=True
    Set Des = Range("E1:E" & [E65536].End(xlUp).Row)
    Des.Sort Key1:=Des(2), Order1:=1, Header:=1, DataOption1:=1
    Application.ScreenUpdating = True
End Sub
 

File đính kèm

1*/ Sao lười quá zậy không biết!
2*/ Mình đoán rằng bạn chưa quen xài hàm mảng; Muốn thêm bớt thì phải xóa nguyên mảng cũ đi; chọn vùng khác bự hơn & nhập hàm vô đó!

Gửi SA
tôi làm như bạn rùi mà vẫn không được, có gì xem lại cho tôi với nhé
Xin chân thành cảm ơn.}}}}}
 
Lần chỉnh sửa cuối:
Lọc như vầy còn nhanh gọn hơn nữa:
PHP:
Sub Filter_Unique()
    Dim Src As Range, Des As Range
    Application.ScreenUpdating = False
    Set Src = Range("A5:A" & [A65536].End(xlUp).Row)
    [C5].CurrentRegion.ClearContents
    Src.AdvancedFilter Action:=2, CopyToRange:=[C5], Unique:=True
    Set Des = Range("C5:C" & [C65536].End(xlUp).Row)
    Des.Sort Key1:=Des(2), Order1:=1, Header:=1
    Application.ScreenUpdating = True
End Sub
Khỏi cần đặt name

To ndu96081631
thực sự tôi đang cần cái này, thật may mà đọc được bài viết của bạn, nhưng tôi vẫn không hiểu hàm của bạn như thế nào nhỉ. tôi gà cái này lắm, nếu câu hỏi buồn cười thì đừng cười to quá nhé.ke ke
Chân thành cảm ơn. Đóng góp của các bạn rất có ích cho tôi
 
Lần chỉnh sửa cuối:
Có thể dùng lại biến thì viết như sau:
PHP:
Sub Filter_Unique()
    Dim Src As Range
    Application.ScreenUpdating = False
    Set Src = Range("A1:A" & [A65536].End(xlUp).Row)
    [E1].CurrentRegion.ClearContents
    Src.AdvancedFilter Action:=2, CopyToRange:=[E1], Unique:=True
    Set Src = Range("E1:E" & [E65536].End(xlUp).Row)
    Src.Sort Key1:=Src(2), Order1:=1, Header:=1, DataOption1:=1
    Application.ScreenUpdating = True
End Sub
Diễn giải đơn giản như sau:
Sub Filter_Unique() |
Dim Src As Range | Tạo biến Src với tính chất là Range Application.ScreenUpdating = False | Đặt thuộc tính nạp lên mà hình là False Set Src = Range("A1:A" & [A65536].End(xlUp).Row) | Nạp dữ liệu vùng là từ A1 đến hết rồi đặt nó cho biến Src
[E1].CurrentRegion.ClearContents | Thực hiện việc xóa dữ liệu cho vùng tình từ E1 Src.AdvancedFilter Action:=2, CopyToRange:=[E1], Unique:=True | Thực hiện lệnh lọc Advanced Filter cho vùng này và copy nó sang vị trí E1 Set Src = Range("E1:E" & [E65536].End(xlUp).Row) | Nạp lại vùng từ E1 đến hết cho biến Src để Sort dữ liệu.
Src.Sort Key1:=Src(2), Order1:=1, Header:=1, DataOption1:=1 | Thực hiện Sort dữ liệu tăng dần ( Order:=1; với 1 = xlAscending ), và bỏ dòng đầu ( Header:=1 )
Application.ScreenUpdating = True | Trả lại giá trị trên màn hình
End Sub
Thân.
 
Lần chỉnh sửa cuối:
Vầy mới thật là "cực ngắn" đây:
PHP:
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
Diển giãi:
- Dòng 1: Xóa sạch vùng dử liệu cột E trước khi lọc
- Dòng 2: Lọc duy nhất với dử liệu ở cột A, copy sang E1
- Dòng 3: Sort lại dử liệu sau khi lọc để loại bỏ các cell rổng
Đơn giản không? Tất cả đều tương đương với việc bạn làm bằng tay, dùng Advanced Filter và Sort (trên menu Data) ---> Chẳng qua ghi lại thành code cho nó tiện thôi
 
Lần chỉnh sửa cuối:
Xin gửi lên 1 lần rút gọn nữa! Mong rằng nó là cái "Không phải" cuối cùng! Hiii
PHP:
Sub Filter_Unique()
  [E1].CurrentRegion.ClearContents
  Range([A1], [A65536].End(xlUp)).AdvancedFilter 2, , [E1], 1
  [E1].CurrentRegion.Offset(1).Sort [E1], DataOption1:=1
End Sub
Thân.
 
Xin gửi lên 1 lần rút gọn nữa! Mong rằng nó là cái "Không phải" cuối cùng! Hiii
PHP:
Sub Filter_Unique()
  [E1].CurrentRegion.ClearContents
  Range([A1], [A65536].End(xlUp)).AdvancedFilter 2, , [E1], 1
  [E1].CurrentRegion.Offset(1).Sort [E1], DataOption1:=1
End Sub
Thân.
Uh... quả có ngắn hơn thật!
Giờ nhìn lại mấy code hồi trước mình viết sao nó... buồn cười quá ---> Dài nhằng và lượm thượm... viết dở ẹc mà mạnh dạn post ghê
Nhưng nếu không có "ngày trước" thì cũng sẽ không có "ngày nay" , đúng không?
Tự cười mình để tiếp tục học hỏi và tiến bộ!
Các bạn mới học cũng nên bắt tay vào ngay hôm nay đi (năm con Trâu, ta cày như Trâu càng tốt)
Hy vọng rằng sau khi các bạn xem qua bài viết Chập chững đến VBA! của sư phụ SA_DQ rồi vò đầu bứt tóc thì cũng đến 1 ngày nào đó các bạn sẽ tự cười mình như tôi đang cười chính tôi của "ngày trước" đây! (dù "ngày nay" chẳng giỏi giang gì nhưng cũng thấy bớt tệ hơn "ngày trước")
Tản mạn 1 chút
ndu
 
Lần chỉnh sửa cuối:
Em không nghĩ vậy!
Vì trên diễn đàn còn rất nhiều người đọc. Nếu ai cũng viết code cao siêu hết thì chẳng ai còn hiểu gì cả? Vậy diễn đàn của mình sẽ ở trên mây đó bác.
Em vẫn viết code đơn giản để mọi người mới bắt đầu còn biết đường mà làm theo nữa và học nữa.
Đâu ai cũng hiểu những code này đâu. Nếu vào mà bị quăng Bom liền thì hư đường hư muối hết.
Nếu cứ sau 1 bài bạn nâng dần code lên thì người ta sẽ học hỏi được biết là bao nhiêu.
Em và bác cùng tung hứng để đưa thành viên GPE lên tầm / tầm /tầm/... dưới mình là được. Hiii
Thân.
 
Lọc danh sách họ tên theo Phòng ban đơn vị

Như ta đã biết, để lấy dc danh sách duy nhất trong 1 danh sách có sẳn, người ta thường dùng Advanced Filter\Unique Only...
Thế nhưng tôi thí nghiệm và nhận xét rằng: Nếu danh sách có chứa dòng rổng thì danh sách dc trích ra cũng có chứa dòng rổng luôn...
Vậy xin hỏi các cao thủ giãi pháp nào để loại bỏ luôn các dòng rổng này
ANH TUẤN


Chào Anh Tuấn !
Các anh có thể Hưỡng dân cách làm Lọc Danh sách họ và tên theo Từng Bộ phận phòng ban được không. Cụ thể em muốn làm như sau:
1/ Chẳng hạn khi ấn vào Phòng Kế toán thi hiện ra danh sách họ tên nhân viên phong kê toán

2/ Em muốn làm Họ một cột và tên môt cột . VD Nuyễn Văn Kiên thì Cột 1 là Nguyễn Văn và Cột 2 là Kiên
 

File đính kèm

Xin gửi lên 1 lần rút gọn nữa! Mong rằng nó là cái "Không phải" cuối cùng! Hiii
PHP:
Sub Filter_Unique()
  [E1].CurrentRegion.ClearContents
  Range([A1], [A65536].End(xlUp)).AdvancedFilter 2, , [E1], 1
  [E1].CurrentRegion.Offset(1).Sort [E1], DataOption1:=1
End Sub
Thân.

Tôi thử code này cho ví dụ trong file đính kèm tại bài 1 của anhtuan1066 nhưng không được ? Theo tôi thì do dòng lệnh thứ 2 cho danh sách lọc tại cột E vẫn có dòng rỗng vì vậy sử dụng CurrentRegion trong dòng lệnh thứ 3 sẽ không chọn được hết danh sách do đó khi Sort không loại được dòng trống. Không biết có phải như vậy không ? xem file đính kèm

Vì không phải ai cũng biết sửa code nên bạn nào biết cách tạo thêm Inputbox thì bổ sung để nhiều người có thể sử dụng được (người dùng khai báo vùng dữ liệu và vùng chứa kết quả vào Inputbox sao cho phù hợp với dữ liệu của mình)
 

File đính kèm

Cách thứ 1 có thể viết lại như vầy:
PHP:
Sub Loc_Po_pikachu()
    [E1].CurrentRegion.ClearContents
    Range([A1], [A65536].End(xlUp)).AdvancedFilter 2, , [E1], 1
    Range([E1], [E65536].End(xlUp)).Offset(1).Sort [E1], DataOption1:=1
End Sub

Nếu dùng Inputbox thì không biết là bác dùng bao nhiêu Inputbox nên em dùng cho 2 vị trí luôn.
PHP:
Sub Loc_Po_pikachu()
Dim vung1 As Range, vung2 As Range
Set vung1 = Application.InputBox("Chon vung du lieu: ", Type:=8)
Set vung2 = Application.InputBox("Chon vi tri luu du lieu: ", Type:=8)
    [vung2].CurrentRegion.ClearContents
    vung1.AdvancedFilter 2, , vung2, 1
    Range(vung2, Cells(65000, vung2.Column).End(xlUp)).Offset(1).Sort vung2, DataOption1:=1
End Sub

Hoặc có thể viết ngắn như vầy:
PHP:
Sub Loc_Po_pikachu()
With Application.InputBox("Chon vi tri luu du lieu: ", Type:=8)
    .CurrentRegion.ClearContents
    Application.InputBox("Chon vung du lieu: ", Type:=8).AdvancedFilter 2, , .Cells, 1
    Range(.Cells, Cells(65000, .Column).End(xlUp)).Offset(1).Sort .Cells, DataOption1:=1
End With
End Sub
Thân.
 
Lần chỉnh sửa cuối:
@ Po_Pikachu
mình đã chạy thử kết quả rất tốt nhưng khi nhấn nút Cancel thì báo lỗi, bạn kiểm tra và sửa giúp nhé
Cảm ơn!
 
Muốn Cancel thì thêm dòng On Error Resume Next vào là được.
PHP:
Sub Loc_Po_pikachu()
On Error Resume Next
With Application.InputBox("Chon vi tri luu du lieu: ", Type:=8)
    .CurrentRegion.ClearContents
    Application.InputBox("Chon vung du lieu: ", Type:=8).AdvancedFilter 2, , .Cells, 1
    Range(.Cells, Cells(65000, .Column).End(xlUp)).Offset(1).Sort .Cells, DataOption1:=1
End With
End Sub
Thân.
 
Trả về danh sách các phần tử duy nhất trong một dãy.

Đầu tiên cho em sorry anh Anhtuan1066 và các anh chị trong diễn đàn giải pháp excel trước nha.
Em có coi hướng dẫn cách post bài mới nhưng vẫn chưa hiểu "bạn click vào biểu tượng
newthread.gif
ở góc trái ở mỗi box", em tìm hoài nhưng vẫn không thấy biểu tượng đó ở đâu? phải vô đường dẫn nào? vì vậy em đành mượn nhờ bài của anh anhtuan1066 để hỏi bài toán excel em đang bị bí. Anh chị giúp dùm em với, em cám ơn!

Em tải bài này của anh Trần Thanh Phong tổng hợp và biên dịch (có tham khảo bài của chị handung trên GPE) - trang 27, nhưng khi e làm thì công thức không chạy được? em có gửi kèm file của em lập dựa theo công thức của anh Thanh Phong.
 

File đính kèm

Đầu tiên cho em sorry anh Anhtuan1066 và các anh chị trong diễn đàn giải pháp excel trước nha.
Em có coi hướng dẫn cách post bài mới nhưng vẫn chưa hiểu "bạn click vào biểu tượng
newthread.gif
ở góc trái ở mỗi box", em tìm hoài nhưng vẫn không thấy biểu tượng đó ở đâu? phải vô đường dẫn nào? vì vậy em đành mượn nhờ bài của anh anhtuan1066 để hỏi bài toán excel em đang bị bí. Anh chị giúp dùm em với, em cám ơn!

Em tải bài này của anh Trần Thanh Phong tổng hợp và biên dịch (có tham khảo bài của chị handung trên GPE) - trang 27, nhưng khi e làm thì công thức không chạy được? em có gửi kèm file của em lập dựa theo công thức của anh Thanh Phong.

Không biết bạn làm gì hình như là trích lọc ra ds duy nhất đúng không ?
Bạn đến đây tham khảo nhe .có nhiều lắm .đơn giản nhất là dùng Advanced Filter
Loc
Thân
 
Ham VLOOKUP voi Time gan nhat.xls - Giup minh voi

MOng anh giup giup minh voi nhe. Yeu cau minh co ghi trong file dinh kem
 

File đính kèm

MOng anh giup giup minh voi nhe. Yeu cau minh co ghi trong file dinh kem

Topic này đang bàn về trích lọc duy nhất!
Bài của bạn đã được trả lời tại đây: http://www.giaiphapexcel.com/forum/showthread.php?p=136250&posted=1#post136250

Sao bạn post bài nhiều chỗ vậy!?
Thêm nữa, nếu bạn không muốn bài của mình bị xóa thì cần viết bài với tiêu đề và nội dung có dấu tiếng Việt nhé!
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom