Tổng hợp các phương pháp trích lọc danh sách duy nhất (1 người xem)

Liên hệ QC

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

hoangdanh282vn

Nguyễn Cảnh Hoàng Danh
Thành viên danh dự
Tham gia
21/12/07
Bài viết
1,902
Được thích
5,306
Nghề nghiệp
Kinh doanh các mặt hàng văn phòng phẩm
Giải pháp trích lọc ra danh sách duy nhất đã có nhiều bài giải đáp. Nhưng câu trả lời vẫn chủ yếu dựa vào 2 hàm là INDEX và INDIRECT. Vậy còn cách nào khác để thực hiện việc này không?
Để tìm hiểu thêm về các công thức và mảng, mình có một câu hỏi như sau :
Trích lọc ra danh sách duy nhất, không dùng cột phụ, không sử dụng 2 hàm index và indirect.
 

File đính kèm

Giải pháp trích lọc ra danh sách duy nhất đã có nhiều bài giải đáp. Nhưng câu trả lời vẫn chủ yếu dựa vào 2 hàm là INDEX và INDIRECT. Vậy còn cách nào khác để thực hiện việc này không?
Để tìm hiểu thêm về các công thức và mảng, mình có một câu hỏi như sau :
Trích lọc ra danh sách duy nhất, không dùng cột phụ, không sử dụng 2 hàm index và indirect.
Không INDEX hoặc INDIRECT thì dùng LOOKUP vậy! Lo gì
Đặt name
Mã:
DS =OFFSET($B$2,,,COUNTA($B$2:$B$1000),)
DK_1 =IF(MATCH(DS,DS,0)=ROW($1:$1000),ROW($1:$1000),"")
DK =IF(ISNA(DK_1),"",DK_1)
và cuối cùng là công thức:
Mã:
=IF(ROWS($1:1)>COUNT(DK),"",LOOKUP(SMALL(DK,ROWS($1:1)),DK,DS))
File đính kèm đây!
 

File đính kèm

Lần chỉnh sửa cuối:
Dùng Advanced Filter cũng được mà !
 
Lần chỉnh sửa cuối:
Không INDEX hoặc INDIRECT thì dùng LOOKUP vậy! Lo gì
Đặt name
Mã:
DS =OFFSET($B$2,,,COUNTA($B$2:$B$1000),)
DK_1 =IF(MATCH(DS,DS,0)=ROW($1:$1000),ROW($1:$1000),"")
DK =IF(ISNA(DK_1),"",DK_1)
và cuối cùng là công thức:
Mã:
=IF(ROWS($1:1)>COUNT(DK),"",LOOKUP(SMALL(DK,ROWS($1:1)),DK,DS))

Bác làm hay lắm, tiếc là ko có file để test thử.
Bác nào có ý kiến khác không, vẫn còn vài cách nữa
 
Vẫn dùng các name ở trên, nếu không thích LOOKUP thì dùng OFFSET nhé:
Công thức:
Mã:
C2 =IF(ROWS($1:1)>COUNT(DK),"",OFFSET($A$2,SMALL(DK,ROWS($1:1))-1,))
Kéo fill công thức xuống
 
Ý Hoangdanh muốn dùng công thức mảng, Mình đang có hướng dùng điều kiện Countif(..)=1 kết hợp công thức mảng...nhưng chưa ra.
 
Lần chỉnh sửa cuối:
Thêm 1 cách trích lọc danh sách duy nhất, dùng công thức mảng. Cách này của ttphong2007 ; chỉ dùng 1 Name DS
Các bạn tham khảo.

TDN
 

File đính kèm

Giả sử (thực tế có lẽ là không) trong danh sách mình có đồng thời chữ "a" và "A" vậy làm thế nào để lấy được cả 2
 
Giả sử (thực tế có lẽ là không) trong danh sách mình có đồng thời chữ "a" và "A" vậy làm thế nào để lấy được cả 2
Tình huống này hiếm khi cần đến, vì khi ta trích lọc thì nguyễn văn a cũng xem giống như NGUYỄN VĂN A (lý nào lại khác)
Do hàm MATCH không phân biệt HOA và thường
Tuy nhiên đây cũng là câu hỏi khá hay!
 
