Courses
Trong nhiều thập kỷ, VLOOKUP() là hàm tra cứu dữ liệu quen thuộc của Excel. Đây là công cụ đáng tin cậy nhưng có những hạn chế. Vì vậy vào năm 2019, XLOOKUP(), một hàm mới với các khả năng nâng cao, đã được giới thiệu. Trong bài viết này, chúng ta sẽ so sánh VLOOKUP() với XLOOKUP() để hiểu rõ hơn về tính năng và cách sử dụng khác nhau của chúng.
Lưu ý, việc chuyển từ VLOOKUP() sang XLOOKUP() chỉ là một trong nhiều cập nhật của Excel. Theo kịp các hàm Excel đang phát triển là điều quan trọng để tối đa hóa năng suất. Hãy xem lộ trình kỹ năng Excel Fundamentals để đảm bảo bạn đang sử dụng các tính năng mới nhất.
Cú pháp XLOOKUP() và VLOOKUP()
Giờ bạn đã nắm được hiểu biết cơ bản về cả hai hàm, hãy cùng tìm hiểu cú pháp và cách dùng chúng trong các tình huống thực tế.
Cú pháp của VLOOKUP()
Hãy xem cú pháp của VLOOKUP().
=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
Trong công thức trên:
-
lookup_valuelà giá trị bạn muốn tìm. Có thể là số, văn bản, hoặc tham chiếu đến ô chứa giá trị cần tìm. -
table_arraylà phạm vi ô chứa dữ liệu. Cột đầu tiên trong phạm vi này nên chứasearch_key. -
col_index_numlà số thứ tự cột trong phạm vi mà bạn muốn lấy giá trị. -
range_lookuplà nơi bạn nhập giá trị logic (TRUEhoặcFALSE).
Cú pháp của XLOOKUP()
Giờ hãy xem cú pháp của xlookup(). Như có thể thấy, XLOOKUP() có nhiều đối số hơn VLOOKUP().
=XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode])
Trong công thức trên:
-
lookup_valuelà giá trị bạn muốn tìm. -
lookup_arraylà phạm vi ô nơi giá trị tra cứu được tìm kiếm. -
return_arraylà phạm vi ô chứa giá trị bạn muốn trả về. -
if_not_found(tùy chọn) trả về một giá trị nếu không tìm thấy kết quả khớp. Nếu không chỉ định, nó trả về#N/A. -
match_mode(tùy chọn) xác định kiểu khớp cần thực hiện.0là khớp chính xác (mặc định).-1là khớp chính xác hoặc mục nhỏ hơn kế tiếp.1là khớp chính xác hoặc mục lớn hơn kế tiếp.2là khớp ký tự đại diện (wildcard). -
search_mode(tùy chọn) xác định chế độ tìm kiếm.1dùng để tìm từ đầu đến cuối (mặc định).-1dùng để tìm từ cuối lên đầu.2dùng để tìm kiếm nhị phân theo thứ tự tăng dần.-2dùng để tìm kiếm nhị phân theo thứ tự giảm dần.
Khác biệt chính: XLOOKUP() vs. VLOOKUP()
Hãy cùng khám phá một số khác biệt quan trọng giữa các hàm XLOOKUP() và VLOOKUP().
Chế độ khớp chính xác
XLOOKUP() mặc định ở chế độ khớp chính xác, còn VLOOKUP() yêu cầu chỉ định FALSE để khớp chính xác.

Khác biệt về khớp chính xác giữa XLOOKUP() và VLOOKUP(). Nguồn: Tác giả.
Trong VLOOKUP(), tôi không chỉ định giá trị range_lookup (đối số thứ 4), nên nó trả về kết quả gần đúng, không phải kết quả mong muốn. Ngược lại, XLOOKUP() mặc định trả về kết quả khớp chính xác.
Hướng tra cứu
VLOOKUP() bị giới hạn chỉ có thể tìm kiếm sang bên phải của cột đầu tiên trong mảng bảng đã chọn. Còn XLOOKUP() có thể tìm giá trị theo mọi hướng.

Khác biệt về hướng tra cứu giữa VLOOKUP() và XLOOKUP(). Nguồn: Tác giả.
Ở đây, VLOOKUP() không tìm được điểm số vì nó chỉ có thể tìm dữ liệu ở bên phải của lookup_value (tên học sinh). Trong khi đó, XLOOKUP() tìm được điểm của Robin vì nó có thể tìm theo cả hai hướng (trái hoặc phải).
Tham chiếu mảng
Với VLOOKUP(), bạn phải xác định toàn bộ phạm vi dữ liệu (mảng bảng) và chỉ định số cột (chỉ số cột) chứa kết quả cần trả về (cột trả về) trong một công thức duy nhất. XLOOKUP() linh hoạt hơn. Nó cho phép bạn xác định các mảng riêng cho giá trị tra cứu và dữ liệu muốn trả về.

