Courses
VLOOKUP() là một hàm trong Google Sheets dùng để tìm một giá trị trong một cột và trả về giá trị tương ứng từ cột khác trên cùng một hàng. Bạn đưa cho nó thứ cần tìm, chỉ cho nó nơi tìm, và nó trả về dữ liệu bạn cần.
Hàm này hữu ích nhất khi bạn làm việc với các tập dữ liệu lớn, nơi việc tìm kiếm và đối sánh thủ công sẽ mất quá nhiều thời gian. Nhưng bất cứ khi nào bạn cần kết nối hai bảng dữ liệu bằng một giá trị chung, VLOOKUP() là hàm nên dùng.
Trong hướng dẫn này, bạn sẽ học cú pháp, cách dùng từng bước, nguyên nhân dẫn đến kết quả sai và khi nào nên chọn các hàm thay thế như INDEX MATCH() hoặc XLOOKUP().
Cú pháp của VLOOKUP() trong Google Sheets là gì?
Cú pháp của VLOOKUP() là:
=VLOOKUP(search_key, range, index, [is_sorted])
Trong đó:
-
search_keylà giá trị bạn muốn tìm -
rangelà bảng nơi thực hiện tìm kiếm -
indexlà số thứ tự cột để trả về kết quả -
[is_sorted]xác định bạn có muốn đối sánh chính xác hay không
Cách thực hiện VLOOKUP() trong Google Sheets?
Để thực hiện VLOOKUP() trong Google Sheets:
-
Xác định giá trị bạn muốn tra cứu: Có thể là ID, tên hoặc bất kỳ giá trị duy nhất nào.
-
Xác định phạm vi bảng: Đảm bảo cột chứa giá trị tra cứu của bạn là cột đầu tiên trong phạm vi đó.
-
Chọn dữ liệu bạn muốn trả về: Đây là cột chứa kết quả (ví dụ: tên, giá, trạng thái).
-
Nhập công thức
VLOOKUP()vào một ô mới: Tham chiếu đến giá trị tra cứu, phạm vi bảng và cột bạn muốn trả về. -
Dùng đối sánh chính xác hoặc xấp xỉ (
FALSEhoặcTRUE): Phần lớn trường hợp, bạn nên dùng đối sánh chính xác để tránh kết quả sai (sẽ nói thêm ở phần sau).
Nếu bạn có bảng sau:
|
A (ID) |
B (Tên) |
|
101 |
George |
|
102 |
Sarah |
|
103 |
Lily |
Và bạn muốn tìm tên cho ID 102, hãy dùng:
=VLOOKUP(102, A2:B4, 2, FALSE)
Công thức này yêu cầu Google Sheets:
- Tìm 102 trong cột A
- Trả về giá trị từ cột B
- Cho đối sánh chính xác
Kết quả bạn sẽ nhận được là Sarah.

Ví dụ VLOOKUP(). Hình: Tác giả.
Cách VLOOKUP() hoạt động (logic từng bước)
VLOOKUP() tuân theo quy trình tìm kiếm dọc đơn giản. Nó luôn bắt đầu ở cột đầu tiên của phạm vi bạn chọn, sau đó quét xuống từng hàng cho đến khi tìm thấy kết quả khớp đầu tiên.
Khi đã tìm thấy kết quả khớp đó, nó vẫn ở cùng hàng. Sau đó di chuyển ngang sang cột bạn chỉ định và trả về giá trị.
Cách hoạt động từng bước:
- Bắt đầu ở cột đầu tiên của phạm vi
- Tìm kiếm xuống theo cột
- Tìm giá trị khớp đầu tiên
- Di chuyển ngang trên cùng hàng
- Trả về dữ liệu từ cột đã chỉ định
Giả sử bạn muốn tìm chức danh công việc cho Mã nhân viên E1007. Hãy dùng công thức sau:
=VLOOKUP("E1007", A:G, 5, FALSE)

