
VLOOKUP là một trong những hàm Excel được sử dụng rộng rãi nhất mọi thời đại. Dù bạn đang đối chiếu mã khách hàng với tên, lấy giá từ danh mục sản phẩm, hay kết hợp dữ liệu từ hai trang tính khác nhau, VLOOKUP đều hoàn thành công việc chỉ với một công thức duy nhất. Hướng dẫn này bao gồm tất cả những gì bạn cần — cú pháp, ví dụ thực tế, các lỗi thường gặp và khi nào nên dùng hàm khác thay thế.
VLOOKUP là viết tắt của Vertical Lookup (Tra cứu Dọc). Hàm này tìm kiếm một giá trị trong cột đầu tiên của một vùng dữ liệu và trả về giá trị từ một cột được chỉ định trong cùng hàng đó. Hãy hình dung nó như một thao tác tìm kiếm chính xác: bạn đưa cho Excel một khóa tra cứu, cho biết nơi cần tìm, và yêu cầu nó trả về một thông tin từ bản ghi tương ứng.
Các ứng dụng thực tế phổ biến bao gồm:
=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
Mỗi đối số có một vai trò cụ thể:
| Đối số | Bắt buộc? | Ý nghĩa |
|---|---|---|
| lookup_value | Có | Giá trị bạn muốn tìm — một tham chiếu ô, số hoặc chuỗi văn bản. |
| table_array | Có | Vùng dữ liệu chứa bảng tra cứu. Cột tra cứu phải là cột ngoài cùng bên trái của vùng này. |
| col_index_num | Có | Số thứ tự cột (đếm từ bên trái của table_array) có giá trị mà bạn muốn trả về. |
| range_lookup | Không | FALSE (hoặc 0) để khớp chính xác; TRUE (hoặc 1) để khớp gần đúng. Mặc định là TRUE nếu bỏ qua. |
Lưu ý quan trọng: Luôn dùng FALSE cho đối số thứ tư trừ khi bạn đang làm việc với bảng đã được sắp xếp và thực sự cần khớp gần đúng (chẳng hạn tra cứu theo khung điểm hoặc bậc thuế). Bỏ qua đối số này hoặc dùng TRUE với dữ liệu chưa sắp xếp là nguyên nhân hàng đầu dẫn đến kết quả sai.
Giả sử bạn quản lý một danh mục sản phẩm nhỏ trên Sheet1 và muốn lấy giá vào phiếu đặt hàng trên Sheet2. Đây là cách dữ liệu hiển thị trên Sheet1:
| A — Mã SKU | B — Tên Sản Phẩm | C — Giá |
|---|---|---|
| P001 | Chuột Không Dây | $29.99 |
| P002 | USB-C Hub | $49.99 |
| P003 | Bàn Phím Cơ | $89.99 |
| P004 | Giá Đỡ Màn Hình | $34.99 |
Trên Sheet2, cột A chứa mã SKU do người dùng nhập. Để trả về tên sản phẩm vào cột B của Sheet2, hãy nhập:
=VLOOKUP(A2, Sheet1!$A$2:$C$5, 2, FALSE)
Để trả về giá vào cột C của Sheet2, thay chỉ số cột thành 3:
=VLOOKUP(A2, Sheet1!$A$2:$C$5, 3, FALSE)
Hãy chú ý các dấu đô la trong Sheet1!$A$2:$C$5. Chúng cố định vùng dữ liệu để khi bạn sao chép công thức xuống các hàng khác, table_array không bị dịch chuyển. Nếu bạn chưa quen với cách hoạt động của tham chiếu ô, bài viết về tham chiếu ô trong Excel: tương đối và tuyệt đối giải thích khái niệm này một cách đầy đủ.
Đặt đối số thứ tư là TRUE khi bảng tra cứu của bạn đã được sắp xếp theo thứ tự tăng dần và bạn muốn tìm giá trị gần nhất nhỏ hơn hoặc bằng giá trị tra cứu. Ví dụ điển hình là chuyển đổi điểm số thô sang điểm chữ:
=VLOOKUP(B2, $E$2:$F$6, 2, TRUE)
| E — Điểm Tối Thiểu | F — Xếp Loại |
|---|---|
| 0 | F |
| 60 | D |
| 70 | C |
| 80 | B |
| 90 | A |
Điểm 85 sẽ khớp với hàng 80 và trả về "B". Cách này chỉ hoạt động chính xác vì cột Điểm Tối Thiểu được sắp xếp từ thấp đến cao.
Đây là lỗi thường gặp nhất. Nó có nghĩa là VLOOKUP không tìm thấy lookup_value trong cột đầu tiên của bảng. Hãy kiểm tra:
Để ẩn lỗi trong khi gỡ lỗi, hãy bọc công thức: =IFERROR(VLOOKUP(A2, $D$2:$F$10, 2, FALSE), "Không tìm thấy")
Lỗi này xuất hiện khi col_index_num lớn hơn số cột trong table_array của bạn. Ví dụ, chỉ định cột số 5 trong khi vùng dữ liệu chỉ có 3 cột. Hãy đếm lại số cột và giảm chỉ số cho phù hợp.
Thường do col_index_num bằng không hoặc là giá trị không phải số. Chỉ số cột phải là số nguyên dương từ 1 trở lên.
Nếu bạn bỏ qua đối số thứ tư (hoặc đặt là TRUE) nhưng bảng dữ liệu chưa được sắp xếp, VLOOKUP có thể trả về kết quả khớp gần đúng không chính xác mà không hề báo lỗi. Luôn dùng FALSE khi cần khớp chính xác.
Bạn có thể kết hợp VLOOKUP với các hàm logic để đạt kết quả linh hoạt hơn. Ví dụ, chỉ hiển thị chiết khấu khi tra cứu thành công:
=IF(IFERROR(VLOOKUP(A2, $D$2:$F$10, 3, FALSE), "") = "", "Không có chiết khấu", VLOOKUP(A2, $D$2:$F$10, 3, FALSE))
Để tìm hiểu thêm về cách xây dựng phép kiểm tra logic bên trong công thức, hãy xem hướng dẫn đầy đủ về hàm IF: kiểm tra logic và IF lồng nhau.
Bạn có thể tham chiếu dữ liệu từ trang tính khác bằng cách thêm tên trang tính vào trước vùng dữ liệu:
=VLOOKUP(A2, Catalog!$A$2:$C$100, 2, FALSE)
Để tham chiếu đến một bảng tính khác (khi đang mở):
=VLOOKUP(A2, [PriceList.xlsx]Sheet1!$A$2:$C$100, 2, FALSE)
Nếu bảng tính đó đang đóng, Excel sẽ tự động hiển thị đường dẫn đầy đủ của tệp khi bạn tạo liên kết trong lúc cả hai tệp đều đang mở.
Sự kết hợp INDEX MATCH loại bỏ hạn chế cột đầu tiên và ổn định hơn khi các cột được thêm hoặc sắp xếp lại. Nếu bạn đang vất vả với các hạn chế của VLOOKUP, bài viết chuyên sâu về INDEX MATCH: phương pháp tra cứu vượt trội sẽ hướng dẫn từng bước để chuyển đổi.
Có mặt trong Excel 365 và Excel 2021, XLOOKUP đơn giản và mạnh mẽ hơn:
=XLOOKUP(A2, Sheet1!$A$2:$A$5, Sheet1!$C$2:$C$5, "Không tìm thấy")
Hàm này tra cứu theo mọi hướng, xử lý giá trị bị thiếu một cách tự nhiên và không yêu cầu chỉ số cột dạng số. Nếu phiên bản Excel của bạn hỗ trợ, hãy cân nhắc dùng XLOOKUP cho tất cả các dự án mới.
VLOOKUP kết hợp tốt với nhiều quy trình Excel khác. Ví dụ, một bảng điều khiển doanh số theo dõi KPI và hiệu suất thường sử dụng VLOOKUP để lấy tên sản phẩm hoặc vùng phụ trách của nhân viên kinh doanh từ bảng tham chiếu vào báo cáo tổng hợp. Tương tự, việc tạo mẫu hóa đơn thanh toán chuyên nghiệp hầu như luôn cần một hàm VLOOKUP để lấy đơn giá từ danh sách sản phẩm dựa trên mã hàng do người dùng nhập.
Đối với các nhóm làm việc với tập dữ liệu lớn, kết hợp VLOOKUP với Pivot Table là một quy trình làm việc hiệu quả: dùng VLOOKUP để bổ sung nhãn danh mục vào dữ liệu thô, sau đó tổng hợp trong Pivot Table.
Nếu bạn biết mình cần gì nhưng không nhớ cú pháp chính xác — ví dụ, "tra cứu mã nhân viên trong cột A của trang tính HR và trả về mức lương từ cột D" — GPTExcel cho phép bạn mô tả yêu cầu bằng tiếng Việt thông thường và tạo ra công thức VLOOKUP chính xác ngay lập tức, sẵn sàng để dán vào bảng tính của bạn.
Nguyên nhân phổ biến nhất là kiểu dữ liệu không nhất quán hoặc có khoảng trắng thừa trong một số ô nhất định. Hãy chạy =TRIM(A2) trên các giá trị tra cứu và đảm bảo tất cả các mục trong cột tra cứu được lưu cùng một kiểu dữ liệu (tất cả là văn bản hoặc tất cả là số). Bạn cũng có thể dùng =IFERROR(VLOOKUP(...), "Kiểm tra dữ liệu") để xác định các hàng bị lỗi mà không làm ảnh hưởng đến phần còn lại của báo cáo.
Không thể với một công thức đơn lẻ theo nghĩa truyền thống. Bạn cần một hàm VLOOKUP riêng cho mỗi cột muốn trả về, chỉ thay đổi col_index_num. Ngoài ra, XLOOKUP trong Excel 365 có thể trả về toàn bộ một hàng kết quả chỉ với một công thức bằng cách chỉ định mảng trả về gồm nhiều cột.
VLOOKUP luôn trả về giá trị tương ứng với kết quả khớp đầu tiên tìm được, quét từ trên xuống dưới. Nếu cột tra cứu có các giá trị trùng lặp, các kết quả khớp tiếp theo sẽ bị bỏ qua. Trong các tình huống có dữ liệu trùng lặp, hãy cân nhắc dùng Pivot Table hoặc cột phụ để loại bỏ trùng lặp trước khi tra cứu.
Không. VLOOKUP xem chữ hoa và chữ thường là giống nhau. Tìm kiếm "apple" sẽ khớp với "Apple" hoặc "APPLE". Nếu bạn cần tra cứu có phân biệt chữ hoa, chữ thường, bạn phải dùng công thức mảng kết hợp EXACT() và INDEX/MATCH thay thế.
Tìm hiểu cách hàm TEXT trong Excel chuyển đổi số, ngày và giờ thành chuỗi văn bản được định dạng bằng mã định dạng — kèm ví dụ thực tế và cách dùng.
Tìm hiểu cách hoạt động của hàm IF trong Excel, cách lồng nhiều hàm IF và khi nào nên sử dụng các giải pháp thay thế hiện đại như IFS và SWITCH để logic gọn gàng, dễ đọc hơn.
Thành thạo SUMIF và SUMIFS trong Excel để tính tổng dữ liệu dựa trên một hoặc nhiều điều kiện, với cú pháp thực tế, ví dụ minh họa và hướng dẫn từng bước chi tiết.