Giải thích thêm chút cho dễ hiểu:
Giải thuật chung:
INVOICE là 1 dãy ô, mỗi ô có chứa Text. Sort INVOICE nghĩa là so sánh từng ô với các ô còn lại trong INVOICE, gán cho ô đó 1 con số tương ứng với độ lớn của ô trong INVOICE. Sau đó, dùng hàm SMALL tham số k tăng dần cho từng dòng (dùng hàm ROW), kết hợp INDEX để sort
Ví dụ:
INVOICE = {A,D,C,B}
COUNTIF(INVOICE,"<"&A)=0 => Có 0 ô trong INVOICE <A. Tức là A nhỏ nhất
COUNTIF(INVOICE,"<"&D)=3 => Tương tự: D nhỏ thứ 3
COUNTIF(INVOICE,"<"&C)=2
COUNTIF(INVOICE,"<"&B)=1
==> COUNTIF(INVOICE,"<"&INVOICE) = {0,3,2,1}
SMALL(COUNTIF(INVOICE,"<"&INVOICE),ROW(1:1)) = 0
MATCH(SMALL(COUNTIF(INVOICE,"<"&INVOICE),ROW(1:1)),COUNTIF(INVOICE,"<"&INVOICE),0) = MATCH(0,{0,3,2,1}) =1 trả về vị trí giá trị nhỏ thứ 1 (=ROW(1:1)) trong INVOICE.
Cuối cùng dùng INDEX để lấy giá trị