Vlookup Và Hlookup Trong Excel: Hướng Dẫn Toàn Diện 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.

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_array chứ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; FALSE cho 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_array chứ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”.

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)
P001Bút bi2,500150
P002Vở kẻ5,00080
P003Sổ tay12,00045
P004Thước kẻ3,200120

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ế (%)
05
10,000,00010
20,000,00015
35,000,00020

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:

ABCD
1Nhân viênPV001PV002PV003
2Lương (VND)7,000,0008,500,0006,200,000
3Thưởng (%)10128

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:

  1. Giới hạn vị trí cột/hàng khóa
  2. 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).
  3. Tương tự, HLOOKUP chỉ tra cứu dựa trên hàng đầu tiên.

  4. Không hỗ trợ tra cứu từ phải sang trái

  5. 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
    Vlookup And Hlookup In Excel
  6. Hiệu suất khi dữ liệu lớn

  7. Khi table_array có 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.

  8. Không hỗ trợ đa tiêu chí

  9. 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ụ.

  10. Không trả về mảng (array)

  11. 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.
  • 0 trong 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:

  1. Thêm cột “Key” trong Sheet1: =A2 & "_" & B2.
  2. 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_mode cho 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àyChi nhánhMã SPSố lượngĐơn giá
01/01/2026Hà NộiP001202,500
01/01/2026HCMP002155,000
……………

Bạn muốn trong Sheet “Báo cáo” có bảng:

Chi nhánhDoanh 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ỗiNguyên nhânCách khắc phục
#N/AKhô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 TRUECộ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ậmDữ 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ớpVLOOKUP 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

  1. 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.
  2. 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.
  3. Yêu cầu trả về nhiều giá trị: Dùng FILTER hoặc UNIQUE (Excel 365) để trả về mảng.
  4. 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!

⚠️
LƯU Ý QUAN TRỌNG: Miễn trừ trách nhiệm: Mặc dù chúng tôi luôn nỗ lực để đảm bảo tính chính xác và cập nhật của thông tin, nhưng các quy định về giáo dục và tuyển sinh có thể thay đổi theo thời gian. BigSchool không chịu trách nhiệm về bất kỳ sai sót nào hoặc kết quả phát sinh từ việc sử dụng thông tin trên trang này. Độc giả nên liên hệ trực tiếp với nhà trường hoặc cơ quan chức năng để có thông tin mới nhất. Ngoài ra, BigSchool tuyệt đối không bán sản phẩm, khóa học hay cung cấp dịch vụ được nhắc đến trong bài.

Viết một bình luận