VLOOKUP() trong Google Sheets. Hình: Tác giả.
Công thức này:
-
Tìm
E1007ở cột A -
Di chuyển ngang trên cùng hàng đó
-
Trả về cột 5 (Chức danh công việc)
-
Cho kết quả Software Engineer.
Lưu ý: VLOOKUP() chỉ có thể tìm kiếm từ trái sang phải. Nếu cột tra cứu của bạn không phải là cột đầu tiên trong phạm vi, hàm sẽ không hoạt động. Khi đó, bạn phải sắp xếp lại dữ liệu hoặc dùng hàm khác. Ta sẽ nói đến sau.
Đối sánh chính xác vs đối sánh xấp xỉ trong VLOOKUP()
Đối sánh chính xác chỉ trả về kết quả khi giá trị giống hệt. Đối sánh xấp xỉ trả về giá trị gần nhất khi không tìm thấy kết quả chính xác, thường dựa trên dữ liệu đã được sắp xếp.
Trong VLOOKUP(), điều này được điều khiển bởi tham số cuối cùng. Tham số cuối cùng, FALSE hoặc TRUE, là chỗ nhiều người nhầm vì TRUE trông vô hại nhưng thực ra không phải.
- FALSE nghĩa là chỉ đối sánh chính xác. Nếu không có giá trị, bạn nhận #N/A, điều này thực ra hữu ích.
- TRUE trả về giá trị nhỏ hơn gần nhất khi không có đối sánh chính xác, nghe như dự phòng nhưng chính xác hơn là một câu trả lời sai một cách lặng lẽ. Nó cũng giả định dữ liệu của bạn đã sắp xếp. Nếu không, kết quả là không xác định.
Tôi khuyên chỉ dùng TRUE cho các tra cứu theo bậc, như khung thuế hoặc thang điểm, nơi hành vi xấp xỉ là đúng theo thiết kế. Còn lại, hãy dùng FALSE.
Đối sánh chính xác (FALSE)
Điều này bảo VLOOKUP() “Chỉ trả về kết quả nếu tìm thấy đúng giá trị này.” Ví dụ, công thức =VLOOKUP("E1005", A:G, 7, FALSE) tìm E1005, trả về lương từ cột 7 và cho kết quả 90000.
Nếu giá trị không tồn tại, bạn sẽ nhận lỗi #N/A.

Đối sánh chính xác trong VLOOKUP(). Hình: Tác giả.
Đối sánh xấp xỉ (TRUE)
Điều này bảo VLOOKUP(): “Nếu không tìm thấy đối sánh chính xác, hãy trả về giá trị gần nhất nhỏ hơn.” Nghe có vẻ hữu ích — đôi khi đúng, nhưng đôi khi nó âm thầm cho bạn câu trả lời sai.
Ví dụ, E1011 không tồn tại trong tập dữ liệu. Mã nhân viên cuối cùng là E1010. Vậy nếu bạn dùng công thức =VLOOKUP("E1011", A:G, 7, TRUE), VLOOKUP() sẽ không trả về lỗi. Thay vào đó, nó trả về giá trị cho kết quả nhỏ hơn gần nhất, tức E1010. Ô sẽ hiển thị 88000.
Vì vậy dù E1011 bị thiếu, VLOOKUP() vẫn cho kết quả vì TRUE cho phép đối sánh xấp xỉ.

Đối sánh xấp xỉ trong VLOOKUP(). Hình: Tác giả.
Giờ hãy tưởng tượng cùng dữ liệu đó bị xáo trật tự, và tôi nhập mã nhân viên hiện có vào công thức như sau: =VLOOKUP("E1011", A:G, 7, TRUE).
Lần này, công thức trả về mức lương không đúng vì cột tra cứu không được sắp xếp, trong khi đối sánh xấp xỉ phụ thuộc vào dữ liệu đã sắp xếp.

Đối sánh xấp xỉ của VLOOKUP() gây lỗi do danh sách chưa sắp xếp. Hình: Tác giả.
Lỗi thường gặp trong VLOOKUP() và cách khắc phục
Hãy xem một số vấn đề phổ biến bạn có thể gặp với VLOOKUP() và cách giải quyết:
Lỗi #N/A
Lỗi #N/A nghĩa là VLOOKUP() không tìm thấy giá trị bạn yêu cầu.
Giả sử bạn có công thức: =VLOOKUP("E9999", A:G, 7, FALSE)
Nếu E9999 không có ở cột đầu tiên của phạm vi, công thức trả về #N/A.
Điều này cũng có thể xảy ra nếu giá trị được nhập khác đi trong trang tính, chẳng hạn có khoảng trắng thừa hoặc vấn đề định dạng văn bản.
Cách khắc phục:
-
Đảm bảo giá trị tồn tại ở cột đầu tiên của phạm vi
-
Dùng tham chiếu ô đúng thay vì gõ tay giá trị khi có thể
-
Thêm dấu ngoặc kép nếu bạn mã hoá cứng một giá trị văn bản
-
Loại bỏ khoảng trắng ở đầu hoặc cuối dữ liệu
-
Chỉ dùng
FALSEkhi bạn cần đối sánh chính xác
Sai chỉ số cột
Chỉ số cột cho VLOOKUP() biết cột nào để trả về trong phạm vi đã chọn. Nếu số chỉ mục quá lớn, công thức trả về #REF!.
Công thức =VLOOKUP("E1005", A:G, 8, FALSE) trả về #REF! vì phạm vi A:G chỉ có 7 cột.

