Menu

INDEX MATCH trong Excel: dò tìm bên trái, hai chiều

=INDEX(C2:C6,MATCH(F2,A2:A6,0)) tìm hàng chứa F2 trong cột A và trả về giá trị ở hàng đó của cột C. Cách này dò được sang trái, tra cứu hai chiều và chạy trên mọi phiên bản Excel.

Mọi bảng tính trên trang này đều trực tiếp: đổi một số hoặc công thức, bảng tính sẽ tự tính lại.

=INDEX(C2:C6,MATCH(F2,A2:A6,0)) tìm hàng có F2 trong A2:A6 và trả về giá trị ở cùng hàng đó của C2:C6. MATCH tìm vị trí, INDEX lấy giá trị ở vị trí đó. Cách này chạy trên mọi phiên bản Excel và dò được sang bên trái.

Giá của một sản phẩm
G2
ABCDEFG
1ProductCategoryPriceCodeLook forPrice
2AppleFruit$1.20P-101Pear$1.50
3PearFruit$1.50P-102
4CarrotVegetable$0.80P-205
5BreadBakery$2.40P-310
6MilkDairy$1.10P-412
Bấm vào một ô để xem công thức. Đổi một số hoặc công thức, bảng tính sẽ tự tính lại.

Đổi F2 thành Milk và G2 trả về $1,10. Đổi C2:C6 thành B2:B6 và nó trả về nhóm hàng thay vì giá.

INDEX và MATCH phối hợp với nhau thế nào

Công thức gồm hai bước trong một ô. Ở đây hai bước được tách ra hai ô, để bạn thấy mỗi phần trả về gì.

Hai bước, mỗi bước một ô
G3
ABCDEFG
1ProductCategoryPriceCodeLook forBread
2AppleFruit$1.20P-101Position4
3PearFruit$1.50P-102Price$2.40
4CarrotVegetable$0.80P-205
5BreadBakery$2.40P-310
6MilkDairy$1.10P-412
Bấm vào một ô để xem công thức. Đổi một số hoặc công thức, bảng tính sẽ tự tính lại.

MATCH(G1,A2:A6,0) trả về 4, vì Bread là mục thứ tư của A2:A6. INDEX(C2:C6,4) trả về mục thứ tư của C2:C6, là $2,40. Đặt MATCH vào trong INDEX thay cho G2 là bạn có công thức một ô. Hai quy tắc giúp nó chạy đúng:

  • Hai vùng phải bắt đầu ở cùng một hàng và cao bằng nhau. MATCH(...,A2:A6,0) đếm từ hàng 2, nên INDEX phải đọc C2:C6, không phải C1:C6 (sẽ trả về hàng phía trên).
  • Kết thúc MATCH bằng 0. Không có nó, MATCH khớp gần đúng với giả định cột A đã sắp xếp, và trên một danh sách tên nó có thể trả về vị trí của hàng sai. Trang MATCH trình bày ba kiểu khớp của hàm này.

Nếu giá trị không có trong danh sách, MATCH trả về #N/A và cả công thức cũng vậy. =IFNA(INDEX(C2:C6,MATCH(F2,A2:A6,0)),"Not found") hiện văn bản thay cho lỗi.

Dò tìm sang bên trái

VLOOKUP chỉ trả về các cột nằm bên phải cột cần tìm. INDEX và MATCH không quan tâm thứ tự: tìm trong cột D, trả về cột A.

Tên sản phẩm từ mã sản phẩm
G2
ABCDEFG
1ProductCategoryPriceCodeCodeProduct
2AppleFruit$1.20P-101P-310Bread
3PearFruit$1.50P-102
4CarrotVegetable$0.80P-205
5BreadBakery$2.40P-310
6MilkDairy$1.10P-412
Bấm vào một ô để xem công thức. Đổi một số hoặc công thức, bảng tính sẽ tự tính lại.

P-310 trả về Bread. Nhập P-205 vào F2 để được Carrot. Với VLOOKUP, bạn sẽ phải chuyển cột Code lên đầu bảng trước.

Tra cứu hai chiều: INDEX với hai MATCH

INDEX nhận một số thứ tự hàng và một số thứ tự cột. Hãy đưa cho nó cả bảng, để một MATCH tìm hàng và một MATCH khác tìm cột.

