=INDEX(A2:C6,3,2) trả về giá trị ở hàng thứ ba, cột thứ hai của vùng A2:C6. Vị trí được đếm từ ô trên cùng bên trái của vùng, nên hàng 3 của A2:C6 là hàng 4 của trang tính. Đổi số 3 hoặc số 2 và xem kết quả thay đổi.
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Product | Category | Price | Row | Column | Result | |
| 2 | Apple | Fruit | $1.20 | 3 | 2 | Vegetable | |
| 3 | Pear | Fruit | $1.50 | ||||
| 4 | Carrot | Vegetable | $0.80 | ||||
| 5 | Bread | Bakery | $2.40 | ||||
| 6 | Milk | Dairy | $1.10 |
E2 chứa số thứ tự hàng và F2 chứa số thứ tự cột. Hàng 3 là Carrot và cột 2 là Category, nên G2 hiện Vegetable. Đặt F2 thành 1 để lấy tên sản phẩm, hoặc E2 thành 6 để thấy #REF!: A2:C6 chỉ có năm hàng.
Cú pháp hàm INDEX
=INDEX(array, row_num, [column_num])
array: vùng (hoặc mảng) cần đọc.row_num: hàng thứ mấy trong vùng, bắt đầu từ 1. Dùng 0 để lấy mọi hàng.column_num: cột thứ mấy, bắt đầu từ 1. Không bắt buộc khi vùng chỉ có một cột hoặc một hàng; dùng 0 để lấy mọi cột.
Với một cột, chỉ cần một số: =INDEX(A2:A6,4) là mục thứ tư, Bread. Dạng thứ hai, =INDEX((A2:C3,A5:C6),1,1,2), chọn từ một trong nhiều vùng; dạng này hiếm khi cần đến.
Lấy mục thứ n, hoặc mục cuối cùng
INDEX trên một cột trả lời câu hỏi "mục số n là gì". Kết hợp với COUNTA, hàm đếm các ô có dữ liệu, nó trả về mục cuối cùng của một danh sách đang dài thêm.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Product | Item number | 2 | |
| 2 | Apple | Nth item | Pear | |
| 3 | Pear | Last item | Milk | |
| 4 | Carrot | |||
| 5 | Bread | |||
| 6 | Milk |
D1 là 2, nên D2 trả về Pear. COUNTA đếm được 5 sản phẩm, nên D3 trả về sản phẩm thứ năm, Milk. Xóa Milk và D3 trả về Bread. Trong tệp thật, hãy trỏ cả hai vào một vùng dài hơn như A2:A1000 để các hàng mới cũng được tính; COUNTA chỉ dùng được theo cách này khi cột không có ô trống xen giữa.
Trả về cả hàng hoặc cả cột với số 0
Số 0 ở vị trí số thứ tự hàng nghĩa là "mọi hàng", nên INDEX(B2:D5,0,2) là toàn bộ cột thứ hai. Đặt trong SUM, AVERAGE hoặc MAX, nó tính tổng một cột được chọn theo số.
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Region | Jan | Feb | Mar | Month number | Total | |
| 2 | North | 4,200 | 3,900 | 4,800 | 2 | 15,200 | |
| 3 | South | 3,100 | 3,600 | 3,300 | |||
| 4 | East | 5,200 | 4,700 | 5,600 | |||
| 5 | West | 2,800 | 3,000 | 3,400 |
Tháng 2 là Feb, và G2 cộng C2:C5: 15.200. Đổi F2 thành 3 để lấy tháng Ba. Cả một hàng cũng làm tương tự: =SUM(INDEX(B2:D5,3,0)) tính tổng của East. Trong Excel 2021 và Microsoft 365, riêng =INDEX(B2:D5,0,2) sẽ trả tràn bốn giá trị xuống trang tính. Để chọn cột theo tiêu đề thay vì theo số, hãy thay F2 bằng một MATCH, đó chính là cách dùng INDEX và MATCH.
INDEX trên mảng hoặc kết quả trả tràn
INDEX còn đọc được mảng do công thức trả về, không chỉ các vùng trên trang tính. Nhờ đó bạn lấy được một mục trong danh sách đã sắp xếp, đã lọc hoặc đã loại trùng mà không cần ghi danh sách đó ra trước.
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Product | Category | Price | Most expensive | Bread | |
| 2 | Apple | Fruit | $1.20 | Second | Pear | |
| 3 | Pear | Fruit | $1.50 | Cheapest | Carrot | |
| 4 | Carrot | Vegetable | $0.80 | |||
| 5 | Bread | Bakery | $2.40 | |||
| 6 | Milk | Dairy | $1.10 |
SORTBY trả về năm sản phẩm sắp xếp theo giá, và INDEX lấy mục 1 (Bread), mục 2 (Pear) hoặc, từ danh sách sắp xếp tăng dần, mục 1 (Carrot). Đổi giá của Milk thành 3 và nó thành sản phẩm đắt nhất. Nếu trên trang tính đã có sẵn một danh sách trả tràn, giả sử ở H2, thì trong Excel 2021 và Microsoft 365 bạn có thể viết =INDEX(H2#,2) để lấy mục thứ hai của nó.
Luyện tập: tính tổng của tháng được chọn
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Region | Jan | Feb | Mar | Month number | Total | |
| 2 | North | 4,200 | 3,900 | 4,800 | 1 | ||
| 3 | South | 3,100 | 3,600 | 3,300 | |||
| 4 | East | 5,200 | 4,700 | 5,600 | |||
| 5 | West | 2,800 | 3,000 | 3,400 |
Đến lượt bạn: Trong G2, trả về tổng của tháng có số thứ tự ở F2 (1 = Jan, 2 = Feb, 3 = Mar), bằng INDEX.
Câu hỏi thường gặp
Hàm INDEX trong Excel dùng để làm gì?
Hàm này trả về giá trị ở một vị trí cho trước trong một vùng: =INDEX(A2:C6,3,2) trả về giá trị ở hàng thứ ba, cột thứ hai của A2:C6. Vị trí được đếm từ ô trên cùng bên trái của vùng, không phải từ hàng 1 của trang tính.
Làm sao lấy giá trị cuối cùng của một cột bằng INDEX?
Dùng số ô có dữ liệu làm số thứ tự hàng: =INDEX(B2:B100,COUNTA(B2:B100)) trả về giá trị cuối của một cột không có ô trống xen giữa. Nếu có ô trống xen giữa, =LOOKUP(2,1/(B2:B100<>""),B2:B100) trả về giá trị không trống cuối cùng.
Vì sao INDEX trả về #REF!?
Số thứ tự hàng hoặc cột lớn hơn kích thước vùng. =INDEX(A2:A6,7) lấy mục thứ bảy của một vùng chỉ có năm ô nên trả về #REF!.
Làm sao trả về cả một cột bằng INDEX?
Dùng 0 làm số thứ tự hàng: =INDEX(B2:D5,0,2) trả về toàn bộ cột thứ hai. Bọc nó trong một hàm để tính tổng, như =SUM(INDEX(B2:D5,0,2)), hoặc để nó trả tràn trong Excel 2021 và Microsoft 365.