Không được đâu! vì code chỉ làm việc với ký tự đơn
nguyễn văn a thì code thế nào đây cho nó nhận biết sự khác nhau với NGUYỄN VĂN A
Em chỉ nói dùng cho các chữ A,B,C như VD trên thôi.
Nếu là Tên thì trở lại câu thách đố kỳ trước của em rồi (trích lọc theo điều kiện và sort)
 
Lần chỉnh sửa cuối:

File đính kèm

Lần chỉnh sửa cuối:
Rõ ràng bạn nói không dùng INDEX và INDIRECT cơ mà
 
Rõ ràng bạn nói không dùng INDEX và INDIRECT cơ mà

Bác này không đọc kỹ gì cả. em nói còn 2 cách nữa đó là Vlookup và Evaluate, sẵn tiện em cho nốt tất cả các cách khác vào, kể cả dùng cột phụ để các bạn khác tham khảo và so sánh thôi
 
Bác này không đọc kỹ gì cả. em nói còn 2 cách nữa đó là Vlookup và Evaluate, sẵn tiện em cho nốt tất cả các cách khác vào, kể cả dùng cột phụ để các bạn khác tham khảo và so sánh thôi
Tôi thấy như vầy:
Giãi pháp thì có nhiều nhưng thật sự không quan trọng tí nào! Cái chính là thuật toán!
Bạn làm đủ các cách nhưng thuật toán vẩn tập trung ở 1 điểm là: MATCH hoặc COUNTIF mà thôi (hỏng có nó mà làm được mới tài đấy)
Theo tôi hiểu thuật toán mới cái chính, nếu không chúng ta suốt đời cũng chỉ làm công việc copy của người khác về xài mà chẳng hiểu gì
Nếu là tôi hướng dẩn cho người khác làm bài toán này, tôi sẽ chỉ họ điểm quan trọng nhất ở đây là cách đặt điều kiện:
=IF(MATCH(DS,DS,0)=ROW(....
Có nó rồi thì mấy phần sau chỉ là chuyện nhỏ
 
Lần chỉnh sửa cuối:
Xin Chào các bạn!!
Tôi mới gia nhập vào thành viên của Diễn đàn nên có gì nhờ các bạn hướng dẫn thêm.
Các bạn nói cụ thể hơn đi.
Cảm ơn và Thân chào các bạn..
 
Chào bạn hoangdanh282vn,
Tôi là một thành viên mới tham gia GPE, sau khi đọc topic của bạn về tổng hợp các phương pháp trích lọc duy nhất, tôi thấy kiến thức Excel của mình còn nhiều hạn chế. Bạn có thể cho tôi hỏi một số vấn đề như sau:
1. Cách đặt công thức trong Name, ý nghĩa và áp dụng các công thức trong Name.
2. Bạn có thể giải thích rõ hơn về phương pháp trích lọc (Các công thức, hàm trích lọc v.v...)
Tôi có một file "Ví dụ" gửi kèm mong bạn giúp tôi lọc ra các thông tin liên quan đến một mã khách hàng được chọn, ví dụ: nhập mã khách hàng tại ô D2 Sheet3, thì trong bảng sẽ hiện đầy đủ các thông tin của khách hàng đó như Inv.No, Total Qty, Money Collect của tất cả các ngày mà khách hàng đó đã giao dịch. Bạn giải thích rõ các công thức giúp tôi nhé!
Cảm ơn bạn nhiều!
Ps: Tôi không thể tải được file đính kèm, tôi xin gửi bạn file "vi du" qua Email.
 
tự nhiên mình quên mất cách chuyển đổi từ số sang viết thành dạng chữ, bạn nào nhớ chỉ giùm mình với. Cam ơn nhiều nhé!
xin gửi về :thuy_chinh20051985@yahoo.com
 
Cảm ơn bạn Hoangdanh vì đã reply cho mình, mình sẽ gửi lại file cho bạn qua email vì mình không làm cách nào upload file lên diễn đàn. Rất mong sự giúp đỡ của bạn!
 
Sao em vào download file đính kèm thì toàn đc file HTML vậy?
 
Mình thấy có thể dùng Pivot trong một số trường hợp.
 
Trích lọc - Lỗi khi danh sách có ô để trống

Mình gửi các bạn file tổng hợp các phương pháp :
Và đây là một ví dụ trích lọc duy nhất nâng cao, các bạn xem trong link này:
http://www.giaiphapexcel.com/forum/showthread.php?t=12035

Trước hết cảm ơn về bộ sưu tập các PP TrLọc mà bạn đã upload. Trong khi tìm hiểu, thấy có những vấn đề nghiêm trọng nên đề nghị bạn tiếp tục cải tiến xử lý 1 số lỗi:
- Nếu chèn thêm vào đầu các danh sách kết quả, sẽ dẫn đến lọc sót
- Nếu chèn thêm 1 ô trống vào giữa danh sách gốc thì sẽ mất hòan tòan tất cả các danh sách đã lọc - dù là dùng cách nào đi chăng nữa.

Thân!
 
Mình xin lỗi nếu trả lời ngây thơ quá, nhưng sao ko dùng công cụ Remove Duplicaté (Excel 2007) có sẵn...
Giải pháp trích lọc ra danh sách duy nhất đã có nhiều bài giải đáp. Nhưng câu trả lời vẫn chủ yếu dựa vào 2 hàm là INDEX và INDIRECT. Vậy còn cách nào khác để thực hiện việc này không?
Để tìm hiểu thêm về các công thức và mảng, mình có một câu hỏi như sau :
Trích lọc ra danh sách duy nhất, không dùng cột phụ, không sử dụng 2 hàm index và indirect.
 
Cho em hỏi vì sao phải chuyển từ DK_1 sang DK. Em thấy F9 lên kết quả như nhau nhưng thử đổi trong ô C2 thành DK_1 thì kết quả là N/A
 
Cách trích lọc danh sách duy nhất như file đính kèm dưới đây rất là hay. nhưng cho em hỏi có cách nào đưa ra danh sách duy nhất như vậy mà không dùng cách đặt các name DS, DK, DK_1 không ạ? vì bảng tính của em dự kiến sẽ để trên google sheet để mọi người công ty cùng truy cập mà google sheet thì ko đặt name .
 

File đính kèm

Cách trích lọc danh sách duy nhất như file đính kèm dưới đây rất là hay. nhưng cho em hỏi có cách nào đưa ra danh sách duy nhất như vậy mà không dùng cách đặt các name DS, DK, DK_1 không ạ? vì bảng tính của em dự kiến sẽ để trên google sheet để mọi người công ty cùng truy cập mà google sheet thì ko đặt name .
Thứ tự kết quả có thay đổi nhưng vẫn là duy nhất
Dùng công thức mảng
Mã:
C2=IF(LARGE((COUNTIF($C$1:$C1,$A$2:$A$24)<1)*ROW($A$2:$A$24),1)=0,"",INDEX($A$1:$A$24,LARGE((COUNTIF($C$1:$C1,$A$2:$A$24)<1)*ROW($A$2:$A$24),1)))
Kết thúc ctrl+shift+enter
Copy xuống dưới

Nếu dùng excel>=2010 thì công thức sẽ gọn hơn
 

File đính kèm

Cách trích lọc danh sách duy nhất như file đính kèm dưới đây rất là hay. nhưng cho em hỏi có cách nào đưa ra danh sách duy nhất như vậy mà không dùng cách đặt các name DS, DK, DK_1 không ạ? vì bảng tính của em dự kiến sẽ để trên google sheet để mọi người công ty cùng truy cập mà google sheet thì ko đặt name .
thi thử dùng cái này xem sao không cần đặt name hay CTRL+shift+enter
=IFERROR(INDEX($A$2:$A$101,MATCH(TRUE,INDEX(ISERROR(MATCH($A$2:A$101,$D$1:D1,0)),0),0)),"")
hoặc
=IF($D1=0,0,INDEX($A$2:$A$101,MATCH(TRUE,INDEX(ISERROR(MATCH($A$2:A$101,$D$1:D1,0)),0),0)))
 

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

Back
Top Bottom