Chào mọi người,
Dạo này mình có gặp một bài toán nhỏ là làm sao để lấy ra 3 giá trị nhỏ nhất từ một danh sách dữ liệu trong Excel mà không cần phải sắp xếp lại toàn bộ. Sau một hồi mày mò thì mình cũng tìm ra một cách khá hay ho, muốn chia sẻ lại với anh em trên diễn đàn để cùng thảo luận và học hỏi.
Thông thường, nếu muốn lấy giá trị nhỏ nhất, chúng ta sẽ dùng hàm SMALL. Ví dụ, để lấy giá trị nhỏ nhất trong vùng A1:A10, ta dùng =SMALL(A1:A10, 1). Để lấy giá trị nhỏ thứ hai, ta dùng =SMALL(A1:A10, 2), và cứ thế tiếp tục.
Tuy nhiên, nếu danh sách của bạn rất dài và bạn chỉ muốn lấy ra một vài giá trị nhỏ nhất mà không muốn làm ảnh hưởng đến thứ tự dữ liệu gốc, hoặc bạn muốn nó linh hoạt hơn một chút, thì có thể kết hợp INDEX với SMALL.
Công thức có thể trông như thế này:
=INDEX(A1:A10, SMALL(IF(A1:A10"", ROW(A1:A10)-ROW(A1)+1), k))Trong đó:
A1:A10là vùng dữ liệu của bạn.klà thứ tự bạn muốn lấy (ví dụ: 1 cho nhỏ nhất, 2 cho nhỏ thứ hai, ...).- Phần
IF(A1:A10"", ROW(A1:A10)-ROW(A1)+1)sẽ trả về số thứ tự của các ô không trống trong vùng dữ liệu. - Hàm
SMALLsẽ chọn ra số thứ tự thứktrong danh sách các số thứ tự đó. - Hàm
INDEXsẽ trả về giá trị tại số thứ tự đã chọn.
Lưu ý: Đây là một công thức mảng, nên sau khi nhập xong bạn cần nhấn Ctrl + Shift + Enter để kích hoạt.
Cách này khá hữu ích khi bạn cần trích xuất top N giá trị nhỏ nhất mà không cần sắp xếp. Anh em nào có cách nào hay hơn hoặc có câu hỏi gì thì cứ mạnh dạn chia sẻ nhé!