Có thể bạn quan tâm: Excel Vba Password Remover Xlsm: Hướng Dẫn Chi Tiết Từ A Đến Z Để Gỡ Mật Khẩu File Excel
Mở đầu: Tại sao VLOOKUP lại quan trọng?
Trong môi trường làm việc hiện đại, dữ liệu luôn là yếu tố cốt lõi quyết định hiệu suất và chất lượng quyết định. Khi bạn phải xử lý một lượng lớn thông tin, việc tìm kiếm, tra cứu và liên kết dữ liệu giữa các bảng tính (sheet) trở nên cực kỳ quan trọng. VLOOKUP – một trong những hàm tìm kiếm mạnh mẽ nhất của Microsoft Excel – cho phép bạn nhanh chóng lấy giá trị từ một bảng dữ liệu dựa trên một khóa (key) duy nhất.
Tuy nhiên, nhiều người dùng Excel vẫn gặp khó khăn khi muốn thực hiện VLOOKUP giữa các sheet khác nhau trong cùng một workbook hoặc thậm chí giữa các workbook khác nhau. Bài viết dưới đây sẽ cung cấp cho bạn một hướng dẫn toàn diện, chi tiết, từ những kiến thức cơ bản đến các mẹo nâng cao, giúp bạn thành thạo VLOOKUP từ một sheet sang sheet khác.
Có thể bạn quan tâm: Cách Lấy Giá Trị Độc Nhất (unique Values) Trong Cột Excel: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
1. Kiến thức nền tảng về VLOOKUP
1.1 Cú pháp cơ bản
VLOOKUP(lookup_value, table_array, col_index_num, range_lookup)
| Tham số | Mô tả |
|---|---|
| lookup_value | Giá trị bạn muốn tìm kiếm (có thể là một ô, một chuỗi, một số…). |
| table_array | Dải ô chứa dữ liệu nguồn, bao gồm cả cột chứa lookup_value và các cột cần trả về. |
| col_index_num | Số thứ tự cột trong table_array mà bạn muốn trả về giá trị (bắt đầu tính từ 1). |
| range_lookup | Tùy chọn: TRUE (hoặc bỏ trống) để tìm gần đúng; FALSE để tìm chính xác. |
1.2 Giới hạn và lưu ý
- Cột khóa phải ở cột đầu tiên của
table_array. Nếu không, VLOOKUP sẽ không hoạt động. - VLOOKUP chỉ trả về giá trị từ bên phải của cột khóa. Nếu cần trả về giá trị bên trái, bạn phải dùng hàm
INDEX/MATCHhoặcXLOOKUP(Excel 365/2026 trở lên). - Khi
range_lookuplàFALSE, Excel sẽ tìm chính xác. Nếu không tìm thấy, hàm trả về lỗi#N/A.
Có thể bạn quan tâm: Excel Tự Xóa Số 0: Cách Thực Hiện, Lý Do Và Những Lưu Ý Quan Trọng
2. VLOOKUP trong cùng một workbook: giữa các sheet
2.1 Cách tham chiếu sheet trong công thức
Khi bạn muốn tra cứu dữ liệu từ một sheet khác, bạn chỉ cần đặt tên sheet trước dải ô, ngăn cách bằng dấu !. Ví dụ:
=VLOOKUP(A2, Sheet2!$A$1:$D$500, 3, FALSE)
Sheet2!là tên sheet chứa dữ liệu nguồn.$A$1:$D$500là dải ô của bảng dữ liệu trên Sheet2.$(dấu đô la) dùng để khóa địa chỉ ô khi sao chép công thức.
2.2 Thực hành: Tạo bảng khách hàng và bảng đơn hàng
Giả sử bạn có hai sheet:
| Sheet1 – “Khách Hàng” | |
|---|---|
| A | B |
| Mã KH | Tên KH |
| KH001 | Nguyễn Văn A |
| KH002 | Trần Thị B |
| KH003 | Lê Văn C |
| Sheet2 – “Đơn Hàng” | |
|---|---|
| A | B |
| Mã KH | Mã ĐH |
| KH001 | DH001 |
| KH002 | DH002 |
| KH001 | DH003 |
Bạn muốn trong Sheet2 hiển thị Tên KH tương ứng với mỗi Mã KH. Công thức:
=VLOOKUP(A2, 'Khách Hàng'!$A$2:$B$100, 2, FALSE)
A2là ô chứaMã KHtrên Sheet2.'Khách Hàng'!$A$2:$B$100là dải dữ liệu trên Sheet1 (có dấu nháy đơn vì tên sheet có khoảng trắng).2là cột thứ hai (Tên KH) trong dải dữ liệu.FALSEđể tìm chính xác.
Kéo công thức xuống, Excel sẽ tự động điền tên khách hàng cho mỗi dòng đơn hàng.
2.3 Khi tên sheet chứa ký tự đặc biệt
Nếu tên sheet có dấu cách, dấu chấm, hoặc ký tự đặc biệt, bắt buộc phải đặt trong dấu nháy đơn ('). Ví dụ:
=VLOOKUP(A2, 'Bảng Dữ Liệu 2026'!$A$1:$D$500, 4, FALSE)
2.4 Sử dụng tên định danh (Named Range) cho bảng dữ liệu
Để công thức dễ đọc hơn, bạn có thể đặt tên cho dải ô nguồn:
- Chọn dải ô trên Sheet1 (
$A$2:$B$100). - Vào Formulas → Define Name (hoặc Ctrl + F3).
- Đặt tên, ví dụ tblKhachHang.
Sau đó công thức sẽ trở nên ngắn gọn:
=VLOOKUP(A2, tblKhachHang, 2, FALSE)
Lợi ích: Khi di chuyển hoặc mở rộng bảng, bạn chỉ cần cập nhật Named Range mà không cần sửa từng công thức.
3. VLOOKUP giữa các workbook (file Excel) khác nhau
3.1 Cú pháp tham chiếu workbook
Khi dữ liệu nguồn nằm trong một file Excel khác, cú pháp sẽ có dạng:
=VLOOKUP(A2, 'TênFile.xlsxSheetName'!$A$1:$D$500, 3, FALSE)
TênFile.xlsx– tên file (kèm phần mở rộng) đặt trong dấu ngoặc vuông.SheetName– tên sheet trong file đó.- Dấu
!để ngăn cách sheet và dải ô.
Lưu ý: Khi workbook nguồn chưa được mở, Excel sẽ tự động tạo liên kết tới file đó. Khi mở lại, Excel sẽ hỏi bạn có muốn cập nhật liên kết hay không.
3.2 Ví dụ thực tế
Bạn có file DataCustomers.xlsx với sheet Customers chứa:
| A | B |
|---|---|
| Mã KH | Tên KH |
| KH001 | Nguyễn Văn A |
| KH002 | Trần Thị B |
| KH003 | Lê Văn C |
Trong file hiện tại Orders.xlsx, bạn muốn tra cứu tên khách hàng:
=VLOOKUP(A2, 'DataCustomers.xlsxCustomers'!$A$2:$B$1000, 2, FALSE)
Khi DataCustomers.xlsx không mở, Excel sẽ hiển thị đường dẫn đầy đủ (ví dụ C:\Users\Tên\User\Documents\DataCustomers.xlsx). Nếu bạn di chuyển file nguồn, liên kết sẽ bị #REF! và cần sửa lại.
3.3 Cách giữ liên kết ổn định
- Đặt cả hai file trong cùng thư mục: Khi di chuyển thư mục, liên kết vẫn giữ nguyên vì Excel lưu đường dẫn tương đối.
- Sử dụng Power Query: Đối với dữ liệu lớn hoặc thay đổi thường xuyên, Power Query cho phép nhập dữ liệu từ file nguồn và tự động cập nhật mà không cần công thức VLOOKUP.
4. Các vấn đề thường gặp và cách khắc phục
4.1 Lỗi #N/A
- Nguyên nhân: Không tìm thấy giá trị trong cột khóa hoặc
range_lookup = FALSEvà không có khớp chính xác. - Giải pháp:
- Kiểm tra định dạng (số vs. văn bản). Sử dụng
TRIM,VALUE,TEXT. - Dùng
IFERRORđể hiển thị thông báo thân thiện:=IFERROR(VLOOKUP(A2, tblKhachHang, 2, FALSE), "Không tìm thấy")
4.2 Lỗi #REF!
- Nguyên nhân:
col_index_numlớn hơn số cột trongtable_array. - Giải pháp: Đảm bảo
col_index_numnằm trong phạm vi. Kiểm tra lại dải ô.
4.3 Lỗi #VALUE!
- Nguyên nhân: Dải ô không phải là bảng hợp lệ (ví dụ: mảng 2‑chiều không đồng nhất) hoặc
lookup_valuekhông hợp lệ. - Giải pháp: Kiểm tra lại dữ liệu, loại bỏ các ký tự không mong muốn.
4.4 VLOOKUP trả về giá trị sai do dữ liệu không được sắp xếp
Khi range_lookup để mặc định (TRUE) hoặc không chỉ định, Excel sẽ thực hiện tìm gần đúng và yêu cầu cột khóa được sắp xếp tăng dần. Nếu không, kết quả có thể sai.
Cách khắc phục:
– Luôn sử dụng FALSE cho tìm chính xác, trừ khi bạn thực sự cần tìm gần đúng.
– Hoặc sắp xếp cột khóa trước khi dùng VLOOKUP.

Có thể bạn quan tâm: Excel Vba Programming For Dummies: Hướng Dẫn Toàn Diện Từ Cơ Bản Đến Nâng Cao
4.5 Tra cứu dữ liệu lớn (hàng nghìn) – VLOOKUP chậm
- Giải pháp 1: Chuyển sang XLOOKUP (Excel 365) – nhanh hơn và linh hoạt hơn.
- Giải pháp 2: Sử dụng INDEX/MATCH kết hợp với MATCH có dạng
0(chính xác) – thường nhanh hơn VLOOKUP khi dải dữ liệu lớn. - Giải pháp 3: Dùng Power Query để hợp nhất dữ liệu một lần, thay vì thực hiện VLOOKUP trên từng ô.
5. Các hàm thay thế và nâng cao
5.1 XLOOKUP (Excel 365, 2026 trở lên)
=XLOOKUP(lookup_value, lookup_array, return_array, if_not_found, match_mode, search_mode)
- Không cần
col_index_num, trả về bất kỳ cột nào. - Có thể tìm bên trái hoặc bên phải.
- Tùy chọn
if_not_foundtrả về thông báo tùy chỉnh thay vì#N/A.
Ví dụ tra cứu tên khách hàng:
=XLOOKUP(A2, 'Khách Hàng'!$A$2:$A$100, 'Khách Hàng'!$B$2:$B$100, "Không có")
5.2 INDEX + MATCH
=INDEX(return_range, MATCH(lookup_value, lookup_range, 0))
MATCHtrả về vị trí (row number) củalookup_value.INDEXtrả về giá trị tại vị trí đó trongreturn_range.- Cho phép tra cứu bên trái và bên phải.
Ví dụ:
=INDEX('Khách Hàng'!$B$2:$B$100, MATCH(A2, 'Khách Hàng'!$A$2:$A$100, 0))
5.3 Power Query (Get & Transform)
- Bước 1: Vào Data → Get Data → From File → From Workbook.
- Bước 2: Chọn sheet nguồn, thực hiện Merge Queries (giống JOIN trong SQL) với sheet đích.
- Bước 3: Chọn cột khóa, chọn loại join (Left Outer, Inner…).
- Bước 4: Tải kết quả về Excel.
Power Query giúp tự động cập nhật khi dữ liệu nguồn thay đổi, giảm thiểu lỗi công thức.
6. Thực hành nâng cao: VLOOKUP đa điều kiện
VLOOKUP gốc chỉ hỗ trợ một điều kiện (cột khóa). Để tra cứu theo nhiều điều kiện, chúng ta có một số cách:
6.1 Tạo cột hỗ trợ (Helper Column)
- Trong sheet nguồn, tạo cột mới (ví dụ cột E) chứa kết hợp các trường cần tra cứu:
=A2 & "|" & B2 // Kết hợp Mã KH và Mã ĐH - Trong sheet đích, tạo công thức tương tự để tạo khóa:
=A2 & "|" & B2 - Sử dụng VLOOKUP bình thường dựa trên cột hỗ trợ.
6.2 Sử dụng INDEX/MATCH với mảng
=INDEX(return_range, MATCH(1, (lookup_range1=criteria1)(lookup_range2=criteria2), 0))
- Nhập công thức dưới dạng Ctrl+Shift+Enter (đối với Excel trước 365) để tạo mảng.
- Ví dụ:
=INDEX('Bảng Đơn Hàng'!$C$2:$C$1000, MATCH(1, ('Bảng Đơn Hàng'!$A$2:$A$1000=E2)('Bảng Đơn Hàng'!$B$2:$B$1000=F2), 0))
6.3 XLOOKUP đa điều kiện (Excel 365)
Kết hợp FILTER với XLOOKUP:
=FILTER(return_range, (lookup_range1=criteria1)(lookup_range2=criteria2))
Ví dụ:
=FILTER('Bảng Đơn Hàng'!$C$2:$C$1000, ('Bảng Đơn Hàng'!$A$2:$A$1000=E2)('Bảng Đơn Hàng'!$B$2:$B$1000=F2))
Nếu chỉ có một kết quả, hàm sẽ trả về giá trị duy nhất; nếu không, sẽ trả về mảng.
7. Tối ưu hoá công thức VLOOKUP trong thực tế
7.1 Sử dụng bảng động (Dynamic Array)
Trong Excel 365, bạn có thể khai thác dynamic arrays để trả về nhiều giá trị cùng lúc, giảm số lần sao chép công thức.
=VLOOKUP(A2:A10, tblKhachHang, 2, FALSE)
Kết quả sẽ tự động “rải” xuống các ô liền kề.
7.2 Giảm độ phức tạp bằng Table (định dạng bảng)
- Chọn dải dữ liệu → Insert → Table.
- Khi dữ liệu được định dạng thành Table, bạn có thể dùng structured references:
=VLOOKUP(@MãKH, KhachHang MãKH:TênKH , 2, FALSE) - Ưu điểm: Khi thêm hoặc xóa hàng, dải ô tự động mở rộng, công thức không bị lỗi.
7.3 Tránh lỗi do khoảng trắng thừa
Sử dụng hàm TRIM để loại bỏ khoảng trắng không mong muốn:
=VLOOKUP(TRIM(A2), tblKhachHang, 2, FALSE)
7.4 Kiểm tra dữ liệu trùng lặp
Nếu cột khóa có giá trị trùng lặp, VLOOKUP sẽ trả về giá trị đầu tiên gặp. Để lấy tất cả các giá trị liên quan, bạn cần dùng FILTER hoặc INDEX/SMALL kết hợp.
Ví dụ:
=FILTER(tblDonHangHàng, tblDonHangMãKH=E2)
8. Bảo trì và quản lý công thức VLOOKUP trong dự án lớn
8.1 Đặt tên thống nhất
- Tên sheet: Không dùng ký tự đặc biệt, tránh khoảng trắng nếu không muốn dùng dấu nháy.
- Tên Named Range: Dùng tiền tố
tbl_cho bảng,rng_cho dải ô, ví dụtbl_KhachHang.
8.2 Ghi chú công thức
- Sử dụng Comment trong Excel (nhấp phải → Insert Comment) để giải thích mục đích công thức, đặc biệt là các công thức phức tạp.
- Đặt Header Row mô tả nguồn dữ liệu, ngày cập nhật.
8.3 Kiểm tra tính toàn vẹn dữ liệu
- Tạo Conditional Formatting để đánh dấu các ô trả về
#N/Ahoặc#REF!. - Sử dụng Data Validation để ngăn nhập dữ liệu sai định dạng (ví dụ: chỉ cho phép nhập mã khách hàng có định dạng
KH###).
8.4 Tự động hoá cập nhật
- Dùng Macro VBA để tự động Refresh All khi mở workbook:
vba Private Sub Workbook_Open() ThisWorkbook.RefreshAll End Sub - Hoặc thiết lập Connection Properties trong Power Query để tự động cập nhật mỗi lần mở file.
9. Kết luận
VLOOKUP là một công cụ không thể thiếu trong Excel, đặc biệt khi bạn cần kết nối dữ liệu giữa các sheet hoặc giữa các workbook. Bằng việc nắm vững cú pháp, cách tham chiếu sheet, cách xử lý lỗi và các kỹ thuật tối ưu hoá, bạn sẽ giảm thiểu thời gian xử lý và tăng độ chính xác trong công việc.
Tuy nhiên, khi dự án ngày một phức tạp, việc nâng cấp lên các hàm hiện đại như XLOOKUP, FILTER, hoặc sử dụng Power Query sẽ mang lại hiệu suất và tính linh hoạt cao hơn. Hãy luôn cân nhắc lựa chọn công cụ phù hợp với môi trường và yêu cầu công việc của bạn.
Tip cuối cùng: Đối với các bảng dữ liệu lớn hoặc thay đổi thường xuyên, hãy đầu tư thời gian xây dựng model dữ liệu trong Power Query hoặc Power Pivot. Điều này giúp bạn tránh việc lặp lại các công thức VLOOKUP và duy trì một nguồn dữ liệu được chuẩn hoá, dễ bảo trì và mở rộng.
Chúc bạn thành công trong việc khai thác sức mạnh của Excel VLOOKUP từ sheet này sang sheet khác!

Tiến sĩ Lê Thống Nhất sinh năm 1955 tại Nghệ An, là nhà giáo, nhà báo và doanh nhân trong lĩnh vực giáo dục. Ông từng giảng dạy Toán học tại Trường THPT Chuyên Phan Bội Châu và đảm nhiệm nhiều vai trò trong ngành giáo dục, từ viết sách, biên soạn tài liệu đến sáng lập các dự án hỗ trợ học tập trực tuyến.
Ông là người sáng lập BigSchool – nền tảng giáo dục trực tuyến kết nối giáo viên và học sinh cả nước. Ngoài ra, ông còn nổi tiếng với vai trò tác giả, diễn giả truyền cảm hứng và khách mời trên nhiều chương trình truyền hình, trong đó có “Ai là triệu phú” trên truyền hình VTV.
Trong suốt sự nghiệp, Tiến sĩ Lê Thống Nhất đã nhận nhiều giải thưởng giáo dục và được biết đến như một người luôn đổi mới, ứng dụng công nghệ vào dạy và học, góp phần lan tỏa tri thức và niềm say mê học tập cho thế hệ trẻ.
