Có thể bạn quan tâm: Cách Đánh Mét Vuông Trong Excel: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
Lời mở đầu
Trong thế giới công việc hiện đại, việc xử lý và phân tích dữ liệu nhanh chóng, chính xác là yếu tố then chốt để đưa ra quyết định chiến lược. Microsoft Excel, với hàng ngàn hàm và công cụ mạnh mẽ, đã trở thành “cây bút” không thể thiếu của mọi nhà phân tích, kế toán, nhân sự và cả những người làm việc trong lĩnh vực bán hàng. Trong số các hàm quan trọng, VLOOKUP và HLOOKUP (viết tắt của “Vertical Lookup” và “Horizontal Lookup”) là hai công cụ tìm kiếm dữ liệu cực kỳ phổ biến, giúp người dùng nhanh chóng tra cứu thông tin trong các bảng dữ liệu lớn.
Bài viết này sẽ cung cấp một hướng dẫn chi tiết, từ những khái niệm cơ bản, cách sử dụng, các lưu ý quan trọng, cho đến các kỹ thuật nâng cao và các giải pháp thay thế khi VLOOKUP/HLOOKUP không đáp ứng đủ nhu cầu. Bạn sẽ nắm vững cách áp dụng chúng trong thực tiễn và tránh những sai lầm thường gặp, từ đó nâng cao hiệu suất làm việc và độ chính xác của báo cáo.
Có thể bạn quan tâm: Viết Lũy Thừa Trong Excel: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
1. Tổng quan về VLOOKUP và HLOOKUP
1.1 VLOOKUP là gì?
VLOOKUP là hàm tìm kiếm dọc (vertical lookup) trong Excel, cho phép bạn tra cứu một giá trị trong cột đầu tiên của một bảng (range) và trả về giá trị tương ứng từ một cột khác trong cùng bảng. Cú pháp:
VLOOKUP(lookup_value, table_array, col_index_num, range_lookup)
- lookup_value: Giá trị cần tìm (có thể là số, văn bản, ngày tháng, hoặc tham chiếu ô).
- table_array: Vùng dữ liệu (bảng) chứa dữ liệu cần tra cứu, ví dụ
A2:D100. - col_index_num: Số thứ tự cột trong
table_arraychứa giá trị trả về (bắt đầu từ 1). - range_lookup (tùy chọn):
TRUE(mặc định) cho tìm kiếm gần đúng;FALSEcho tìm kiếm chính xác.
1.2 HLOOKUP là gì?
HLOOKUP là hàm tìm kiếm ngang (horizontal lookup). Thay vì tra cứu theo cột, HLOOKUP tra cứu theo hàng đầu tiên của một bảng và trả về giá trị ở một hàng khác trong cùng bảng. Cú pháp:
HLOOKUP(lookup_value, table_array, row_index_num, range_lookup)
- lookup_value: Giá trị cần tìm trong hàng đầu tiên.
- table_array: Vùng dữ liệu chứa dữ liệu cần tra cứu.
- row_index_num: Số thứ tự hàng trong
table_arraychứa giá trị trả về. - range_lookup: Tương tự VLOOKUP.
1.3 Khi nào dùng VLOOKUP vs HLOOKUP?
- VLOOKUP: Khi dữ liệu được sắp xếp theo cột (cột đầu tiên chứa khóa tìm kiếm). Thông thường, hầu hết các bảng dữ liệu trong Excel đều được thiết kế dạng “cột = thuộc tính, hàng = bản ghi”, vì vậy VLOOKUP được dùng phổ biến hơn.
- HLOOKUP: Khi dữ liệu được sắp xếp theo hàng (hàng đầu tiên chứa khóa). Thường gặp trong các bảng tổng hợp, biểu đồ, hoặc khi dữ liệu được nhập theo dạng “cột là thời gian, hàng là chỉ tiêu”.
Có thể bạn quan tâm: Cách Viết Chữ Trong 1 Ô Excel: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
2. Cách sử dụng VLOOKUP – Bước từng bước
2.1 Chuẩn bị dữ liệu
Giả sử bạn có bảng Sản phẩm (Sheet1) như sau:
| A (Mã SP) | B (Tên SP) | C (Giá) | D (Kho) |
|---|---|---|---|
| P001 | Bút bi | 2,500 | 150 |
| P002 | Vở kẻ | 5,000 | 80 |
| P003 | Sổ tay | 12,000 | 45 |
| P004 | Thước kẻ | 3,200 | 120 |
Bạn muốn trong Sheet2 nhập mã sản phẩm và tự động lấy Tên SP và Giá.
2.2 Công thức VLOOKUP cơ bản
Trong ô B2 (Tên SP) của Sheet2, nhập:
=VLOOKUP(A2, Sheet1!$A$2:$D$5, 2, FALSE)
Giải thích:
A2: Mã SP cần tra cứu.Sheet1!$A$2:$D$5: Vùng dữ liệu chứa các cột A‑D.2: Trả về giá trị ở cột thứ 2 (Tên SP).FALSE: Yêu cầu khớp chính xác.
Tương tự, trong ô C2 (Giá) nhập:
=VLOOKUP(A2, Sheet1!$A$2:$D$5, 3, FALSE)
2.3 Tìm kiếm gần đúng (range_lookup = TRUE)
Khi range_lookup được đặt là TRUE (hoặc bỏ qua), VLOOKUP sẽ trả về giá trị gần nhất không vượt quá lookup_value. Điều này yêu cầu cột khóa (cột đầu tiên của table_array) phải được sắp xếp tăng dần. Ví dụ, tra cứu mức thuế dựa trên mức thu nhập:
| Thu nhập (từ) | Thuế (%) |
|---|---|
| 0 | 5 |
| 10,000,000 | 10 |
| 20,000,000 | 15 |
| 35,000,000 | 20 |
Nếu thu nhập là 12,000,000, công thức:
=VLOOKUP(12000000, A2:B5, 2, TRUE)
sẽ trả về 10% (bảng thuế gần nhất không vượt quá 12,000,000).
2.4 Sử dụng ký tự đại diện (wildcards)
Khi range_lookup = FALSE, bạn có thể dùng ký tự đại diện (bất kỳ chuỗi nào) và ? (một ký tự) trong lookup_value. Ví dụ:
=VLOOKUP("P00", Sheet1!$A$2:$D$5, 2, FALSE)
sẽ trả về Tên SP của mã đầu tiên bắt đầu bằng “P00”. Lưu ý: hàm sẽ trả về giá trị đầu tiên khớp, vì vậy nếu có nhiều kết quả, chỉ một giá trị sẽ được trả về.
2.5 Xử lý lỗi #N/A
Nếu không tìm thấy giá trị, VLOOKUP trả về lỗi #N/A. Để làm cho bảng tính gọn gàng, bạn có thể dùng IFERROR hoặc IFNA:
=IFERROR(VLOOKUP(A2, Sheet1!$A$2:$D$5, 2, FALSE), "Không tồn tại")
Hoặc:
=IFNA(VLOOKUP(A2, Sheet1!$A$2:$D$5, 2, FALSE), "Không tồn tại")
IFERROR bắt mọi lỗi, trong khi IFNA chỉ bắt #N/A.
3. Cách sử dụng HLOOKUP – Bước từng bước
3.1 Ví dụ thực tế
Giả sử bảng Bảng lương (Sheet3) được sắp xếp ngang:
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Nhân viên | PV001 | PV002 | PV003 |
| 2 | Lương (VND) | 7,000,000 | 8,500,000 | 6,200,000 |
| 3 | Thưởng (%) | 10 | 12 | 8 |
Bạn muốn nhập mã nhân viên (PV002) và tự động lấy Lương và Thưởng.
3.2 Công thức HLOOKUP
Trong ô B2 (Lương) nhập:
=HLOOKUP(A2, Sheet3!$A$1:$D$3, 2, FALSE)
A2: Mã nhân viên.Sheet3!$A$1:$D$3: Vùng dữ liệu.2: Lấy giá trị từ hàng thứ 2 (Lương).FALSE: Khớp chính xác.
Tương tự, trong ô B3 (Thưởng) nhập:
=HLOOKUP(A2, Sheet3!$A$1:$D$3, 3, FALSE)
3.3 Khi sử dụng tìm kiếm gần đúng
Giống VLOOKUP, nếu range_lookup = TRUE, HLOOKUP sẽ trả về giá trị gần nhất không vượt quá lookup_value. Tuy nhiên, trong thực tế, HLOOKUP gần đúng ít được dùng vì dữ liệu thường không sắp xếp theo hàng.
4. Những hạn chế của VLOOKUP và HLOOKUP
Mặc dù VLOOKUP và HLOOKUP rất tiện dụng, chúng có một số nhược điểm quan trọng mà người dùng cần nhận thức:
- Giới hạn vị trí cột/hàng khóa
- VLOOKUP chỉ có thể tra cứu dựa trên cột đầu tiên của
table_array. Nếu khóa không nằm ở cột đầu, bạn phải sắp xếp lại bảng hoặc dùng hàm khác (INDEX/MATCH). Tương tự, HLOOKUP chỉ tra cứu dựa trên hàng đầu tiên.
Không hỗ trợ tra cứu từ phải sang trái
VLOOKUP không thể trả về giá trị nằm trước cột khóa. Điều này gây bất tiện khi bạn muốn lấy thông tin từ các cột phía bên trái.

