excel
INDEX MATCH trong Excel: giải pháp thay thế VLOOKUP mạnh hơn (kèm ví dụ)

Vì sao cần INDEX MATCH khi đã có VLOOKUP?
VLOOKUP rất phổ biến, nhưng có ba giới hạn khiến nhiều người dùng lâu năm chuyển sang INDEX MATCH:
- Chỉ tra cứu từ trái sang phải — cột chứa giá trị cần tìm luôn phải nằm bên trái cột kết quả. Muốn tra ngược lại (tìm mã nhân viên dựa vào tên, khi cột Tên nằm bên phải cột Mã) thì VLOOKUP không làm được trực tiếp.
- Dễ vỡ công thức khi chèn/xóa cột — VLOOKUP dùng số thứ tự cột cố định (
col_index_num). Chỉ cần chèn thêm 1 cột vào giữa bảng, số thứ tự này lệch và công thức trả về sai kết quả mà không báo lỗi. - Chậm hơn với bảng dữ liệu lớn — VLOOKUP phải quét lại toàn bộ cột
table_arraymỗi lần tính, trong khi INDEX MATCH có thể giới hạn đúng vùng cần thiết, nhẹ hơn khi file có hàng chục nghìn dòng.
INDEX MATCH là cách kết hợp 2 hàm riêng biệt để giải quyết cả ba vấn đề trên. Ví dụ dữ liệu dùng xuyên suốt bài này:
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Mã NV | Họ tên | Phòng ban | Lương |
| 2 | NV01 | Nguyễn Văn An | Kế toán | 9,500,000 |
| 3 | NV02 | Trần Thị Bình | Kinh doanh | 11,000,000 |
| 4 | NV03 | Lê Văn Cường | Kế toán | 8,800,000 |
| 5 | NV04 | Phạm Thị Dung | Kỹ thuật | 10,200,000 |
Hàm INDEX: lấy giá trị theo vị trí
Cú pháp
=INDEX(array, row_num, [column_num])
Trong đó:
- array: vùng dữ liệu chứa giá trị cần lấy.
- row_num: số thứ tự dòng (tính từ dòng đầu tiên của
array, không phải số dòng thật trên sheet). - column_num: số thứ tự cột (bỏ trống nếu
arraychỉ có 1 cột).
Ví dụ
=INDEX(B2:B5, 3)
Lấy giá trị ở dòng thứ 3 trong vùng B2:B5, tức là ô B4 → kết quả Lê Văn Cường.
Tự dùng INDEX một mình không có nhiều ý nghĩa vì phải tự đếm dòng thứ mấy — sức mạnh thật sự nằm ở việc kết hợp với MATCH để tự động tìm ra con số đó.
Hàm MATCH: tìm vị trí của một giá trị
Cú pháp
=MATCH(lookup_value, lookup_array, [match_type])
Trong đó:
- lookup_value: giá trị cần tìm vị trí.
- lookup_array: vùng (1 cột hoặc 1 dòng) để tìm trong đó.
- match_type:
0để tìm chính xác (dùng gần như luôn luôn khi tra cứu dữ liệu).
Ví dụ
=MATCH("NV03", A2:A5, 0)
Excel tìm "NV03" trong vùng A2:A5, thấy nó ở vị trí thứ 3 tính từ đầu vùng → kết quả trả về là 3 (không phải "A4", MATCH chỉ trả về số thứ tự).
Kết hợp INDEX + MATCH: công thức tra cứu hoàn chỉnh
Ghép hai hàm lại: dùng MATCH để tìm vị trí của giá trị cần tra, rồi đưa vị trí đó vào INDEX để lấy kết quả.
Cú pháp kết hợp
=INDEX(cột_kết_quả, MATCH(giá_trị_cần_tìm, cột_tra_cứu, 0))
Ví dụ 1: Tra cứu cơ bản (tương đương VLOOKUP)
Tìm họ tên của nhân viên có mã "NV03":
=INDEX(B2:B5, MATCH("NV03", A2:A5, 0))
Excel chạy MATCH trước, tìm ra "NV03" ở vị trí 3, sau đó INDEX lấy giá trị ở vị trí 3 trong cột B → kết quả Lê Văn Cường. Kết quả giống hệt việc dùng =VLOOKUP("NV03", A2:B5, 2, FALSE).
Ví dụ 2: Tra cứu ngược — điều VLOOKUP không làm được
Tìm mã nhân viên dựa vào họ tên "Phạm Thị Dung" (cột Tên ở bên phải, cột Mã ở bên trái):
=INDEX(A2:A5, MATCH("Phạm Thị Dung", B2:B5, 0))
Kết quả: NV04. VLOOKUP không thể tra theo chiều này vì cột kết quả (Mã NV) nằm bên trái cột tra cứu (Họ tên) — INDEX MATCH không quan tâm thứ tự cột trước hay sau, vì hai vùng tham chiếu là độc lập.
Ví dụ 3: Tham chiếu giá trị cần tìm từ một ô
Giống SUMIF/VLOOKUP, nên tham chiếu ô thay vì gõ cứng để dễ thay đổi:
=INDEX(D2:D5, MATCH(F1, A2:A5, 0))
Với F1 là ô chứa mã nhân viên cần tra — đổi giá trị ở F1, kết quả lương tự cập nhật.
MATCH 2 chiều: tra cứu theo cả hàng và cột
Khi bảng dữ liệu có tiêu đề dòng và tiêu đề cột (ví dụ bảng doanh thu theo Sản phẩm × Tháng), có thể lồng 2 hàm MATCH để tìm đúng ô giao nhau:
=INDEX(vùng_dữ_liệu, MATCH(giá_trị_dòng, cột_tiêu_đề_dòng, 0), MATCH(giá_trị_cột, dòng_tiêu_đề_cột, 0))
Đây là dạng bài mà VLOOKUP một hàm gần như không xử lý được gọn — phải kết hợp thêm HLOOKUP hoặc dùng công thức mảng phức tạp hơn.
Vì sao chèn/xóa cột không làm hỏng công thức INDEX MATCH?
Với VLOOKUP, col_index_num là một con số cố định — chèn thêm 1 cột vào giữa bảng sẽ làm số thứ tự cột lệch đi mà Excel không tự cập nhật, dẫn đến kết quả sai âm thầm.
Với INDEX MATCH, cột kết quả (B2:B5 trong ví dụ trên) được tham chiếu trực tiếp bằng vùng ô. Khi chèn cột mới, Excel tự động điều chỉnh lại tham chiếu vùng đó theo đúng vị trí mới — công thức vẫn ra đúng kết quả mà không cần sửa gì.
Bảng so sánh nhanh VLOOKUP và INDEX MATCH
| VLOOKUP | INDEX MATCH | |
|---|---|---|
| Hướng tra cứu | Chỉ từ trái sang phải | Cả hai chiều |
| Khi chèn/xóa cột | Dễ sai kết quả (lệch col_index_num) |
Tự động đúng |
| Độ phức tạp công thức | Đơn giản hơn, 1 hàm | Phức tạp hơn, 2 hàm lồng nhau |
| Tốc độ với bảng lớn | Chậm hơn | Nhanh hơn |
| Tra cứu 2 chiều (dòng × cột) | Cần kết hợp thêm HLOOKUP | Lồng 2 MATCH trực tiếp |
Lỗi thường gặp
Lỗi #N/A
Do MATCH không tìm thấy giá trị khớp chính xác trong lookup_array — kiểm tra lại chính tả, khoảng trắng thừa, hoặc giá trị số bị lưu dưới dạng văn bản (căn trái thay vì căn phải trong ô).
Quên tham số match_type = 0 trong MATCH
Nếu bỏ trống, Excel mặc định tìm gần đúng (yêu cầu dữ liệu đã sắp xếp tăng dần) chứ không phải tìm chính xác — dễ ra kết quả sai mà không báo lỗi. Luôn gõ rõ 0 khi tra cứu dữ liệu thông thường.
Vùng của INDEX và MATCH không cùng số dòng
Ví dụ INDEX(B2:B5, MATCH(..., A2:A6, 0)) — vùng MATCH dài hơn vùng INDEX 1 dòng, dẫn đến kết quả lệch hoặc lỗi tham chiếu. Luôn để 2 vùng bắt đầu và kết thúc ở cùng một dòng.
Quên cố định vùng khi copy công thức
Khi kéo công thức xuống các dòng khác, vùng array/lookup_array có thể bị dịch chuyển theo nếu chưa cố định bằng dấu $. Dùng phím F4 để chuyển thành $A$2:$A$5 trước khi copy.
Khi nào nên dùng INDEX MATCH thay vì VLOOKUP?
- Bảng dữ liệu thường xuyên chèn/xóa cột trong quá trình làm việc
- Cần tra cứu ngược (tìm giá trị ở cột bên trái dựa vào cột bên phải)
- File có hàng chục nghìn dòng trở lên, cần tối ưu tốc độ tính toán
- Cần tra cứu theo 2 điều kiện dòng và cột cùng lúc (dạng bảng ma trận)
Nếu bảng dữ liệu nhỏ, ổn định và không cần tra ngược, VLOOKUP vẫn là lựa chọn nhanh gọn, dễ đọc hơn cho người mới.
Học Excel thực chiến tại TP Vinh
INDEX MATCH là một trong những kỹ thuật tra cứu dữ liệu nâng cao giúp xử lý báo cáo linh hoạt và chính xác hơn. Nếu bạn muốn học Excel bài bản từ các hàm cơ bản đến kỹ thuật xử lý dữ liệu nâng cao, tham khảo khóa học Excel tại Điền Nguyễn AZ.
📞 Hotline / Zalo: 0362 465 361
👉 Xem chi tiết: Khóa học Excel thực tế tại TP Vinh
Tài liệu miễn phí
30 phím tắt Excel hay dùng nhất
Tổng hợp phím tắt giúp thao tác Excel nhanh hơn — điền thông tin để tải file PDF miễn phí về dùng ngay.
Bài viết liên quan

05/09/2026
Hàm XLOOKUP trong Excel: tính năng mới thay thế VLOOKUP (kèm ví dụ)
Hướng dẫn dùng hàm XLOOKUP trong Excel để tra cứu dữ liệu linh hoạt và an toàn hơn VLOOKUP. Có ví dụ cụ thể, so sánh với VLOOKUP/INDEX MATCH và lỗi thường gặp.

17/09/2026
Hàm OFFSET và INDIRECT trong Excel: tham chiếu động nâng cao
Hướng dẫn dùng hàm OFFSET và INDIRECT trong Excel để tạo vùng tham chiếu tự thay đổi theo dữ liệu, dựng công thức linh hoạt hơn tham chiếu cố định. Có ví dụ cụ thể và lỗi thường gặp.

16/09/2026
Cách dùng Power Query để làm sạch dữ liệu trong Excel (không cần viết công thức)
Hướng dẫn từng bước dùng Power Query trong Excel để gộp, lọc, tách cột và chuẩn hóa dữ liệu thô một cách tự động, có thể refresh lại khi dữ liệu nguồn thay đổi.