Hướng dẫn

Google Sheets Cơ Bản Bài 4: VLOOKUP, HLOOKUP Và INDEX-MATCH — Tra Cứu Dữ Liệu Nhanh

Tuân HoangTuân Hoang
6 tháng 10, 2026
8 phút đọc
Google Sheets Cơ Bản Bài 4: VLOOKUP, HLOOKUP Và INDEX-MATCH — Tra Cứu Dữ Liệu Nhanh

📚 Series: Google Sheets Cơ Bản

Bài 4: VLOOKUP, HLOOKUP Và INDEX-MATCH — Tra Cứu Dữ Liệu Nhanh

Làm chủ 3 hàm tra cứu quan trọng nhất trong Google Sheets. Hiểu rõ khi nào dùng VLOOKUP, khi nào INDEX-MATCH mạnh hơn, và cách fix lỗi #N/A phổ biến nhất.

1. Tra Cứu Dữ Liệu Là Gì Và Khi Nào Cần?

Hãy tưởng tượng bạn có 2 bảng dữ liệu:

  • Bảng A: Danh sách đơn hàng — có mã sản phẩm nhưng không có tên sản phẩm
  • Bảng B: Danh mục sản phẩm — có mã sản phẩm và tên đầy đủ

Bạn muốn tự động điền tên sản phẩm từ Bảng B vào Bảng A dựa trên mã. Đây chính là tra cứu dữ liệu — và VLOOKUP/INDEX-MATCH là công cụ làm điều đó.

Khi nào cần dùng hàm tra cứu?

  • ✓ Điền tên khách hàng vào đơn hàng từ danh sách khách hàng
  • ✓ Lấy giá sản phẩm từ bảng giá vào hóa đơn
  • ✓ Tìm thông tin nhân viên từ mã nhân viên
  • ✓ Xếp loại học sinh dựa trên điểm số
  • ✓ Kết nối 2 sheet dữ liệu khác nhau

2. VLOOKUP Từng Bước Với Ví Dụ Thực Tế

Cú Pháp VLOOKUP

=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])

  lookup_value  : Giá trị cần tìm (ô tham chiếu hoặc text)
  table_array   : Vùng dữ liệu bảng tra cứu
  col_index_num : Số thứ tự cột cần lấy dữ liệu
  range_lookup  : FALSE = tìm chính xác, TRUE = tìm gần đúng

Ví Dụ: Lấy Giá Sản Phẩm Từ Bảng Giá

Giả sử có bảng đơn hàng (Sheet1) và bảng giá (Sheet2):

Sheet2: Bảng Giá Cột A Cột B Cột C
Hàng 1 (tiêu đề)Mã SPTên SPGiá
Hàng 2SP001Phần mềm A699,000
Hàng 3SP002Phần mềm B1,299,000

Ở Sheet1, ô D2 muốn lấy giá của mã SP trong ô A2:

=VLOOKUP(A2, Sheet2!$A:$C, 3, FALSE)

  A2           → Mã sản phẩm cần tìm
  Sheet2!$A:$C → Vùng bảng giá (dùng $ để cố định khi kéo công thức)
  3            → Lấy dữ liệu cột thứ 3 (cột Giá)
  FALSE        → Tìm chính xác (luôn dùng FALSE trừ khi tra bảng xếp hạng)

Mẹo quan trọng khi dùng VLOOKUP:

  • ✓ Cột tra cứu phải là cột đầu tiên trong table_array
  • ✓ Luôn dùng $ để cố định vùng bảng tra cứu (VD: $A$2:$C$100)
  • ✓ Dùng FALSE cho tìm kiếm chính xác trong hầu hết trường hợp
  • ✓ VLOOKUP chỉ tra cứu từ trái sang phải

Ví Dụ 2: Xếp Loại Học Sinh (range_lookup = TRUE)

Bảng xếp loại (đã sắp xếp tăng dần):
  Điểm | Xếp loại
  0    | Yếu
  5    | Trung Bình
  6.5  | Khá
  8    | Giỏi
  9    | Xuất Sắc

  Công thức tại cột Xếp Loại:
  =VLOOKUP(B2, $E$2:$F$6, 2, TRUE)
  ← TRUE: tìm gần đúng (phù hợp cho bảng phân cấp)

3. HLOOKUP Và Khi Nào Dùng Thay VLOOKUP

HLOOKUP (Horizontal Lookup) tra cứu theo hàng ngang thay vì cột dọc như VLOOKUP.

=HLOOKUP(lookup_value, table_array, row_index_num, [range_lookup])

  row_index_num : Số thứ tự hàng cần lấy dữ liệu (thay vì cột)