Sai chỉ số cột gây lỗi. Hình: Tác giả.
Bạn cũng có thể nhận kết quả sai nếu số cột hợp lệ nhưng trỏ đến cột không đúng.
Ví dụ:
=VLOOKUP("E1005", A:G, 5, FALSE)
Công thức này trả về chức danh công việc, không phải mức lương.
Cách khắc phục:
- Đếm cột từ cột đầu tiên của phạm vi đã chọn
- Kiểm tra số cột khớp với giá trị bạn muốn trả về
- Đảm bảo cột đó tồn tại trong phạm vi
Vấn đề với đối sánh xấp xỉ
Nếu bạn dùng TRUE, VLOOKUP() sẽ tìm kết quả khớp gần nhất nhỏ hơn thay vì yêu cầu khớp chính xác.
Nếu bạn nhập =VLOOKUP("E1011", A:G, 7, TRUE) và không có E1011 trong tập dữ liệu, thay vì trả về lỗi, công thức trả về 88000, thuộc về E1010.
Kết quả đó có thể trông đúng, nhưng không phải đối sánh chính xác.
Cách khắc phục:
-
Dùng
FALSEkhi bạn cần kết quả chính xác -
Chỉ dùng
TRUEkhi dữ liệu đã sắp xếp và chấp nhận kết quả xấp xỉ
Vấn đề về phạm vi
VLOOKUP() cũng có thể ngừng hoạt động khi phạm vi đã chọn không khớp với những gì công thức đang cố làm.
Ví dụ, =VLOOKUP("E1005", A:C, 7, FALSE) trả về #REF! vì phạm vi A:C chỉ có 3 cột, nhưng công thức yêu cầu cột 7.
Một vấn đề thường gặp khác là khi cột tra cứu không phải là cột đầu tiên trong phạm vi.
Xem công thức này:
=VLOOKUP("E1005", B:G, 7, FALSE)
Ở đây, cột đầu tiên trong phạm vi là cột B, không phải cột A. Vì VLOOKUP() chỉ tìm ở cột đầu tiên của phạm vi đã chọn, nó không thể tìm E1005.
Cách khắc phục:
- Đảm bảo cột tra cứu là cột đầu tiên trong phạm vi
- Đảm bảo phạm vi bao gồm cột bạn muốn trả về
- Kiểm tra lại phạm vi đã chọn trước khi hoàn tất công thức

Phạm vi sai gây lỗi. Hình: Tác giả.
VLOOKUP() trên nhiều trang tính trong Google Sheets
Bạn có thể dùng VLOOKUP() để lấy dữ liệu từ một trang tính khác bằng cách thêm tên trang tính trước phạm vi.
Cú pháp như sau:
=VLOOKUP(search_key, SheetName!range, index, FALSE)
Phần SheetName! cho công thức biết cần tìm ở trang nào.
Giả sử dữ liệu của bạn nằm trong trang có tên Employees, và bạn đang làm ở trang khác. Để tìm phòng ban cho mã nhân viên E1005, hãy dùng:
=VLOOKUP("E1005", Employees!A:G, 4, FALSE)
Trong đó:
-
Employees!A:Gtìm trong trang Employees -
4trả về cột Department
Công thức trả về phòng ban cho E1005.

Tham chiếu trang tính khác trong VLOOKUP(). Hình: Tác giả.
Khi tên trang có khoảng trắng
Nếu tên trang có khoảng trắng, hãy bao trong dấu nháy đơn như sau:
=VLOOKUP("E1005", 'Employee Data'!A:G, 7, FALSE)
Không có dấu nháy, công thức sẽ không hoạt động.
VLOOKUP() so với INDEX MATCH trong Google Sheets
VLOOKUP() tìm kiếm trong một cột cố định và trả về dữ liệu dựa trên vị trí, trong khi INDEX MATCH tìm giá trị bằng cách tham chiếu trực tiếp hàng và cột, nên hoạt động ngay cả khi cấu trúc bảng thay đổi.
VLOOKUP: viết nhanh, dễ hỏng
Bạn đã thấy =VLOOKUP("E1005", A:G, 7, FALSE) tìm mức lương cho E1005.
Nó hoạt động tốt khi:
- Cột tra cứu ở bên trái
- Cấu trúc bảng không thay đổi
Vấn đề bắt đầu khi cấu trúc thay đổi.
Ví dụ:
- Bạn chèn một cột mới
- Cột lương dịch từ 7 sang 8
- Công thức vẫn dùng 7
Giờ nó trả về giá trị sai mà không báo lỗi.
INDEX MATCH: dài hơn nhưng ổn định
Giờ hãy xem cùng tra cứu đó bằng INDEX MATCH:
=INDEX(G:G, MATCH("E1005", A:A, 0))
Trong đó:
-
MATCH()tìm vị trí củaE1005trong cột A -
INDEX()trả về giá trị từ cột G tại vị trí đó
Cách này không phụ thuộc vào số cột, nên vẫn hoạt động ngay cả khi bảng thay đổi.