Tham chiếu mảng giữa VLOOKUP() và XLOOKUP(). Nguồn: Tác giả.
Tra cứu theo hàng ngang
VLOOKUP() không cho phép bạn thực hiện tìm kiếm theo hàng ngang. Nếu muốn tìm ngang, bạn phải dùng HLOOKUP(). XLOOKUP() hợp nhất hai hàm này vì nó thực hiện được cả tra cứu dọc và ngang, nên bạn không cần dùng hàm riêng cho từng hướng tra cứu.

Khác biệt về tra cứu ngang giữa VLOOKUP() và XLOOKUP(). Nguồn: Tác giả.
Xử lý việc chèn/xóa cột
Thay đổi cột ảnh hưởng đến VLOOKUP() do column_index_num được mã cứng. Tuy nhiên, XLOOKUP() không bị ảnh hưởng bởi các thay đổi cột. Nó vẫn hoạt động mà không cần chỉnh sửa công thức.

XLOOKUP() không bị ảnh hưởng, còn VLOOKUP() thì lỗi. Nguồn: Tác giả.
Sắp xếp và tìm kiếm
Bạn có thể sắp xếp VLOOKUP() theo thứ tự tăng dần, nhưng điều này gây khó khăn khi xử lý dữ liệu chưa sắp xếp. Trong khi đó, XLOOKUP() có thể dùng đối số search_mode để tìm theo cả thứ tự tăng và giảm.

Xử lý chèn/xóa trong XLOOKUP() và VLOOKUP(). Nguồn: Tác giả.
Tùy chỉnh thông báo lỗi
VLOOKUP() hiển thị lỗi #N/A khi không tìm thấy kết quả khớp. XLOOKUP() có tham số tùy chọn if_not_found cho phép bạn tùy chỉnh thông điệp đầu ra nếu không tìm thấy giá trị.

Tùy chỉnh thông báo lỗi trong XLOOKUP() và VLOOKUP(). Nguồn: Tác giả.
Bạn có thể thấy VLOOKUP() không tìm thấy học sinh trong danh sách và hiển thị lỗi #N/A. Tương tự, hàm XLOOKUP() cũng không tìm thấy tên học sinh. Tuy nhiên, khác với VLOOKUP(), XLOOKUP() trả về thông điệp cụ thể khi không có kết quả khớp.
Trả về nhiều giá trị
VLOOKUP() chỉ có thể trả về một giá trị mỗi lần. Còn XLOOKUP() có thể lấy dữ liệu từ nhiều cột cùng lúc. Vì vậy bạn có thể dùng một công thức XLOOKUP() thay cho nhiều công thức VLOOKUP().

Trả về nhiều giá trị với XLOOKUP() và VLOOKUP(). Nguồn: Tác giả.
Chế độ tìm kiếm
VLOOKUP() duyệt danh sách từ đầu và chỉ trả về giá trị khớp đầu tiên. Nhưng XLOOKUP() có thể quét danh sách theo cả hai hướng (từ trên xuống hoặc từ dưới lên) và tìm nhanh trong danh sách lớn.

Khác biệt giữa VLOOKUP() và XLOOKUP(). Nguồn: Tác giả.
Ở đây, VLOOKUP() lấy lần xuất hiện đầu tiên, tức học kỳ 1. Tuy nhiên, với XLOOKUP(), tôi dùng mã chế độ tìm kiếm -1 để tìm từ dưới lên.
Ví dụ và trường hợp sử dụng thực tế
Hãy xem một số ví dụ và trường hợp sử dụng thực tế.
Tra cứu mà không cần sắp xếp lại bảng
Tôi có danh sách tên và điểm của học sinh, và tôi muốn tìm điểm của từng học sinh dựa trên tên của họ. Với mục đích này, tôi sẽ dùng cả XLOOKUP() và VLOOKUP() để cho bạn thấy sự khác biệt.
Khi dùng XLOOKUP(), tôi nhập công thức sau:
=XLOOKUP(D8,B2:B5,A2:A5)
Trong công thức này:
-
D8chứa giá trị cần tra cứu là Charlie. -
Phạm vi
B2:B5chứa tên học sinh. HàmXLOOKUP()sẽ tìm giá trị trong D8 trong phạm vi này. -
A2:A5là phạm vi chứa điểm tương ứng với tên học sinh.
Khi dùng VLOOKUP(), tôi nhập công thức sau:
=VLOOKUP(D4,A1:B5,1,0)
Trong công thức này:
-
D4chứa giá trị cần tra cứu là Charlie. -
Phạm vi
A1:B5tìm trong tất cả các cột (Scores, Student Name). -
1trả về giá trị từ cột thứ 1 của phạm vi (Scores). -
0lấy kết quả khớp chính xác.