Dùng VLOOKUP khi:

  • ✓ Dữ liệu tra cứu xếp theo cột (phổ biến nhất)
  • ✓ VD: Danh sách sản phẩm theo hàng, mỗi cột là thuộc tính
  • ✓ Bảng có nhiều hàng, ít cột

Dùng HLOOKUP khi:

  • ✓ Dữ liệu tra cứu xếp theo hàng (ít phổ biến hơn)
  • ✓ VD: Bảng tỷ lệ thưởng theo quý ngang
  • ✓ Bảng có ít hàng, nhiều cột

4. INDEX-MATCH: Mạnh Hơn VLOOKUP Ở Điểm Nào?

INDEX-MATCH là sự kết hợp của 2 hàm, nhưng mạnh hơn VLOOKUP đáng kể:

INDEX(array, row_num, [col_num])
  → Trả về giá trị tại vị trí hàng/cột trong mảng

  MATCH(lookup_value, lookup_array, [match_type])
  → Trả về VỊ TRÍ (số) của giá trị trong mảng

  Kết hợp:
  =INDEX(C:C, MATCH(A2, A:A, 0))
  → "Tìm A2 trong cột A, lấy giá trị tương ứng từ cột C"

So Sánh VLOOKUP vs INDEX-MATCH

Tiêu Chí VLOOKUP INDEX-MATCH
Tra cứu từ phải sang trái✗ Không được✓ Được
Thêm/xóa cột giữa✗ Công thức bị sai✓ Tự điều chỉnh
Tốc độ với dữ liệu lớnChậm hơnNhanh hơn
Dễ học✓ Đơn giản hơnCần hiểu 2 hàm
Tra cứu 2 chiều✗ Không trực tiếp✓ Dễ dàng

Ví Dụ INDEX-MATCH: Tra Cứu Từ Phải Sang Trái

Bảng: A=Tên SP | B=Danh mục | C=Mã SP | D=Giá
Tình huống: Biết Mã SP (cột C), muốn lấy Tên SP (cột A)
← VLOOKUP không làm được vì cột A ở BÊN TRÁI cột C

Giải pháp INDEX-MATCH:
=INDEX(A:A, MATCH(F2, C:C, 0))

F2    → Mã SP cần tra cứu
C:C   → Tìm mã trong cột C
0     → Tìm chính xác (tương đương FALSE trong VLOOKUP)
A:A   → Lấy giá trị từ cột A (Tên SP)

INDEX-MATCH Tra Cứu 2 Chiều (Nâng Cao)

Bảng doanh thu theo nhân viên và tháng:
      | T1   | T2   | T3
NV1   | 50M  | 60M  | 55M
NV2   | 45M  | 70M  | 80M

Lấy doanh thu của NV2 tháng T2:
=INDEX(B2:D3, MATCH("NV2", A2:A3, 0), MATCH("T2", B1:D1, 0))
→ Kết quả: 70M

5. Bài Tập Thực Hành

Bài tập 1: Lookup Giá Sản Phẩm

Tạo bảng đơn hàng tự động điền giá:

  1. Tạo Sheet "GiaSP" với cột: Mã SP, Tên SP, Đơn giá (10 sản phẩm bất kỳ)
  2. Tạo Sheet "DonHang" với cột: STT, Mã SP, Số lượng, Đơn giá, Thành tiền
  3. Dùng VLOOKUP điền Đơn giá từ Sheet GiaSP vào cột D của DonHang
  4. Tính Thành tiền = Số lượng × Đơn giá
Gợi ý: =VLOOKUP(B2, GiaSP!$A:$C, 3, FALSE)

Bài tập 2: Lookup Tên Khách Hàng Từ Mã

Thực hành INDEX-MATCH với tra cứu 2 chiều:

  1. Tạo Sheet "KhachHang" với cột: Mã KH, Họ Tên, SĐT, Email
  2. Tạo Sheet "HoaDon" với cột: Số HĐ, Mã KH, Tên KH (tự động), SĐT (tự động), Ngày
  3. Dùng INDEX-MATCH điền Tên KH và SĐT tự động khi nhập Mã KH
Gợi ý tên KH: =INDEX(KhachHang!B:B, MATCH(B2, KhachHang!A:A, 0))

6. Lỗi #N/A, #REF Và Cách Fix

Lỗi #N/A — Không Tìm Thấy Giá Trị

Nguyên nhân: Giá trị tra cứu không tồn tại trong bảng, hoặc định dạng không khớp (text vs number)

Cách fix 1: Dùng IFERROR để hiển thị thân thiện hơn
=IFERROR(VLOOKUP(A2, Sheet2!$A:$C, 3, FALSE), "Không tìm thấy")