INDEX MATCH xử lý dữ liệu tốt hơn VLOOKUP(). Hình: Tác giả.
Khi nào thực sự hữu ích
Hãy dùng INDEX MATCH khi dữ liệu của bạn không sắp xếp từ trái sang phải. Giả sử Cột A chứa Mã nhân viên và Cột C chứa Họ. Nếu bạn muốn tra theo Họ và trả về Mã nhân viên, đây là tra cứu từ phải sang trái.
VLOOKUP() không làm được điều này nếu không thay đổi bảng, nhưng INDEX MATCH xử lý trực tiếp:
=INDEX(A:A, MATCH("Wilson", C:C, 0))
Không cần sắp xếp lại dữ liệu của bạn.
VLOOKUP() so với XLOOKUP trong Google Sheets
VLOOKUP() tìm trong cấu trúc cố định và có giới hạn, trong khi XLOOKUP() cho phép tra cứu theo bất kỳ hướng nào. Hàm này được thêm vào Google Sheets năm 2022 và hiện là lựa chọn tốt hơn trong nhiều trường hợp.
Giả sử bạn muốn tìm Mã nhân viên dựa trên Họ Wilson. Đây là tra cứu từ phải sang trái. VLOOKUP() không xử lý được nếu không sắp xếp lại bảng, còn XLOOKUP() thì có thể:
=XLOOKUP("Wilson", C:C, A:A)
Công thức này:
- Tìm Họ (cột C)
- Trả về Mã nhân viên (cột A)

XLOOKUP() trong Google Sheets. Hình: Tác giả.
XLOOKUP() tốt hơn vì nó:
- Hoạt động theo mọi hướng (trái hoặc phải)
- Không dùng số cột
- Mặc định trả về đối sánh chính xác
- Cho phép tuỳ chỉnh đầu ra khi không tìm thấy kết quả
Tổng kết
Nếu chỉ được khuyên một điều: hãy dùng VLOOKUP() trong một bảng tính thật mà bạn thực sự quan tâm thay vì trang luyện tập. Lỗi sẽ “đau” hơn khi dữ liệu quan trọng. Bạn sẽ nhớ vì sao FALSE tồn tại ngay lần đầu TRUE âm thầm cho bạn mức lương sai của ai đó.
Khi đã quen, hãy thử các kiểu đối sánh khác nhau, điều chỉnh phạm vi và để ý khi nào kết quả bắt đầu vô lý. Đó thường là lúc một lựa chọn linh hoạt hơn như INDEX MATCH() hoặc XLOOKUP() hợp lý hơn.
Tôi là một chiến lược gia nội dung, yêu thích việc đơn giản hóa các chủ đề phức tạp. Tôi đã giúp các công ty như Splunk, Hackernoon và Tiiny Host tạo nội dung hấp dẫn và giàu thông tin cho khán giả của họ.
Câu hỏi thường gặp
Tôi có thể dùng `VLOOKUP()` với ký tự đại diện không?
Có. Bạn có thể dùng * (bất kỳ số lượng ký tự) và ? (một ký tự) trong khóa tìm kiếm khi dùng đối sánh chính xác.
Ví dụ, =VLOOKUP("E10*", A:G, 2, FALSE)
`VLOOKUP()` có xử lý tìm kiếm phân biệt hoa thường trong Google Sheets không?
Không. VLOOKUP() không phân biệt chữ hoa thường. Nó coi “apple” và “Apple” là cùng một giá trị. Để tra cứu có phân biệt hoa thường, bạn cần dùng các hàm như FILTER() hoặc EXACT().
Tại sao `VLOOKUP()` đôi khi trả về kết quả trống?
Điều này xảy ra khi ô đối sánh trống vì nó cho thấy công thức hoạt động đúng, nhưng không có dữ liệu để hiển thị.
`VLOOKUP()` có thể tham chiếu phạm vi được đặt tên không?
Có. Thay vì dùng A:G, bạn có thể đặt tên cho phạm vi (ví dụ: EmployeeData) và dùng trong công thức.
Ví dụ cách thực hiện:
=VLOOKUP("E1005", EmployeeData, 7, FALSE)