VLOOKUP() trả về lỗi #N/A còn XLOOKUP() xử lý được. Nguồn: Tác giả.
Như bạn thấy, VLOOKUP() hiển thị lỗi #N/A vì không thể tìm sang bên trái.
Tạo thông điệp tùy chỉnh khi không tìm thấy giá trị
Tôi có danh sách học sinh với ID, tên và điểm số. Khi tìm kiếm, tôi vô tình nhập một mã ID học sinh không có trong danh sách. Để xử lý trường hợp này, tôi muốn hiển thị một thông điệp tùy chỉnh bất cứ khi nào không tìm thấy ID. Tôi sẽ dùng cả XLOOKUP() và VLOOKUP() để cho thấy sự khác biệt.
Khi dùng XLOOKUP(), tôi nhập công thức sau:
(=XLOOKUP(E9, A2:A5, B2:B5, "Student not Found"))
Trong công thức này:
-
E9chứa giá trị cần tìm. Trong ví dụ của tôi là 14256. -
A2:A5là phạm vi ô chứa giá trị tra cứu (Student ID). -
B2:B5tìm điểm của ID 14526. -
Student not Foundsẽ hiển thị nếu không có điểm trong danh sách.
Khi dùng VLOOKUP(), tôi nhập công thức sau:
(=VLOOKUP(E6, A2:C5,2,0))
Trong công thức này:
-
E6tham chiếu đến Student ID, tức là điều tôi đang tìm. -
A2:C5là phạm vi chứa toàn bộ dữ liệu của bảng. -
2chỉ định số cột sẽ lấy dữ liệu. -
0lấy kết quả khớp chính xác.

XLOOKUP() trả về thông điệp, còn VLOOKUP() thì không. Nguồn: Tác giả.
Bạn có thể thấy 14256 không tồn tại trong phạm vi A2:A5, nên XLOOKUP() trả về thông điệp tùy chỉnh Student not found. Còn VLOOKUP() thì báo lỗi #N/A.
Tìm kiếm từ dưới lên
Tôi muốn tìm mức lương của Sarah trong năm gần nhất. Với mục đích này, tôi sẽ dùng cả XLOOKUP() và VLOOKUP() để cho thấy sự khác biệt.
Khi dùng XLOOKUP(), tôi nhập công thức sau:
=XLOOKUP(F8,B2:B10,C2:C10,,,-1)
Trong công thức này:
-
F8chứa giá trị cần tra cứu Sarah. -
B2:B10tra trong phạm vi và tìm Sarah. -
C2:C10trả về dữ liệu. -
-1tìm từ cuối cột lên.
Khi dùng VLOOKUP(), tôi nhập công thức sau:
=VLOOKUP(F4, B2:C10,2,0)
Trong công thức này:
-
F4chứa giá trị cần tra cứu Sarah. -
B2:C10tìm giá trị cần tra cứu trong phạm vi này. -
2chỉ định số cột Salary sẽ lấy dữ liệu. -
0lấy kết quả khớp chính xác.

Khác biệt giữa VLOOKUP() và XLOOKUP() ở chế độ tìm kiếm. Nguồn: Tác giả.
Bạn có thể thấy XLOOKUP() tìm được mức lương theo năm mong muốn, còn VLOOKUP() chỉ hiển thị giá trị khớp đầu tiên. Tôi làm được điều này vì XLOOKUP() cho phép tìm từ dưới lên.
Hiệu năng và khả năng tương thích
Giờ hãy so sánh hiệu năng và khả năng tương thích của cả hai hàm.
Hiệu năng trên tập dữ liệu lớn
VLOOKUP() có thể chậm khi xử lý tập dữ liệu lớn, đặc biệt nếu cột tra cứu không được sắp xếp và đối số range lookup đặt là FALSE để khớp chính xác. Nguyên nhân là VLOOKUP() quét tuần tự cho đến khi tìm thấy kết quả, gây tốn thời gian với bảng lớn. XLOOKUP() cho hiệu năng tốt hơn với tập dữ liệu lớn. Nó xử lý khớp chính xác hiệu quả hơn và có thể tìm theo chiều dọc lẫn ngang mà không cần sắp xếp.
Khả năng tương thích với các phiên bản Excel
Có lẽ lúc này bạn đang muốn bỏ VLOOKUP() sau khi thấy lợi ích của XLOOKUP(). Nhưng xin làm rõ—dù XLOOKUP() nhanh hơn và rất hữu ích, vẫn có vài trường hợp nó không khả dụng. Đó là vì XLOOKUP() là tính năng mới chỉ hoạt động trên Excel 2021 và Microsoft 365 (từ 2019). Nếu bạn cộng tác với những người dùng các phiên bản cũ hơn của Excel, bạn sẽ cần dùng VLOOKUP() và các hàm khác thay cho XLOOKUP().
Bảng tóm tắt
Hãy tạo một bảng tóm tắt để tiện tham chiếu.
| Tính năng | VLOOKUP() | XLOOKUP() |
|---|---|---|
| Chế độ khớp mặc định | Yêu cầu chỉ định FALSE để khớp chính xác. |
Mặc định là khớp chính xác. |
| Hướng tra cứu | Chỉ tìm sang bên phải của cột tra cứu. | Có thể tìm theo mọi hướng (trái, phải, trên, dưới). |
| Tham chiếu mảng | Yêu cầu xác định toàn bộ phạm vi dữ liệu và chỉ số cột trong một công thức. | Cho phép tách riêng mảng tra cứu và mảng trả về. |
| Tra cứu ngang | Không hỗ trợ tra cứu ngang (cần HLOOKUP()). |
Hỗ trợ cả tra cứu dọc và ngang. |
| Xử lý thay đổi cột | Bị ảnh hưởng khi chèn/xóa cột do chỉ số cột được mã cứng. | Không bị ảnh hưởng bởi thay đổi cột, tiếp tục hoạt động mà không cần điều chỉnh. |
| Sắp xếp và tìm kiếm | Giới hạn ở sắp xếp theo thứ tự tăng dần. | Có thể tìm theo cả tăng và giảm bằng đối số search_mode. |
| Thông báo lỗi tùy chỉnh | Hiển thị lỗi #N/A khi không có kết quả khớp. |
Cho phép tùy chỉnh thông điệp khi không có kết quả khớp. |
| Trả về nhiều giá trị | Chỉ trả về một giá trị mỗi lần. | Có thể lấy dữ liệu từ nhiều cột đồng thời. |
| Chế độ tìm kiếm | Tìm từ trên xuống và trả về kết quả khớp đầu tiên. | Có thể tìm theo cả hai hướng (trên xuống hoặc dưới lên) để có kết quả nhanh trên danh sách lớn. |
| Hiệu năng trên dữ liệu lớn | Có thể chậm, đặc biệt với dữ liệu chưa sắp xếp hoặc khi range_lookup là FALSE. |
Hiệu năng tốt hơn, xử lý dữ liệu lớn hiệu quả và tìm kiếm không cần sắp xếp. |
| Khả năng tương thích | Hoạt động với mọi phiên bản Excel. | Chỉ có trên Excel 2021 và Microsoft 365 (từ 2019). |
| Tổng kết | Vẫn hữu ích cho các phiên bản Excel cũ hoặc tác vụ tra cứu đơn giản. | Mạnh mẽ và linh hoạt hơn, phù hợp với tra cứu phức tạp hoặc quy mô lớn. |
Kết luận
XLOOKUP() vượt trội so với VLOOKUP(), đặc biệt khi xử lý tập dữ liệu lớn hoặc yêu cầu tra cứu phức tạp. Tính linh hoạt của nó, gồm tìm hai chiều, trả về nhiều kết quả và thích ứng với thay đổi dữ liệu, khiến đây là công cụ hữu ích. Tuy vậy, VLOOKUP() vẫn có chỗ đứng, nhất là với người dùng các phiên bản Excel cũ hoặc những ai ưa cách tiếp cận đơn giản cho tra cứu cơ bản. Lựa chọn tốt nhất cuối cùng phụ thuộc vào nhu cầu cụ thể và phiên bản Excel của bạn.
Nếu bạn mới làm quen với Excel hoặc muốn xây nền tảng vững chắc, khóa học Introduction to Excel và lộ trình kỹ năng Excel Fundamentals là điểm khởi đầu tuyệt vời để nắm vững những điều cơ bản.
Tôi là một chiến lược gia nội dung, yêu thích việc đơn giản hóa các chủ đề phức tạp. Tôi đã giúp các công ty như Splunk, Hackernoon và Tiiny Host tạo nội dung hấp dẫn và giàu thông tin cho khán giả của họ.
Câu hỏi thường gặp
XLOOKUP() có tốt hơn VLOOKUP() không?
Có, XLOOKUP() tốt hơn vì có thể tìm trong bất kỳ cột nào của bảng, trả về nhiều kết quả, xử lý lỗi tốt hơn và thực hiện cả tra cứu dọc lẫn ngang.
Hạn chế của VLOOKUP() so với XLOOKUP() là gì?
VLOOKUP() bị giới hạn ở việc tìm trong cột đầu tiên của phạm vi chỉ định. Và nó chỉ có thể trả về một kết quả cho mỗi lần tra cứu.
XLOOKUP() có xử lý được các phép mảng như SUMIFS() hay COUNTIFS() không?
Có, XLOOKUP() có thể dùng với các hàm mảng như SUMIFS() và COUNTIFS() để thực hiện các phép tính và tác vụ phân tích dữ liệu phức tạp hơn.