Vlookup And Hlookup In Excel Có thể bạn quan tâm: Viết Phần Mềm Trên Excel: Hướng Dẫn Toàn Diện Từ Cơ Bản Đến Nâng Cao
Hiệu suất khi dữ liệu lớn
Khi
table_arraycó hàng ngàn hoặc hàng chục ngàn dòng, VLOOKUP/HLOOKUP có thể làm chậm file, đặc biệt khi sử dụng nhiều công thức lặp.Không hỗ trợ đa tiêu chí
VLOOKUP/HLOOKUP chỉ cho phép một tiêu chí tra cứu. Khi cần tra cứu dựa trên nhiều trường (ví dụ: “Mã khách + Năm”), bạn phải kết hợp các hàm hoặc tạo cột phụ.
Không trả về mảng (array)
- VLOOKUP/HLOOKUP chỉ trả về một giá trị duy nhất. Đối với các trường hợp muốn trả về nhiều giá trị (ví dụ: toàn bộ hàng), bạn cần dùng các hàm khác hoặc công cụ Power Query.
5. Kỹ thuật nâng cao với VLOOKUP và HLOOKUP
5.1 Kết hợp INDEX + MATCH – Giải pháp thay thế mạnh mẽ
INDEX và MATCH là cặp hàm thường được dùng thay cho VLOOKUP/HLOOKUP vì chúng không bị giới hạn vị trí cột/hàng và có hiệu suất tốt hơn.
Cú pháp:
=INDEX(return_range, MATCH(lookup_value, lookup_range, 0))
return_range: Vùng chứa giá trị cần trả về.lookup_range: Vùng chứa khóa tìm kiếm.0trong MATCH: Tìm khớp chính xác.
Ví dụ: Lấy “Giá” của mã sản phẩm trong bảng trước:
=INDEX(Sheet1!$C$2:$C$5, MATCH(A2, Sheet1!$A$2:$A$5, 0))
5.2 Tra cứu đa tiêu chí bằng CONCATENATE
Bạn có thể tạo một cột khóa hợp nhất trong bảng dữ liệu, ví dụ: =A2&B2 (Mã + Năm), sau đó dùng VLOOKUP hoặc INDEX/MATCH với giá trị hợp nhất này.
Bước:
- Thêm cột “Key” trong Sheet1:
=A2 & "_" & B2. - Trong Sheet2, tạo key tương tự và tra cứu.
5.3 Tìm kiếm với wildcards và ISNUMBER
Khi bạn muốn tìm các giá trị chứa một chuỗi nhất định, có thể dùng:
=VLOOKUP(""&lookup_text&"", table_array, col_index, FALSE)
Nhưng VLOOKUP không hỗ trợ wildcard trong chế độ TRUE. Thay vào đó, dùng ARRAY FORMULA (Ctrl+Shift+Enter) kết hợp INDEX/MATCH và SEARCH:
=INDEX(return_range, MATCH(TRUE, ISNUMBER(SEARCH(lookup_text, lookup_range)), 0))
5.4 Sử dụng XLOOKUP (Excel 365/2026)
Microsoft đã giới thiệu hàm XLOOKUP để khắc phục mọi hạn chế của VLOOKUP/HLOOKUP. Cú pháp:
=XLOOKUP(lookup_value, lookup_array, return_array, if_not_found, match_mode, search_mode)
- Không còn giới hạn cột/hàng.
- Hỗ trợ tìm kiếm từ phải sang trái.
- Hỗ trợ trả về mảng.
- Tùy chọn
match_modecho chính xác, gần đúng, wildcard.
Nếu bạn đang dùng phiên bản Excel mới, hãy ưu tiên XLOOKUP. Tuy nhiên, VLOOKUP/HLOOKUP vẫn phổ biến vì tính tương thích ngược.
5.5 Sử dụng CHOOSE để “bật” nhiều cột trong VLOOKUP
Khi muốn tra cứu một trong nhiều cột tùy thuộc vào một điều kiện, bạn có thể dùng hàm CHOOSE để tạo một mảng ảo:
=VLOOKUP(A2, CHOOSE({1,2,3}, Sheet1!$A$2:$A$5, Sheet1!$C$2:$C$5, Sheet1!$D$2:$D$5), 2, FALSE)
Trong đó, {1,2,3} xác định thứ tự các cột trong mảng ảo. Đây là kỹ thuật ít người biết nhưng rất hữu ích.
6. Thực hành: Xây dựng bảng báo cáo tự động
6.1 Kịch bản thực tế
Bạn là nhân viên kế toán, cần tạo bảng tổng hợp doanh thu cho 5 chi nhánh dựa trên dữ liệu bán hàng hàng ngày. Dữ liệu gốc (Sheet “Bán hàng”) có cấu trúc:
| Ngày | Chi nhánh | Mã SP | Số lượng | Đơn giá |
|---|---|---|---|---|
| 01/01/2026 | Hà Nội | P001 | 20 | 2,500 |
| 01/01/2026 | HCM | P002 | 15 | 5,000 |
| … | … | … | … | … |
Bạn muốn trong Sheet “Báo cáo” có bảng:
| Chi nhánh | Doanh thu (VND) |
|---|---|
| Hà Nội | =? |
| HCM | =? |
| Đà Nẵng | =? |
| … | … |
6.2 Sử dụng SUMIFS + VLOOKUP
Đầu tiên, tính doanh thu cho mỗi chi nhánh bằng công thức:
=SUMIFS('Bán hàng'!$E$2:$E$1000, 'Bán hàng'!$B$2:$B$1000, A2, 'Bán hàng'!$D$2:$D$1000, "<>")
Trong đó:
$E$là cột “Đơn giá”Số lượng. Để tính tổng doanh thu, bạn cần tạo một cột “Thành tiền” trong Sheet “Bán hàng” (=D2E2) và sau đó dùng SUMIFS.
Hoặc dùng công thức mảng (Excel 365) để tính trực tiếp:
=SUMPRODUCT(('Bán hàng'!$B$2:$B$1000=A2) ('Bán hàng'!$D$2:$D$1000) ('Bán hàng'!$E$2:$E$1000))
6.3 Kết hợp VLOOKUP để lấy tên chi nhánh chuẩn
Giả sử trong bảng “Chi nhánh” (Sheet “Chi nhánh”) bạn có mã chi nhánh và tên đầy đủ. Khi nhập mã, dùng VLOOKUP để hiện tên:
=VLOOKUP(B2, 'Chi nhánh'!$A$2:$B$20, 2, FALSE)
6.4 Định dạng và báo cáo
- Định dạng cột doanh thu thành Tiền tệ (VND) với dấu phẩy.
- Thêm Conditional Formatting để tô màu các chi nhánh có doanh thu > 1 tỷ.
- Tạo PivotTable để phân tích chi tiết hơn (theo tháng, sản phẩm).
7. Các lỗi thường gặp và cách khắc phục
| Lỗi | Nguyên nhân | Cách khắc phục |
|---|---|---|
#N/A | Không tìm thấy giá trị hoặc sai cột khóa. | Kiểm tra giá trị lookup, dùng IFERROR. |
#REF! | col_index_num vượt quá số cột trong table_array. | Đảm bảo col_index_num không lớn hơn cột cuối. |
#VALUE! | col_index_num không phải số nguyên hoặc range_lookup không hợp lệ. | Kiểm tra công thức, chuyển đổi sang số. |
Kết quả sai khi dùng TRUE | Cột khóa không được sắp xếp tăng dần. | Sắp xếp cột hoặc dùng FALSE. |
| Tra cứu chậm | Dữ liệu quá lớn, nhiều công thức lặp. | Sử dụng INDEX/MATCH, giảm phạm vi, hoặc chuyển sang Power Query. |
| Không trả về giá trị khi có nhiều khớp | VLOOKUP chỉ trả về khớp đầu tiên. | Xây dựng cột khóa duy nhất (concatenate) hoặc dùng FILTER (Excel 365). |
8. Khi nào nên bỏ VLOOKUP/HLOOKUP và chuyển sang công cụ khác
- Dữ liệu siêu lớn (>100,000 dòng): Sử dụng Power Query hoặc Power Pivot để thực hiện join (kết nối) thay vì công thức.
- Cần tra cứu đa tiêu chí: Dùng INDEX/MATCH kết hợp với ARRAY FORMULA hoặc XLOOKUP với
XMATCH. - Yêu cầu trả về nhiều giá trị: Dùng FILTER hoặc UNIQUE (Excel 365) để trả về mảng.
- Báo cáo động, cần nâng cấp: Xây dựng mô hình dữ liệu trong Power BI.
9. Tổng kết
- VLOOKUP và HLOOKUP là những hàm cơ bản nhưng cực kỳ hữu dụng trong việc tra cứu dữ liệu dọc và ngang.
- Hiểu rõ cú pháp, các tham số, và cách xử lý lỗi là nền tảng để sử dụng chúng hiệu quả.
- Các kỹ thuật nâng cao như kết hợp INDEX/MATCH, wildcards, CHOOSE, và XLOOKUP giúp vượt qua những hạn chế của VLOOKUP/HLOOKUP.
- Khi dữ liệu phức tạp, lớn hoặc cần đa tiêu chí, hãy cân nhắc chuyển sang Power Query, Power Pivot, hoặc XLOOKUP để tối ưu hiệu suất và tính linh hoạt.
Hy vọng bài viết đã cung cấp cho bạn một cẩm nang toàn diện về VLOOKUP và HLOOKUP, giúp bạn tự tin áp dụng trong công việc hằng ngày và nâng cao chất lượng báo cáo. Chúc bạn thành công!

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