Doanh số theo khu vực và tháng
B8
ABCD
1RegionJanFebMar
2North4,2003,9004,800
3South3,1003,6003,300
4East5,2004,7005,600
5West2,8003,0003,400
6RegionEast
7MonthMar
8Sales5,600
Bấm vào một ô để xem công thức. Đổi một số hoặc công thức, bảng tính sẽ tự tính lại.

East là hàng 3 của A2:A5 và Mar là cột 3 của B1:D1, nên INDEX trả về hàng 3, cột 3 của B2:D5: 5.600. MATCH cho hàng tìm dọc xuống cột đầu tiên, MATCH cho cột tìm ngang theo hàng tiêu đề, và cả hai vùng đều thẳng hàng với bảng B2:D5.

Vì sao INDEX MATCH tốt hơn VLOOKUP

=VLOOKUP(F2, A2:D6, 3, FALSE)
=INDEX(C2:C6, MATCH(F2, A2:A6, 0))

Cả hai đều trả về giá. Sự khác biệt lộ ra khi trang tính thay đổi:

  • Chèn thêm cột. Chèn một cột giữa Category và Price, VLOOKUP vẫn lấy cột 3, giờ là cột mới đang trống. Excel tự chỉnh C2:C6 trong phiên bản INDEX thành D2:D6 và công thức vẫn chạy đúng.
  • Dò tìm sang trái. Như ở trên: VLOOKUP không làm được, INDEX MATCH thì được.

Trong Excel 2021 và Microsoft 365, XLOOKUP làm được cả hai trong một hàm với các đối số đơn giản hơn. INDEX MATCH vẫn là lựa chọn cho các tệp phải mở được trong Excel 2019 hoặc cũ hơn, và riêng phần INDEX cũng rất hữu ích. Để tra cứu theo hai điều kiện cùng lúc, xem tra cứu nhiều điều kiện.

Luyện tập: dò tìm sang trái

Dữ liệu tồn kho xuất ra
G2
ABCDEFG
1CodePriceStockProductLook forPrice
2P-101$1.2040AppleMilk
3P-102$1.5025Pear
4P-205$0.8060Carrot
5P-310$2.4015Bread
6P-412$1.1030Milk
Bấm vào một ô để xem công thức. Đổi một số hoặc công thức, bảng tính sẽ tự tính lại.

Đến lượt bạn: Tên sản phẩm nằm ở cột cuối cùng. Trong G2, trả về giá của sản phẩm ở F2 bằng INDEX và MATCH.

Luyện tập: tra cứu hai chiều

Điểm kiểm tra
B9
ABCD
1StudentMathScienceArt
2Ana788592
3Ben647188
4Cara958973
5Dev826779
6
7StudentCara
8SubjectScience
9Score
Bấm vào một ô để xem công thức. Đổi một số hoặc công thức, bảng tính sẽ tự tính lại.

Đến lượt bạn: Trong B9, trả về điểm của học sinh ở B7 cho môn học ở B8.

Câu hỏi thường gặp

INDEX MATCH hoạt động thế nào?

MATCH tìm vị trí của một giá trị trong một cột, còn INDEX trả về giá trị ở vị trí đó trong cột khác. Trong =INDEX(C2:C6,MATCH("Pear",A2:A6,0)), MATCH trả về 2 vì Pear là mục thứ hai của A2:A6, và INDEX trả về mục thứ hai của C2:C6.

Vì sao dùng INDEX MATCH thay cho VLOOKUP?

Nó trả về được cột nằm bên trái cột cần tìm, và không bị hỏng khi chèn thêm cột vào giữa bảng (vì không có số thứ tự cột nào bị lệch). Trong Excel 2021 và Microsoft 365, XLOOKUP cho cùng các ưu điểm đó chỉ với một hàm.

Số 0 trong MATCH có nghĩa là gì?

Nó yêu cầu khớp chính xác. Không có nó, MATCH dùng match_type 1, kiểu khớp gần đúng yêu cầu cột được sắp xếp tăng dần, và trên một danh sách chưa sắp xếp nó có thể trả về vị trí của hàng sai.

Làm sao tra cứu hai chiều bằng INDEX MATCH?

Đưa cho INDEX cả bảng và hai MATCH, một cho hàng và một cho cột: =INDEX(B2:D5,MATCH("South",A2:A5,0),MATCH("Feb",B1:D1,0)) trả về giá trị ở chỗ hàng South giao với cột Feb.

Hình minh họa các ngôn ngữ lập trình của Coddy

Học lập trình cùng Coddy

Bắt đầu