=IF(ROWS($1:1)>COUNT(Pos);"";INDEX(Data;SMALL(Pos;ROWS($1:1))))
ai giải thích hộ em đoạn hàm trên được ko ạ.
Đang rảnh nên vọc 1 chút.
Dạng công thức này dùng để trích lọc các dòng dữ liệu trong name
Data thoả điều kiện mà name
Pos quy định
Pos sẽ đánh dấu
Data thoả điều kiện nào đó bằng số thứ tự tăng dần
Để dễ hiểu hơn, xét VD cụ thể này:
Ta có vùng data A1:B4 như sau:
--------A------------B------
-------Tên-------Năm sinh
1--Nguyen Van A -- 1980
2--Nguyen Van B -- 1990
3--Nguyen Van C -- 1975
4--Nguyen Van D -- 1991
Vùng A1:B4 có thể được định nghĩa bằng tên do người dùng đặt , ví dụ
data bằng cách nhấn Ctrl-F3 và khai báo trong đó.
Giả sử yêu cầu trích lọc danh sách trong data những người thoả điều kiện sinh từ năm 1990 trở về sau.
Ta làm như sau:
Tại A5: INDEX(data,
n)
Tại A6: INDEX(data,
n)
Nếu muốn làm tự động, ta phải cho excel hiểu tham số
n=2 tại dòng thứ 1 (A5), khi copy xuống sẽ là tham số
n=4 tại dòng thứ 2 (A6)
Người ta thường dùng
n=SMALL(Vùng vị trí,dãy số thứ tự tăng dần), hay là SMALL(Pos,ROWS($1:1))
Trong đó name P
os = là dãy số thứ tự tăng dần từ 1 cho đến số dòng tối đa của
data thoả điều kiện
Trong name
, Pos được khai báo = IF($B$1:$B$4>=1990,ROW($B$1:$B$4)-ROW($B$1)+1,"")= IF($B$1:$B$4>=1990,{1,2,3,4},"")=dãy số {"",2,"",4}
Như vậy, n= SMALL(Pos,ROWS($1:1))=SMALL({"",2,"",4},ROWS($1:1))
Tại dòng đầu tiên, ROWS($1:1) có giá trị là 1, ta có n=SMALL({"",2,"",4},1)=2, =>A5: INDEX(data,
2)
Tại dòng kế tiếp, ROWS($1:2) có giá trị là 2, ta có n=SMALL({"",2,"",4},2)=4,=>A6: INDEX(data,
4)
Phần
IF(ROWS($1:1)>COUNT(Pos), chỉ là bẫy lỗi trả về ô trống khi hết dữ liệu thoả yêu cầu.