Mục lục
Hướng dẫn này cho biết cách sử dụng INDEX và MATCH trong Excel và cách nó tốt hơn VLOOKUP.
Trong một vài bài viết gần đây, chúng tôi đã cố gắng giải thích những điều cơ bản về hàm VLOOKUP cho người mới bắt đầu và cung cấp các ví dụ về công thức VLOOKUP phức tạp hơn cho người dùng thành thạo. Và bây giờ, tôi sẽ cố gắng nếu không muốn ngăn bạn sử dụng VLOOKUP thì ít nhất cũng chỉ cho bạn một cách thay thế để thực hiện tra cứu dọc trong Excel.
"Tôi cần cái đó để làm gì?" bạn có thể thắc mắc. Bởi vì VLOOKUP có nhiều hạn chế có thể ngăn bạn nhận được kết quả mong muốn trong nhiều tình huống. Mặt khác, tổ hợp INDEX MATCH linh hoạt hơn và có nhiều tính năng tuyệt vời khiến nó vượt trội hơn VLOOKUP ở nhiều khía cạnh.
Excel INDEX và các hàm MATCH - những điều cơ bản
Vì mục đích của hướng dẫn này là trình bày một cách khác để thực hiện vlookup trong Excel bằng cách sử dụng kết hợp các hàm INDEX và MATCH nên chúng tôi sẽ không tập trung nhiều vào cú pháp của chúng và sử dụng. Chúng tôi sẽ chỉ đề cập đến những điều tối thiểu cần thiết để hiểu ý tưởng chung và sau đó xem xét chi tiết các ví dụ về công thức cho thấy tất cả các ưu điểm của việc sử dụng INDEX MATCH thay vì VLOOKUP.
Hàm INDEX - cú pháp và cách sử dụng
Hàm INDEX trong Excel trả về một giá trị trong một mảng dựa trên số hàng và số cột mà bạn chỉ định. Cú pháp của hàm INDEX rất đơn giản:
( tiêu chí1= phạm vi1) * ( tiêu chí2= phạm vi2), 0))}Lưu ý. Đây là một công thức mảng phải được hoàn thành bằng phím tắt Ctrl + Shift + Enter.
Trong bảng mẫu bên dưới, giả sử bạn muốn tìm số tiền dựa trên 2 tiêu chí, Khách hàng và Sản phẩm .
Công thức INDEX MATCH sau đây hoạt động hiệu quả:
=INDEX(C2:C10, MATCH(1, (F1=A2:A10) * (F2=B2:B10), 0))
Trong đó C2:C10 là phạm vi để trả về giá trị từ đó, F1 là tiêu chí 1, A2:A10 là phạm vi để so sánh với tiêu chí 1, F2 là tiêu chí 2 và B2:B10 là phạm vi để so sánh với tiêu chí 2.
Nhớ nhập công thức chính xác bằng cách nhấn Ctrl + Shift + Enter và Excel sẽ tự động đặt nó trong dấu ngoặc nhọn như trong ảnh chụp màn hình:
Nếu bạn không muốn sử dụng công thức mảng trong trang tính của mình, hãy thêm một hàm INDEX nữa vào công thức và hoàn thành nó bằng một lần nhấn Enter thông thường:
Cách thức hoạt động của các công thức này
Các công thức sử dụng cách tiếp cận giống như hàm INDEX MATCH cơ bản xem qua một cột duy nhất. Để đánh giá nhiều tiêu chí, bạn tạo hai hoặc nhiều mảng giá trị TRUE và FALSE đại diện cho các kết quả khớp và không khớp cho từng tiêu chí riêng lẻ, sau đó nhân các phần tử tương ứng của các mảng này. Phép toán nhân lần lượt chuyển đổi TRUE và FALSE thành 1 và 0, đồng thời tạo ra một mảng trong đó 1 tương ứng với các hàng khớp với tất cả các tiêu chí.Hàm MATCH với giá trị tra cứu là 1 sẽ tìm "1" đầu tiên trong mảng và chuyển vị trí của nó cho INDEX, hàm này trả về một giá trị trong hàng này từ cột đã chỉ định.
Công thức không phải mảng dựa trên khả năng của hàm INDEX để xử lý các mảng nguyên bản. INDEX thứ hai được định cấu hình với 0 row_num để nó sẽ chuyển toàn bộ mảng cột sang MATCH.
Đó là giải thích cấp cao về logic của công thức. Để biết đầy đủ chi tiết, vui lòng xem Excel INDEX MATCH với nhiều tiêu chí.
Excel INDEX MATCH với AVERAGE, MAX, MIN
Microsoft Excel có các chức năng đặc biệt để tìm giá trị tối thiểu, tối đa và trung bình trong một phạm vi. Nhưng nếu bạn cần lấy một giá trị từ một ô khác được liên kết với các giá trị đó thì sao? Trong trường hợp này, hãy sử dụng hàm MAX, MIN hoặc AVERAGE cùng với INDEX MATCH.
INDEX MATCH với MAX
Để tìm giá trị lớn nhất trong cột D và trả về giá trị từ cột C trong cùng một hàng, hãy sử dụng công thức sau:
=INDEX(C2:C10, MATCH(MAX(D2:D10), D2:D10, 0))
INDEX MATCH với MIN
Để định vị giá trị nhỏ nhất trong cột D và lấy giá trị được liên kết từ cột C, hãy sử dụng giá trị này :
=INDEX(C2:C10, MATCH(MIN(D2:D10), D2:D10, 0))
INDEX MATCH với AVERAGE
Để tính giá trị gần nhất với giá trị trung bình trong D2:D10 và nhận giá trị tương ứng từ cột C, đây là công thức để sử dụng:
=INDEX(C2:C10, MATCH(AVERAGE(D2:D10), D2:D10, -1 ))
Tùy thuộc vào cách tổ chức dữ liệu của bạn, hãy cung cấp 1 hoặc -1 cho đối số thứ ba (match_type) củahàm MATCH:
- Nếu cột tra cứu của bạn (trong trường hợp của chúng ta là cột D) được sắp xếp tăng dần , hãy đặt 1. Công thức sẽ tính giá trị lớn nhất nhỏ hơn hơn hoặc bằng giá trị trung bình.
- Nếu cột tra cứu của bạn được sắp xếp giảm dần , hãy nhập -1. Công thức sẽ tính giá trị nhỏ nhất lớn hơn hoặc bằng giá trị trung bình.
- Nếu mảng tra cứu của bạn chứa giá trị chính xác bằng giá trị trung bình, thì bạn có thể nhập 0 để khớp chính xác. Không cần sắp xếp.
Trong ví dụ của chúng tôi, các quần thể trong cột D được sắp xếp theo thứ tự giảm dần, vì vậy chúng tôi sử dụng -1 cho loại đối sánh. Kết quả là, chúng tôi nhận được "Tokyo" vì dân số của thành phố này (13.189.000) là đối sánh gần nhất lớn hơn mức trung bình (12.269.006).
Bạn có thể tò mò muốn biết điều đó VLOOKUP cũng có thể thực hiện các phép tính như vậy, nhưng dưới dạng công thức mảng: VLOOKUP với AVERAGE, MAX, MIN.
Sử dụng INDEX MATCH với IFNA / IFERROR
Như bạn có thể nhận thấy, nếu một INDEX MATCH công thức trong Excel không thể tìm thấy giá trị tra cứu, nó tạo ra lỗi #N/A. Nếu bạn muốn thay thế ký hiệu lỗi tiêu chuẩn bằng ký hiệu nào đó có ý nghĩa hơn, hãy bọc công thức INDEX MATCH của bạn trong hàm IFNA. Ví dụ:
=IFNA(INDEX(C2:C10, MATCH(F1,A2:A10,0)), "No match is found")
Và bây giờ, nếu ai đó nhập một bảng tra cứu không tồn tại trong phạm vi tra cứu, công thức sẽ thông báo rõ ràng cho người dùng rằng không có kết quả khớp nàođã tìm thấy:
Nếu bạn muốn phát hiện tất cả lỗi, không chỉ lỗi #N/A, hãy sử dụng hàm IFERROR thay vì IFNA:
=IFERROR(INDEX(C2:C10, MATCH(F1,A2:A10,0)), "Oops, something went wrong!")
Xin lưu ý rằng trong nhiều trường hợp, có thể không khôn ngoan nếu ngụy trang tất cả các lỗi vì chúng cảnh báo bạn về các lỗi có thể xảy ra trong công thức của bạn.
Đó là cách sử dụng INDEX và MATCH trong Excel. Tôi hy vọng các ví dụ về công thức của chúng tôi sẽ hữu ích cho bạn và mong được gặp bạn trên blog của chúng tôi vào tuần tới!
Sách bài tập thực hành để tải xuống
Các ví dụ về INDEX MATCH trong Excel (tệp .xlsx)
INDEX(array, row_num, [column_num])Dưới đây là giải thích rất đơn giản về từng tham số:
- array - một dải ô mà bạn muốn trả về một giá trị từ.
- row_num - số hàng trong mảng mà bạn muốn trả về một giá trị. Nếu bỏ qua, cột_num là bắt buộc.
- column_num - số cột trong mảng mà bạn muốn trả về một giá trị. Nếu bị bỏ qua, row_num là bắt buộc.
Để biết thêm thông tin, vui lòng xem hàm INDEX của Excel.
Và đây là một ví dụ về công thức INDEX ở dạng đơn giản nhất:
=INDEX(A1:C10,2,3)
Công thức tìm kiếm trong các ô từ A1 đến C10 và trả về giá trị của ô ở hàng thứ 2 và cột thứ 3, tức là ô C2.
Rất dễ phải không? Tuy nhiên, khi làm việc với dữ liệu thực, bạn khó có thể biết mình muốn dùng hàng và cột nào, đó là lúc hàm MATCH phát huy tác dụng.
Hàm MATCH - cú pháp và cách sử dụng
Hàm MATCH trong Excel tìm kiếm một giá trị tra cứu trong một dải ô và trả về vị trí tương đối của giá trị đó trong dải ô.
Cú pháp của hàm MATCH như sau:
MATCH(giá trị_tra cứu , lookup_array, [match_type])- lookup_value - giá trị số hoặc văn bản bạn đang tìm kiếm.
- lookup_array - một dải ô đang đã tìm kiếm.
- match_type - chỉ định trả về kết quả khớp chính xác hay kết quả khớp gần nhất:
- 1 hoặc bị bỏ qua - tìm giá trị lớn nhất nhỏ hơn hoặc bằng giá trị tra cứu. Yêu cầu sắp xếp mảng tra cứu theo thứ tự tăng dần.
- 0 - tìm giá trị đầu tiên chính xác bằng giá trị tra cứu. Trong kết hợp INDEX / MATCH, hầu như bạn luôn cần đối sánh chính xác, vì vậy, bạn đặt đối số thứ ba của hàm MATCH thành 0.
- -1 - tìm giá trị nhỏ nhất lớn hơn hoặc bằng giá trị tra cứu. Yêu cầu sắp xếp mảng tra cứu theo thứ tự giảm dần.
Ví dụ: nếu phạm vi B1:B3 chứa các giá trị "New-York", "Paris", "London", công thức bên dưới trả về số 3, vì "London" là mục nhập thứ ba trong phạm vi:
=MATCH("London",B1:B3,0)
Để biết thêm thông tin, vui lòng xem hàm MATCH của Excel.
Tại thoạt nhìn, tính hữu ích của hàm MATCH có vẻ đáng nghi ngờ. Ai quan tâm đến vị trí của một giá trị trong một phạm vi? Điều chúng tôi muốn biết là chính giá trị đó.
Tôi xin nhắc bạn rằng vị trí tương đối của giá trị tra cứu (tức là số hàng và số cột) chính xác là những gì bạn cần cung cấp cho row_num và column_num đối số của hàm INDEX. Như bạn còn nhớ, hàm INDEX trong Excel có thể tìm thấy giá trị tại điểm nối của một hàng và cột nhất định, nhưng nó không thể xác định chính xác hàng và cột bạn muốn.
Cách sử dụng hàm INDEX MATCH trong Excel
Bây giờ bạn đã biết những điều cơ bản, tôi tin rằng nó cóđã bắt đầu hiểu rõ cách MATCH và INDEX phối hợp với nhau. Tóm lại, INDEX tìm giá trị tra cứu theo số cột và hàng và MATCH cung cấp các số đó. Vậy là xong!
Đối với tra cứu theo chiều dọc, bạn chỉ sử dụng hàm MATCH để xác định số hàng và cung cấp phạm vi cột trực tiếp cho INDEX:
INDEX ( cột để trả về giá trị từ, MATCH ( giá trị tra cứu, cột tra cứu so với, 0))Bạn vẫn gặp khó khăn trong việc tìm ra giá trị đó? Nó có thể dễ hiểu hơn từ một ví dụ. Giả sử bạn có một danh sách thủ đô quốc gia và dân số của họ:
Để tìm dân số của một thủ đô nhất định, chẳng hạn như thủ đô của Nhật Bản, hãy sử dụng công thức INDEX MATCH sau:
=INDEX(C2:C10, MATCH("Japan", A2:A10, 0))
Bây giờ, hãy phân tích chức năng của từng thành phần trong công thức này:
- Hàm MATCH tìm kiếm giá trị tra cứu "Nhật Bản" trong phạm vi A2: A10 và trả về số 3, vì "Nhật Bản" đứng thứ ba trong mảng tra cứu.
- Số hàng chuyển trực tiếp đến đối số row_num của INDEX hướng dẫn nó trả về một giá trị từ đó row.
Vì vậy, công thức trên biến thành một INDEX(C2:C,3) đơn giản cho biết tìm kiếm trong các ô từ C2 đến C10 và lấy giá trị từ ô thứ 3 trong phạm vi đó, tức là C4 vì chúng tôi bắt đầu đếm từ hàng thứ hai.
Bạn không muốn mã hóa thành phố trong công thức? Nhập nó vào một số ô, giả sử F1, cung cấp ôtham chiếu đến MATCH và bạn sẽ nhận được công thức tra cứu động:
=INDEX(C2:C10, MATCH(F1,A2:A10,0))
Lưu ý quan trọng! Số lượng hàng trong Đối số mảng của INDEX phải khớp với số hàng trong đối số lookup_array của MATCH, nếu không công thức sẽ cho kết quả không chính xác.
Đợi đã, đợi đã… tại sao không Không phải chúng ta chỉ đơn giản sử dụng công thức Vlookup sau đây sao? Lãng phí thời gian để cố gắng tìm ra những vòng xoắn phức tạp của Excel MATCH INDEX có ích lợi gì?
=VLOOKUP(F1, A2:C10, 3, FALSE)
Trong trường hợp này, chẳng ích gì cả :) Ví dụ đơn giản này chỉ dành cho mục đích trình diễn, để bạn có cảm nhận về cách các hàm INDEX và MATCH hoạt động cùng nhau. Các ví dụ khác sau đây sẽ cho bạn thấy sức mạnh thực sự của sự kết hợp này, giúp dễ dàng đối phó với nhiều tình huống phức tạp khi VLOOKUP gặp sự cố.
Mẹo:
- Trong Excel 365 và Excel 2021, bạn có thể sử dụng công thức INDEX XMATCH hiện đại hơn.
- Đối với Google Trang tính, hãy xem các ví dụ về công thức với INDEX MATCH trong bài viết này.
INDEX MATCH so với VLOOKUP
Khi nào quyết định sử dụng hàm nào để tra cứu theo chiều dọc, hầu hết các chuyên gia về Excel đều đồng ý rằng INDEX MATCH tốt hơn nhiều so với VLOOKUP. Tuy nhiên, nhiều người vẫn gắn bó với VLOOKUP, thứ nhất là vì nó đơn giản hơn và thứ hai là vì họ không hiểu hết lợi ích của việc sử dụng công thức INDEX MATCH trong Excel. Không có sự hiểu biết như vậy thì không ai sẵn sàng đầu tư thời gian của họ để họcmột cú pháp phức tạp hơn.
Dưới đây, tôi sẽ chỉ ra những ưu điểm chính của MATCH INDEX so với VLOOKUP và bạn quyết định xem đó có phải là một bổ sung xứng đáng cho kho vũ khí Excel của bạn hay không.
4 lý do chính để sử dụng INDEX MATCH thay vì VLOOKUP
- Tra cứu từ phải sang trái. Như mọi người dùng có hiểu biết đều biết, VLOOKUP không thể nhìn sang trái, nghĩa là giá trị tra cứu của bạn phải luôn nằm ở cột ngoài cùng bên trái của cái bàn. INDEX MATCH có thể thực hiện tra cứu bên trái một cách dễ dàng! Ví dụ sau đây cho thấy nó đang hoạt động: Cách Vlookup một giá trị ở bên trái trong Excel.
- Chèn hoặc xóa cột một cách an toàn. Công thức VLOOKUP bị hỏng hoặc đưa ra kết quả không chính xác khi một cột mới được thêm vào đã bị xóa khỏi hoặc được thêm vào bảng tra cứu vì cú pháp của VLOOKUP yêu cầu chỉ định số chỉ mục của cột mà bạn muốn lấy dữ liệu từ đó. Đương nhiên, khi bạn thêm hoặc xóa cột, số chỉ mục sẽ thay đổi.
Với INDEX MATCH, bạn chỉ định phạm vi cột trả về, không phải số chỉ mục. Do đó, bạn có thể tự do chèn và xóa bao nhiêu cột tùy thích mà không phải lo lắng về việc cập nhật mọi công thức liên quan.
- Không giới hạn kích thước của giá trị tra cứu. Khi sử dụng hàm VLOOKUP, tổng độ dài của tiêu chí tra cứu không được vượt quá 255 ký tự, nếu không, bạn sẽ nhận được #VALUE ! lỗi. Vì vậy, nếu tập dữ liệu của bạn chứa các chuỗi dài, INDEX MATCH là cách duy nhất hoạt độnggiải pháp.
- Tốc độ xử lý cao hơn. Nếu bảng của bạn tương đối nhỏ, sẽ khó có sự khác biệt đáng kể nào về hiệu suất Excel. Nhưng nếu trang tính của bạn chứa hàng trăm hoặc hàng nghìn hàng và do đó có hàng trăm hoặc hàng nghìn công thức, MATCH INDEX sẽ hoạt động nhanh hơn nhiều so với VLOOKUP vì Excel sẽ chỉ phải xử lý các cột tra cứu và trả về thay vì toàn bộ mảng bảng.
Tác động của VLOOKUP đối với hiệu suất của Excel có thể đặc biệt đáng chú ý nếu sổ làm việc của bạn chứa các công thức mảng phức tạp như VLOOKUP và SUM. Vấn đề là việc kiểm tra từng giá trị trong mảng yêu cầu một lệnh gọi hàm VLOOKUP riêng. Vì vậy, mảng của bạn càng chứa nhiều giá trị và bạn càng có nhiều công thức mảng trong sổ làm việc thì Excel sẽ hoạt động càng chậm.
Excel INDEX MATCH - ví dụ về công thức
Biết lý do để tìm hiểu hàm MATCH INDEX, chúng ta hãy đến với phần thú vị nhất và xem bạn có thể áp dụng kiến thức lý thuyết vào thực tế như thế nào.
Công thức INDEX MATCH tra cứu từ phải sang trái
Như đã được đề cập, VLOOKUP không thể nhìn sang bên trái của nó. Vì vậy, trừ khi các giá trị tra cứu của bạn nằm ở cột ngoài cùng bên trái, không có khả năng công thức Vlookup sẽ mang lại cho bạn kết quả mong muốn. Hàm INDEX MATCH trong Excel linh hoạt hơn và không thực sự quan tâm vị trí của các cột tra cứu và trả về.
Đối với ví dụ này,chúng ta sẽ thêm cột Xếp hạng vào bên trái bảng mẫu của mình và cố gắng tìm hiểu xem thủ đô Moscow của Nga được xếp hạng như thế nào về dân số.
Với giá trị tra cứu trong G1, hãy sử dụng công thức sau để tìm kiếm trong C2:C10 và trả về giá trị tương ứng từ A2:A10:
=INDEX(A2:A10,MATCH(G1,C2:C10,0))
Mẹo. Nếu bạn định sử dụng công thức INDEX MATCH cho nhiều ô, hãy nhớ khóa cả hai phạm vi bằng tham chiếu ô tuyệt đối (như $A$2:$A$10 và $C$2:4C$10) để chúng không bị biến dạng khi sao chép công thức.
INDEX MATCH MATCH để tìm kiếm trong hàng và cột
Trong các ví dụ trên, chúng tôi đã sử dụng INDEX MATCH thay thế cho VLOOKUP cổ điển để trả về giá trị từ một cột được xác định trước phạm vi. Nhưng nếu bạn cần tra cứu ở nhiều hàng và nhiều cột thì sao? Nói cách khác, nếu bạn muốn thực hiện cái gọi là tra cứu ma trận hoặc hai chiều thì sao?
Điều này nghe có vẻ phức tạp, nhưng công thức rất giống nhau đến hàm INDEX MATCH cơ bản của Excel, chỉ với một điểm khác biệt. Đoán xem?
Chỉ cần sử dụng hai hàm MATCH – một hàm để lấy số hàng và hàm còn lại để lấy số cột. Và xin chúc mừng những bạn đã đoán đúng :)
INDEX(array, MATCH( giá trị vlookup, cột tra cứu so với, 0), MATCH( giá trị hlookup, hàng để tra cứu so với, 0))Và bây giờ, hãy xem bảng bên dưới và cùng xây dựng một TRÒ CHƠI INDEX MATCHcông thức để tìm dân số (tính bằng triệu) ở một quốc gia nhất định trong một năm nhất định.
Với quốc gia mục tiêu trong G1 (giá trị vlookup) và năm mục tiêu trong G2 (giá trị hlookup), công thức sẽ có dạng này :
=INDEX(B2:D11, MATCH(G1,A2:A11,0), MATCH(G2,B1:D1,0))
Cách thức hoạt động của công thức này
Bất cứ khi nào bạn cần hiểu một công thức Excel phức tạp, hãy chia nhỏ nó thành các phần nhỏ hơn và xem chức năng của từng chức năng riêng lẻ:
MATCH(G1,A2:A11,0)
– tìm kiếm qua A2:A11 cho giá trị trong ô G1 ("Trung Quốc") và trả về vị trí của nó, là 2.
MATCH(G2,B1:D1,0))
– tìm kiếm qua B1:D1 để lấy vị trí của giá trị trong ô G2 ("2015"), là 3.
Số hàng và cột ở trên chuyển đến các đối số tương ứng của hàm INDEX:
INDEX(B2:D11, 2, 3)
Kết quả là bạn nhận được một giá trị tại giao điểm của hàng thứ 2 và cột thứ 3 trong phạm vi B2:D11, là giá trị trong ô D3. Dễ? Đúng!
MATCH INDEX trong Excel để tra cứu nhiều tiêu chí
Nếu bạn đã có cơ hội đọc hướng dẫn VLOOKUP trong Excel của chúng tôi, thì có lẽ bạn đã thử nghiệm một công thức cho Vlookup với nhiều tiêu chí. Tuy nhiên, một hạn chế đáng kể của phương pháp đó là cần phải thêm một cột trợ giúp. Tin vui là hàm INDEX MATCH của Excel cũng có thể tra cứu với hai tiêu chí trở lên mà không cần sửa đổi hoặc sắp xếp lại dữ liệu nguồn của bạn!
Đây là công thức INDEX MATCH chung với nhiều tiêu chí:
{=INDEX( return_range, MATCH(1,