Công thức Excel: Lấy kết quả khớp cuối cùng
Công thức Excel: Lấy kết quả khớp cuối cùng

Công thức chung
{=MAX(IF(criteria,ROW(rng)-MIN(ROW(rng))+1))}
Tóm lược

Để có được vị trí của kết quả khớp cuối cùng (tức là lần xuất hiện cuối cùng) của giá trị tra cứu, bạn có thể sử dụng công thức mảng dựa trên các hàm IF, ROW, INDEX, MATCH và MAX. Trong ví dụ được hiển thị, công thức trong H6 là:

{=MAX(IF(names=H5,ROW(names)-MIN(ROW(names))+1))}

Trong đó “tên” là phạm vi được đặt tên C4: C11.

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

Ý chính của công thức này là chúng tôi xây dựng danh sách các số hàng cho một phạm vi nhất định, khớp trên một giá trị, sau đó sử dụng hàm MAX để lấy số hàng lớn nhất, tương ứng với giá trị khớp cuối cùng. Chúng tôi đang sử dụng “tên” phạm vi được đặt tên chỉ để thuận tiện.

Làm việc từ trong ra ngoài, phần này của công thức sẽ tạo ra một tập hợp các số hàng tương đối:

ROW(names)-MIN(ROW(names))+1

Kết quả của biểu thức trên là một dãy số như sau: 

{1;2;3;4;5;6;7;8}

Để ý chúng ta nhận được 8 số, tương ứng với 8 hàng trong bảng. Xem trang này để biết chi tiết về cách hoạt động của phần này của công thức.

Với mục đích của công thức này, chúng tôi chỉ muốn số hàng cho các giá trị phù hợp, vì vậy chúng tôi sử dụng hàm IF để lọc các giá trị như sau:

IF(names=H5,ROW(names)-MIN(ROW(names))+1)

Điều này dẫn đến một mảng trông giống như sau:

{1;FALSE;FALSE;4;FALSE;FALSE;7;FALSE}

Lưu ý rằng mảng này vẫn chứa tám mục. Tuy nhiên, chỉ những số hàng mà giá trị trong phạm vi được đặt tên là “tên” bằng “amy” mới tồn tại (tức là 1, 4, 7). Tất cả các mục khác trong mảng là FALSE, vì chúng không thành công trong kiểm tra logic trong hàm IF.

Cuối cùng, hàm IF cung cấp mảng này cho hàm MAX. MAX trả về giá trị cao nhất trong mảng, số 7, tương ứng với số hàng cuối cùng có tên là “amy”. Khi chúng tôi biết số hàng phù hợp cuối cùng, chúng tôi có thể sử dụng INDEX để truy xuất một giá trị tại vị trí đó.

Thứ hai đến cuối cùng, v.v.

Để có được vị trí thứ hai đến cuối cùng, thứ ba đến cuối cùng, v.v. bạn có thể chuyển từ hàm MIN sang hàm LARGE như sau:

{=LARGE(IF(criteria,ROW(rng)-MIN(ROW(rng))+1),k)}

trong đó k đại diện cho “lớn thứ n”. Ví dụ: để có được kết quả phù hợp thứ hai đến cuối cùng trong ví dụ trên, bạn có thể sử dụng:

{=LARGE(IF(names=H5,ROW(names)-MIN(ROW(names))+1),2)}

Như trước đây, đây 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-last-match