Cách fix 2: Kiểm tra định dạng (đây là lỗi phổ biến nhất!)
=VLOOKUP(TEXT(A2,"0"), Sheet2!$A:$C, 3, FALSE)  ← Khi bảng gốc là text
=VLOOKUP(VALUE(A2), Sheet2!$A:$C, 3, FALSE)     ← Khi bảng gốc là số

Lỗi #REF — Tham Chiếu Sai

Nguyên nhân: col_index_num lớn hơn số cột trong table_array, hoặc đã xóa cột được tham chiếu

Ví dụ lỗi:
=VLOOKUP(A2, B:C, 5, FALSE)  ← table_array chỉ có 2 cột nhưng gọi cột thứ 5

Cách fix: Đảm bảo col_index_num ≤ số cột trong vùng chọn
=VLOOKUP(A2, B:F, 5, FALSE)  ← Mở rộng vùng hoặc giảm col_index

Lỗi Do Khoảng Trắng Thừa

Nguyên nhân: Dữ liệu có dấu cách trước/sau (rất phổ biến khi copy paste)

Cách fix: Dùng TRIM để loại khoảng trắng thừa
=VLOOKUP(TRIM(A2), Sheet2!$A:$C, 3, FALSE)

Hoặc dọn sạch toàn bộ cột nguồn:
=TRIM(A2)  ← Tạo cột tạm, sau đó paste values đè lên cột gốc

Checklist debug khi VLOOKUP báo #N/A:

  1. Kiểm tra giá trị tìm kiếm có thực sự tồn tại trong bảng không?
  2. Kiểm tra định dạng: cả hai có cùng kiểu (text/number) không?
  3. Kiểm tra khoảng trắng thừa bằng hàm TRIM
  4. Kiểm tra chữ hoa/thường (VLOOKUP không phân biệt, nhưng nên đồng nhất)
  5. Kiểm tra cột đầu tiên trong table_array có phải cột tra cứu không

7. Quiz 5 Câu — Kiểm Tra Hiểu Biết

Câu 1: VLOOKUP(A2, B2:D10, 4, FALSE) — lỗi gì sẽ xảy ra?

  • A. #N/A — không tìm thấy
  • B. #REF! — vì table_array chỉ có 3 cột (B, C, D) nhưng yêu cầu cột thứ 4 ✓
  • C. #VALUE! — giá trị sai
  • D. Không lỗi

Câu 2: Muốn tra cứu từ phải sang trái, nên dùng hàm nào?

  • A. VLOOKUP với số âm
  • B. INDEX-MATCH ✓
  • C. HLOOKUP
  • D. Không thể làm được

Câu 3: Trong MATCH(value, array, 0) — số 0 nghĩa là gì?

  • A. Tìm giá trị bằng 0
  • B. Tìm giá trị nhỏ nhất
  • C. Tìm chính xác (exact match) ✓
  • D. Trả về 0 nếu không tìm thấy

Câu 4: IFERROR(VLOOKUP(...), "N/A") — điều này làm gì?

  • A. Nếu VLOOKUP lỗi, hiển thị "N/A" thay vì lỗi đỏ ✓
  • B. Bỏ qua VLOOKUP nếu có lỗi
  • C. Luôn trả về "N/A"
  • D. Lỗi cú pháp

Câu 5: VLOOKUP range_lookup=TRUE phù hợp cho tình huống nào?

  • A. Tìm tên khách hàng từ mã
  • B. Xếp loại học sinh theo thang điểm ✓
  • C. Lấy giá sản phẩm từ mã SP
  • D. Tìm tên nhân viên từ mã NV

8. Bài Tiếp Theo Trong Series

Bài 5: Tạo Biểu Đồ Chuyên Nghiệp

Bar chart, line chart, pie chart, combo chart — từ dữ liệu thô đến báo cáo trực quan đẹp mắt. Học tips thiết kế biểu đồ chuyên nghiệp mà người xem hiểu ngay.

Học Bài 5 Ngay →

Áp Dụng VLOOKUP Vào Quản Lý Kinh Doanh

SheetStore cung cấp templates có sẵn VLOOKUP/INDEX-MATCH cho quản lý bán hàng, kho hàng, nhân sự — chỉ cần nhập dữ liệu là dùng ngay.

Chia sẻ bài viết:

Tuân Hoang

Tuân Hoang

Đội ngũ SheetStore

Bạn thấy bài viết hữu ích?

Đăng ký nhận thông báo khi có bài viết mới.

Nhận thông báo khi có bài viết mới. Không spam, hứa luôn! 😊

Bình luận (0)

Vui lòng đăng nhập để tham gia thảo luận