Thank pro, mình áp dụng công thức sẵn của bạn chứ thực ra chưa hiểu.hi
Lần sau không viết tắt nhé. Viết "a", "ak", "e" là không tôn trọng người khác.
Ngồi buồn giải thích chút. Lần sau bạn tự tìm tài liệu và tự ̣đọc để hiểu các hàm mà người khác giúp.
ROW(F$1:F$500) trả về mảng 500 giá trị: 1, 2, ..., 500
F$1:F$500=A$2 trả về mảng 500 giá trị: false, true, false, false, false, false, true, true, true, false, (490 false)
ROW(F$1:F$500) / (F$1:F$500=A$2) trả về mảng có 500 giá trị: #DIV/0!, 2, #DIV/0!, #DIV/0!, #DIV/0!, #DIV/0!, 7, 8, 9, (491 #DIV/0!)
(chia cho false đồng nghĩa với chia cho 0 -> lỗi chia cho 0)
6 trong AGGREGATE có nghĩa là bỏ qua các giá trị lỗi. Như vậy trong mảng kia chỉ xét 2, 7, 8, 9 và bỏ qua 496 giá trị lỗi #DIV/0!
15 trong AGGREGATE có nghĩa là tính SMALL.
Tại B3 có ROWS(F$1:F1) -> trả về 1, Tại B4, B5, B6 sẽ là ROWS(F$1:F2), ROWS(F$1:F3), ROWS(F$1:F4) -> trả về 2, 3, 4
-> tại B3, B4, B5, B6 có SMALL({2, 7, 8, 9], 1), SMALL({2, 7, 8, 9], 2), SMALL({2, 7, 8, 9], 3), SMALL({2, 7, 8, 9], 4), tức trả về 2, 7, 8, 9.
Vậy tại B3, B4, B5, B6 có INDEX(G$1:G$500, 2), INDEX(G$1:G$500, 7), INDEX(G$1:G$500, 8), INDEX(G$1:G$500, 9), tức trả về G2, G7, G8 và G9.
Hãy đọc và hiểu các hàm dùng trong công thức.