Bạn có thể tự hỏi liệu có cách nào để trả về giá trị cuối cùng (không phải lớn nhất) trong một cột hay không. Ví dụ: nếu có các giá trị từ A1 đến A5, thì bạn có thể muốn trả về giá trị trong A5. Sau đó, nếu các giá trị được thêm vào từ A6 đến A8, thì giá trị trong A8 sẽ được trả về.

Có một số cách để tiếp cận một giải pháp. Đầu tiên là sử dụng một công thức như sau:

=INDEX(A:A,COUNT(A:A))

Công thức này trả về giá trị số cuối cùng trong một cột, với điều kiện là các giá trị bắt đầu tại (trong trường hợp này) A1. Cách tiếp cận này chỉ hoạt động nếu tất cả các giá trị trong cột là số. Nếu các giá trị không phải là số hoặc nếu có các ô trống xen kẽ với các giá trị, thì một cách tiếp cận khác là cần thiết. Một cách là sao chép công thức sau vào cột B, ngay bên phải của các ô có thể chứa giá trị:

=IF(ISNUMBER(A2),IF(A2<>0,ROW(A2),""),"")

Trong trường hợp này, công thức trả về số hàng của bất kỳ ô nào trong A chứa giá trị số lớn hơn 0. Sau đó, công thức sau có thể được sử dụng để truy xuất giá trị cuối cùng trong cột A:

=INDEX(A:A,MAX(B:B))

Công thức này hoạt động vì nó trả về số hàng lớn nhất từ ​​cột B và sau đó sử dụng số đó làm chỉ mục để trả về giá trị tương ứng từ cột A.

Nếu phạm vi dữ liệu của bạn chứa hỗn hợp các giá trị số và không phải số (và, có thể, thậm chí một số ô trống được trộn với nhau trong phạm vi), thì bạn có thể xem xét công thức sau:

=LOOKUP(2,1/(1-ISBLANK(A:A)),A:A)

Cách thức hoạt động của công thức này lúc đầu có thể không rõ ràng. Phần ISBLANK trả về một mảng chứa giá trị Đúng hoặc Sai cho mỗi ô trong cột A, tùy thuộc vào ô đó có trống hay không. Giá trị Đúng hoặc Sai đó (thực sự là 1 hoặc 0) được trừ cho 1 để bạn kết thúc với các giá trị Đúng là 0 và các giá trị Sai là 1.

Bước tiếp theo là sử dụng các giá trị 1 hoặc 0 làm cổ tức trong 1 / x. Điều này “đảo ngược” giá trị một cách hiệu quả và bạn kết thúc bằng 1 (1/1) hoặc # DIV / 0! lỗi (1/0). Hãy nhớ rằng đây là một mảng sau đó được sử dụng làm tham số cho hàm LOOKUP. Giá trị đang được tìm kiếm trong mảng là giá trị 2, không tồn tại ở đó. (Hãy nhớ rằng mảng chỉ chứa các giá trị 1 hoặc giá trị lỗi.) Hàm LOOKUP thực sự bỏ qua tất cả các giá trị lỗi trong mảng và do đó, nó trả về giá trị bù, trong phạm vi A: A, của phần tử mảng cuối cùng chứa a 1 giá trị. Điều này tương ứng với ô cuối cùng trong phạm vi không trống.

Như bạn có thể nói, việc trả về giá trị cuối cùng trong một cột đôi khi có thể hơi phức tạp. Một cách tiếp cận rõ ràng là chỉ cần phát triển hàm VBA của riêng bạn để trả về giá trị mong muốn. Trong trường hợp này, bạn có thể lập trình hàm để trả về bất kỳ giá trị nào — không chỉ giá trị số. Một ví dụ điển hình về một chức năng như vậy có tại trang Web của John Walkenbach. Kiểm tra phần sau:

http://spreadsheetpage.com/index.php/tip/determining_the_last_non_empty_cell_in_a_column_or_row/

ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (2512) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện ribbon của Excel (Excel 2007 trở lên) tại đây: