Chuyển đến nội dung chính

XLOOKUP() và VLOOKUP(): So sánh dành cho người dùng Excel

XLOOKUP() tìm theo mọi hướng, mặc định khớp chính xác và có xử lý lỗi tích hợp, trong khi VLOOKUP() chỉ tìm sang phải và cần chỉ số cột thủ công.
Đã cập nhật 5 thg 6, 2026  · 11 phút đọc

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_value là 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_array là phạm vi ô chứa dữ liệu. Cột đầu tiên trong phạm vi này nên chứa search_key.

  • col_index_num là số thứ tự cột trong phạm vi mà bạn muốn lấy giá trị. 

  • range_lookup là nơi bạn nhập giá trị logic (TRUE hoặc FALSE).

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_value là giá trị bạn muốn tìm.

  • lookup_array là phạm vi ô nơi giá trị tra cứu được tìm kiếm.

  • return_array là 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. 0 là khớp chính xác (mặc định). -1 là khớp chính xác hoặc mục nhỏ hơn kế tiếp. 1 là khớp chính xác hoặc mục lớn hơn kế tiếp. 2 là khớp ký tự đại diện (wildcard).

  • search_mode (tùy chọn) xác định chế độ tìm kiếm. 1 dùng để tìm từ đầu đến cuối (mặc định). -1 dùng để tìm từ cuối lên đầu. 2 dùng để tìm kiếm nhị phân theo thứ tự tăng dần. -2 dù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()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.

XLOOKUP mặc định khớp chính xác, trong khi 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.

VLOOKUP chỉ có thể tìm sang phải của cột tra cứu, trong khi XLOOKUP có thể tìm cả trái và phải trong mảng tra cứu.

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ề. 

VLOOKUP cần một phạm vi dữ liệu và chỉ số cột duy nhất, trong khi XLOOKUP cho phép tách riêng mảng tra cứu và mảng 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.

Xử lý các hàng ngang với VLOOKUP, HLOOKUP, XLOOKUP

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 bởi thay đổi cột, trong khi VLOOKUP lỗi do chỉ số cột mã cứng."

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.

XLOOKUP có thể tìm theo cả thứ tự tăng và giảm, trong khi VLOOKUP bị giới hạn ở thứ tự tăng.

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ị. 

XLOOKUP có thể trả về thông báo tùy chỉnh khi không tìm thấy giá trị, trong khi VLOOKUP hiển thị lỗi #N/A.

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().

XLOOKUP lấy được nhiều cột, trong khi VLOOKUP chỉ có thể lấy một cột

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()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:

  • D8 chứa giá trị cần tra cứu là Charlie.

  • Phạm vi B2:B5 chứa tên học sinh. Hàm XLOOKUP() sẽ tìm giá trị trong D8 trong phạm vi này.

  • A2:A5 là 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:

  • D4 chứa giá trị cần tra cứu là Charlie.

  • Phạm vi A1:B5 tìm trong tất cả các cột (Scores, Student Name).

  • 1 trả về giá trị từ cột thứ 1 của phạm vi (Scores).

  • 0 lấy kết quả khớp chính xác.

VLOOKUP trả về lỗi #N/A khi tra cứu sang trái, trong khi XLOOKUP xử lý hoàn hảo.

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 đ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()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:

  • E9 chứa giá trị cần tìm. Trong ví dụ của tôi là 14256.

  • A2:A5 là phạm vi ô chứa giá trị tra cứu (Student ID).

  • B2:B5 tìm điểm của ID 14526.

  • Student not Found sẽ 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:

  • E6 tham chiếu đến Student ID, tức là điều tôi đang tìm.

  • A2:C5 là phạm vi chứa toàn bộ dữ liệu của bảng.

  • 2 chỉ định số cột sẽ lấy dữ liệu.

  • 0 lấy kết quả khớp chính xác.

XLOOKUP trả về thông điệp tùy chỉnh trong khi VLOOKUP hiển thị lỗi #N/A

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:

  • F8 chứa giá trị cần tra cứu Sarah.

  • B2:B10 tra trong phạm vi và tìm Sarah

  • C2:C10 trả về dữ liệu.

  • -1 tì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:

  • F4 chứa giá trị cần tra cứu Sarah.

  • B2:C10 tìm giá trị cần tra cứu trong phạm vi này.

  • 2 chỉ định số cột Salary sẽ lấy dữ liệu.

  • 0 lấy kết quả khớp chính xác.

VLOOKUP trả về kết quả khớp đầu tiên từ đầu danh sách, trong khi XLOOKUP có thể tìm theo cả hai hướng và tìm kết quả gần nhất

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_lookupFALSE. 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.


Laiba Siddiqui's photo
Author
Laiba Siddiqui
LinkedIn
Twitter

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()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.

Chủ đề

Học Excel với DataCamp

Courses

Nghiên cứu tình huống: Quản trị Doanh thu Ròng trong Excel

4 giờ
4.9K
Bạn sẽ sử dụng các kỹ thuật Quản lý Doanh thu Thuần trong Excel cho một công ty Hàng Tiêu Dùng Nhanh.
Xem chi tiếtRight Arrow
Bắt đầu khóa học
Xem thêmRight Arrow