Công thức Excel: Nhận giá trị không trống đầu tiên trong danh sách
Công thức Excel: Nhận giá trị không trống đầu tiên trong danh sách

Công thức chung
{=INDEX(range,MATCH(FALSE,ISBLANK(range),0))}
Tóm lược

Để nhận giá trị không trống đầu tiên (văn bản hoặc số) trong một trong phạm vi một cột, bạn có thể sử dụng công thức mảng dựa trên các hàm INDEX, MATCH và ISBLANK. Trong ví dụ được hiển thị, công thức trong D10 là: 

{=INDEX(B3:B11,MATCH(FALSE,ISBLANK(B3:B11),0))}

Lưu ý: đây là một công thức mảng và phải được nhập bằng Control-Shift-Enter.

Giải trình

Vì vậy, ý chính của vấn đề là: Chúng tôi muốn lấy ô không trống đầu tiên, nhưng chúng tôi không có cách trực tiếp để thực hiện điều đó trong Excel. Chúng tôi có thể sử dụng VLOOKUP với ký tự đại diện * (xem liên kết bên dưới), nhưng điều đó sẽ chỉ hoạt động đối với văn bản, không phải số.

Vì vậy, chúng ta cần xây dựng chức năng chúng ta cần bằng cách lồng các công thức. Cách thực hiện điều đó là sử dụng một hàm mảng để “kiểm tra” các ô và trả về một mảng các giá trị TRUE / FALSE mà chúng ta có thể đưa vào Hàm MATCH.

Làm việc từ trong ra ngoài, Hàm ISBLANK đánh giá các ô trong phạm vi B3: B11 và trả về mảng trông như thế này:

{TRUE;FALSE;TRUE;FALSE;FALSE;TRUE;TRUE;TRUE;TRUE}

Mỗi FALSE đại diện cho một ô trong phạm vi không trống.

Tiếp theo, MATCH tìm kiếm FALSE bên trong mảng và trả về vị trí của kết quả phù hợp đầu tiên được tìm thấy, trong trường hợp này là 2. Tại thời điểm này, công thức trong ví dụ bây giờ trông giống như sau:

{=INDEX(B3:B11,2,0))}

cuối cùng Hàm INDEX tiếp nhận và nhận giá trị ở vị trí 2 trong mảng, là 10.

Giá trị độ dài khác 0 đầu tiên

Để nhận giá trị độ dài khác 0 đầu tiên, bạn có thể bao gồm Hàm LEN như thế này:

{=INDEX(range,MATCH(TRUE,LEN(range)>0,0))}

Giá trị số đầu tiên

Để nhận giá trị số đầu tiên trong danh sách, bạn có thể điều chỉnh công thức để sử dụng Hàm ISNUMBER, sau đó thay đổi logic để khớp với TRUE thay vì FALSE:

{=INDEX(range,MATCH(TRUE,ISNUMBER(range),0))}

Đây cũng là một công thức mảng, và phải được nhập bằng control + shift + enter.

https://exceljet.net/formula/get-first-non-blank-value-in-a-list