Công thức trong file bạn gửi
(không cần nhấn Ctrl+Shift+Enter vì đã sử dụng Index(,) trong hàm Match() rồi) hoàn toàn chung ý với hai bạn
@befaint và
@vanthinh3101
1. Tuy nhiên, để hoàn chỉnh bạn phải thêm trong điều kiện lọc đoạn công thức:
($B$2:$B$480=0) để loại bỏ các giá trị rỗng nằm lẫn lộn trong Vùng B2:B480, cụ thể:
=IFERROR(INDEX($B$2:$B$480,MATCH(0, INDEX( COUNTIF($C$1:C1,$B$2:$B$480)+($B$2:$B$480=0) ,),0)),"") chỉ nhấn Enter khi kết thúc.
Nếu bỏ Index(...,) (màu nâu) thì sẽ giống công thức của hai bạn trên, tức đồng nghĩa bạn phải nhấn Ctrl+Shift+Enter.
2. Góp vui thêm cho bạn vài cách lọc "khử trùng":
- Giữ nguyên thứ tự phát sinh từ trên xuống dưới của cột cần lấy dữ liệu, kết quả trả về giống kết quả từ công thức bạn đang sử dụng:
- =OFFSET($C$1,AGGREGATE(15,6,ROW($1:$500)/(COUNTIFS(OFFSET($C$2,,,ROW($1:$500)),$C$2:$C$502)=1),ROW(A1)),) chỉ nhấn Enter khi kết thúc
- Loại trùng đồng thời sắp xếp từ nhỏ đến lớn:
- Không dùng cột phụ:
- =AGGREGATE(15,6,$C$2:$C$502/(COUNTIFS(OFFSET($C$2,,,ROW($1:$500)),$C$2:$C$502)=1),ROW(A1)) chỉ nhấn Enter khi kết thúc
- Dùng cột phụ:
- Cột phụ: B2=COUNTIF($C$2:$C2,$C2) chỉ nhấn Enter khi kết thúc.
- Kết quả: D2=AGGREGATE(15,6,$C$2:$C$480/($B$2:$B$480=1),ROW(A1)) chỉ nhấn Enter khi kết thúc.
Bạn nên nhớ rằng dùng công thức Mảng lọc khử trùng sẽ ảnh hưởng đến tốc độ xử lý của máy tính, do vậy nếu dùng <1000 còn gắng gượng, ngược lại sẽ có hiện tượng 'đơ máy' hoặc thậm chí treo máy.
Trong trường hợp dữ liệu nhiều nên dùng VBA để khử trùng.
Chúc anh em ngày thiệt vui.