hitava

Mẹo Google Sheets · 15 phút đọc

Hàm XLOOKUP trong Google Sheets: cú pháp, tra nhiều cột, tra sang trái và sửa lỗi #N/A

XLOOKUP tìm một giá trị trong một cột rồi trả về ô cùng dòng ở cột khác bạn chỉ định: =XLOOKUP(G2; A2:A6; B2:D6; "Không có mã này") gõ mã khách ở G2 là ra cùng lúc tên, số điện thoại và hạng thành viên. Hàm mặc định khớp chính xác, tra được sang trái và có sẵn chỗ ghi chữ khi không tìm thấy. Bài này đi qua cú pháp 6 đối số, tra nhiều cột, tra sang trái, khớp gần đúng theo mốc điểm, ký tự đại diện, lấy dòng cuối cùng, các nguyên nhân gây #N/A và khi nào XLOOKUP hơn VLOOKUP.

Đăng HiTaVaXLOOKUPTra cứuCông thứcGoogle Sheets
Bảng 5 khách hàng với Mã KH, tên, SĐT, hạng, điểm; dòng KH003 tô vàng; công thức =XLOOKUP(G2; A2:A6; B2:D6; "Không có mã này") trả về Lê Thu Hà, 0987 654 321, Kim cương; mã KH009 ra Không có mã này

Hàm XLOOKUP là gì, dùng khi nào

Bạn có một bảng gốc (danh sách khách hàng, bảng giá sản phẩm) và một chỗ khác chỉ có mã: ô bán hàng, phiếu thu, báo giá. XLOOKUP lấy mã, dò trong cột tìm, gặp dòng khớp thì trả về ô ở cột kết quả của dòng đó. Thông tin khách chỉ sửa ở một nơi, mọi chỗ khác tự lấy theo.

Có trong Google Sheets
Từ tháng 8/2022
Mặc định
Khớp chính xác, tìm từ trên xuống
Không tìm thấy
#N/A, hoặc chữ bạn ghi ở đối số thứ 4
Cột kết quả
Nằm bên trái hay bên phải đều được, lấy được nhiều cột

Các ví dụ dùng bảng khách hàng của một cửa hàng: cột A Mã KH, B Tên khách, C SĐT, D Hạng, E Điểm tích luỹ, dữ liệu ở dòng 2–6. Công thức viết theo khu vực Việt Nam nên đối số cách nhau bằng dấu chấm phẩy.

A: Mã KHB: Tên kháchC: SĐTD: HạngE: Điểm
2KH001Nguyễn Thị Mai0909 123 456Vàng1.250
3KH002Trần Văn Hùng0912 345 678Bạc640
4KH003Lê Thu Hà0987 654 321Kim cương3.100
5KH004Phạm Quốc Bảo0938 222 111Thường80
6KH005Võ Ngọc Lan0977 888 999Bạc520
Tên và số điện thoại trong bài là dữ liệu ví dụ.

Cú pháp hàm XLOOKUP trong Google Sheets

Ba đối số đầu bắt buộc, ba đối số sau tuỳ chọn. Tên đối số theo trợ giúp tiếng Việt của Google.
=XLOOKUP(khoá_tìm_kiếm; dải_ô_tìm_kiếm; dải_ô_kết_quả; [giá_trị_khi_không_có_kết_quả_trùng_khớp]; [chế_độ_khớp]; [chế_độ_tìm_kiếm])
Đối sốNghĩaVí dụ
khoá_tìm_kiếmGiá trị cần tìm: gõ thẳng hoặc trỏ tới ô"KH003" hoặc G2
dải_ô_tìm_kiếmMột cột (hoặc một hàng) để dò$A$2:$A$6
dải_ô_kết_quảCột muốn lấy. Phải cao bằng dải tìm; được nhiều cột$B$2:$B$6 hoặc $B$2:$D$6
giá_trị_khi_không_có…Hiện gì khi không tìm thấy. Bỏ trống thì ra #N/A"Không có mã này"
chế_độ_khớp0 chính xác (mặc định); -1 chính xác hoặc nhỏ hơn gần nhất; 1 chính xác hoặc lớn hơn gần nhất; 2 ký tự đại diện-1
chế_độ_tìm_kiếm1 từ trên xuống (mặc định); -1 từ dưới lên; 2 và -2 tìm nhị phân trên cột đã sắp xếp-1
G2 là ô gõ mã khách. Dải ô khoá bằng $ để kéo công thức xuống không bị trượt.
=XLOOKUP(G2; $A$2:$A$6; $B$2:$B$6)

Thử lại: G2 = KH003. XLOOKUP dò cột A từ trên xuống: KH001, KH002, KH003 — khớp ở vị trí thứ 3. Ô thứ 3 của B2:B6 là B4 = Lê Thu Hà. Đổi dải kết quả thành $E$2:$E$6 thì ra 3.100 điểm. G2 = KH009 thì ra #N/A vì không có mã đó.

Khác với VLOOKUP, bạn không phải đếm "cột thứ mấy": cột kết quả được chỉ thẳng. Chèn thêm cột vào giữa bảng gốc, Google tự dời địa chỉ trong công thức và kết quả vẫn đúng.

Gõ mã khách ra tên, SĐT và hạng: XLOOKUP trả về nhiều cột

Đây là việc XLOOKUP làm gọn nhất. Thay vì ba công thức cho ba ô, đưa cả ba cột B:D vào dải kết quả. Kết quả tràn sang các ô bên phải.

Đặt ở H2. Ô mã trống thì để trống; mã không có thì báo chữ; có mã thì H2, I2, J2 hiện tên, SĐT, hạng.
=IF(G2=""; ""; XLOOKUP(G2; $A$2:$A$6; $B$2:$D$6; "Không có mã này"))

Thử lại: G2 = KH003 → H2 Lê Thu Hà, I2 0987 654 321, J2 Kim cương. G2 = KH002 → Trần Văn Hùng, 0912 345 678, Bạc. G2 = KH009 → H2 hiện "Không có mã này". G2 trống → cả dòng trống. Không có IF bên ngoài thì mọi dòng chưa gõ mã đều hiện "Không có mã này", rất rối khi bạn kéo công thức sẵn cho 100 dòng.

Bảng khách KH001 đến KH005, dòng KH002 và KH003 tô vàng; bốn thẻ công thức: lấy cả 3 cột B:D ra Lê Thu Hà, 0987 654 321, Kim cương; CHOOSECOLS chỉ lấy tên và hạng; tra sang trái từ Trần Văn Hùng ra KH002; chọn cột theo tiêu đề Hạng ra Bạc
Bốn cách lấy dữ liệu khách bằng XLOOKUP từ cùng một bảng.

Chỉ lấy vài cột không liền nhau. Muốn tên và hạng mà bỏ SĐT, chọn cột bằng CHOOSECOLS: số 1 và 3 là cột thứ nhất và thứ ba của B2:D6.

G2 = KH003 → Lê Thu Hà · Kim cương.
=XLOOKUP(G2; $A$2:$A$6; CHOOSECOLS($B$2:$D$6; 1; 3))

#REF! khi kết quả không có chỗ tràn

Kết quả nhiều cột cần các ô bên phải còn trống. Nếu I2 hay J2 đã có chữ, H2 báo #REF! và di chuột vào sẽ thấy Google báo không mở rộng được vì sẽ ghi đè dữ liệu. Xoá các ô chặn đường, hoặc dời công thức sang chỗ trống.

Tra sang trái và chọn cột theo tiêu đề

Cột kết quả không cần nằm bên phải cột tìm. Biết tên khách mà cần mã ở cột A bên trái:

Tìm ở cột B, lấy ở cột A.
=XLOOKUP("Trần Văn Hùng"; $B$2:$B$6; $A$2:$A$6; "Không có")

Thử lại: "Trần Văn Hùng" ở vị trí thứ 2 của B2:B6, ô thứ 2 của A2:A6 là KH002. Với VLOOKUP, việc này phải chuyển sang INDEX/MATCH.

Chọn cột theo tiêu đề. Khi người dùng muốn tự chọn thông tin cần xem (Hạng, Điểm, SĐT), đặt tên cột vào ô H1 rồi lồng hai XLOOKUP: cái bên trong tìm tiêu đề trên hàng 1 để lấy ra cả cột, cái bên ngoài tìm mã trong cột đó.

H1 = "Hạng": XLOOKUP bên trong trả về cột D2:D6; XLOOKUP bên ngoài lấy ô của mã G2 trong cột đó.
=XLOOKUP(G2; $A$2:$A$6; XLOOKUP(H1; $B$1:$E$1; $B$2:$E$6))

Thử lại: H1 = Hạng, G2 = KH002 → "Hạng" là cột thứ 3 của B1:E1, nên dải kết quả là D2:D6; KH002 ở vị trí 2 → Bạc. Đổi H1 thành Điểm → 640. Ô H1 nên là danh sách thả xuống lấy từ hàng tiêu đề để không gõ sai — xem cách tạo danh sách thả xuống trong Google Sheets.

Giá trị mặc định khi XLOOKUP không tìm thấy

Đối số thứ 4 thay cho việc bọc IFNA bên ngoài. Nó chỉ chạy khi không tìm thấy khoá; các lỗi khác (dải ô lệch kích thước, kết quả không có chỗ tràn) vẫn hiện ra để bạn biết công thức có vấn đề.

Muốn hiệnĐối số thứ 4G2 = KH009 ra
Chữ báo cho người dùng"Không có mã này"Không có mã này
Ô trống""(trống)
Số 0 để cộng tiếp được00
Kết quả của lần tra thứ haiXLOOKUP(G2; $L$2:$L$50; $M$2:$M$50; "Không có")Tìm tiếp ở bảng khách cũ L:M

Cẩn thận với số 0: tổng tiền sẽ không báo lỗi khi mã sai, giống như SUMIFS ra 0 khi điều kiện sai (xem hàm SUMIFS và COUNTIFS). Với tra mã trong hoá đơn, một dòng chữ "Không có mã này" dễ thấy hơn nhiều.

Khi bảng gốc có mã trùng (một khách bị nhập hai lần), XLOOKUP lấy dòng đầu tiên tính từ trên xuống mà không báo gì. Kiểm tra và dọn trùng theo bài lọc dữ liệu trùng lặp trong Google Sheets.

XLOOKUP khớp gần đúng: xếp hạng theo mốc điểm

Hạng thành viên đi theo điểm tích luỹ: từ 0 điểm Thường, từ 500 Bạc, từ 1.000 Vàng, từ 3.000 Kim cương. Đặt bảng mốc ở J2:K5 rồi dùng chế độ khớp -1: không có đúng mốc thì lấy mốc nhỏ hơn gần nhất.

E2 là điểm của khách. Kéo xuống cho cả cột Hạng.
=XLOOKUP(E2; $J$2:$J$5; $K$2:$K$5; "Chưa xếp"; -1)
Bảng khách với điểm 1.250, 640, 3.100, 80, 520 và hạng tính ra Vàng, Bạc, Kim cương, Thường, Bạc; bảng mốc 0 Thường, 500 Bạc, 1.000 Vàng, 3.000 Kim cương, dòng 500 Bạc tô vàng cho KH002
Chế độ khớp -1: không có đúng mốc thì lấy mốc nhỏ hơn gần nhất.

Thử lại: KH002 có 640 điểm. Không có mốc 640; các mốc không vượt 640 là 0 và 500, gần nhất là 500 → Bạc. KH001 1.250 → mốc 1.000 → Vàng. KH003 3.100 → Kim cương. KH004 80 → mốc 0 → Thường. Một khách bị trừ điểm còn -20 thì không có mốc nào nhỏ hơn → "Chưa xếp". Kết quả khớp đúng cột Hạng trong bảng khách.

Chế độ 1 làm ngược lại: lấy mốc lớn hơn gần nhất. Ví dụ bảng phí giao theo cân nặng tối đa: đến 1 kg 20.000đ, đến 3 kg 30.000đ, đến 5 kg 45.000đ. Gói 2,4 kg: =XLOOKUP(2,4; $J$2:$J$4; $K$2:$K$4; "Quá 5 kg"; 1) ra 30.000 (mốc 3 kg); gói 6 kg ra "Quá 5 kg".

Với chế độ tìm mặc định (từ trên xuống), bảng mốc không bắt buộc phải sắp xếp, khác VLOOKUP TRUE. Dù vậy, hãy cứ xếp mốc tăng dần để người khác đọc là hiểu. Cách làm bảng bậc thang thay cho IF lồng nhiều tầng có ở bài hàm IF nhiều điều kiện.

Tìm theo một phần tên: ký tự đại diện

Đặt chế độ khớp là 2 thì khoá tìm hiểu dấu sao (*) là chuỗi bất kỳ, dấu hỏi (?) là đúng một ký tự. Hữu ích khi chỉ nhớ một phần tên khách:

G2 = Hùng → tìm mọi tên có chữ "Hùng".
=XLOOKUP("*"&G2&"*"; $B$2:$B$6; $A$2:$A$6; "Không có"; 2)

Thử lại: G2 = Hùng → chỉ "Trần Văn Hùng" chứa chữ này → KH002. G2 = Lan → "Võ Ngọc Lan" → KH005. Tìm không phân biệt hoa thường nhưng phân biệt dấu: "hung" không khớp "Hùng". Nhiều tên cùng khớp thì chỉ ra tên đầu tiên; cần cả danh sách thì dùng FILTER hoặc QUERY (xem cách dùng hàm QUERY).

Không đặt chế độ 2 thì dấu * chỉ là một ký tự bình thường, nên =XLOOKUP("*Hùng*"; B2:B6; A2:A6) ra #N/A.

Lấy dòng cuối cùng: lần mua gần nhất của khách

Bảng đơn hàng ghi theo thời gian, mỗi khách mua nhiều lần. Muốn lần mua gần nhất, đặt chế độ tìm kiếm là -1 (từ dưới lên). Bảng đơn: A Ngày, B Mã KH, C Số tiền.

A: NgàyB: Mã KHC: Số tiền
202/10/2026KH002450.000
305/10/2026KH001800.000
412/10/2026KH0032.100.000
518/10/2026KH0021.200.000
619/10/2026KH001300.000
Khớp chính xác (0), tìm từ dưới lên (-1), lấy cả ngày, mã và số tiền.
=XLOOKUP("KH002"; $B$2:$B$6; $A$2:$C$6; "Chưa mua"; 0; -1)

Thử lại: tìm từ dòng 6 lên, KH002 gặp ở dòng 5 trước → 18/10/2026 · KH002 · 1.200.000. Bỏ hai đối số cuối thì tìm từ trên xuống, ra lần mua đầu tiên 02/10/2026 · 450.000. KH004 chưa có đơn → "Chưa mua". Ô kết quả ngày có thể hiện thành số kiểu 46313 — chỉ cần định dạng ô là ngày. Cách này chỉ đúng khi đơn mới luôn thêm xuống dưới; bảng bị sắp xếp lại thì nên lọc theo ngày lớn nhất.

XLOOKUP báo #N/A: nguyên nhân và cách sửa

#N/A nghĩa là không tìm thấy. Khi mã thật sự không có thì lỗi là đúng. Còn khi mã nằm ngay trong bảng mà vẫn #N/A, thường là một trong ba trường hợp sau.

Ba thẻ lỗi #N/A: khoảng trắng thừa sau KH003 với LEN ra 6; mã 1025 dạng chữ khi gõ số, ISTEXT ra TRUE; số điện thoại viết khác nhau 0987 654 321, 0987.654.321 và 987654321, kèm công thức sửa cho từng trường hợp
Ba nguyên nhân hay gặp khi mã có trong bảng mà XLOOKUP vẫn báo #N/A.

1. Khoảng trắng thừa. "KH003 " (có dấu cách cuối, hay gặp khi dán từ Zalo, email) khác "KH003". Kiểm tra bằng =LEN(A4): ra 6 thay vì 5 là có ký tự thừa. Khoảng trắng nằm ở ô bạn gõ thì bọc TRIM(G2). Nằm trong bảng gốc thì chọn cột mã, vào Dữ liệu › Dọn dẹp dữ liệu › Cắt bớt khoảng trắng, hoặc cắt ngay trong công thức:

=XLOOKUP(TRIM(G2); ARRAYFORMULA(TRIM($A$2:$A$6)); $B$2:$B$6; "Không có mã này")

2. Số nằm dưới dạng chữ. Mã khách 1025 xuất từ phần mềm thường là chữ (nằm sát trái ô), còn ô bạn gõ 1025 là số (nằm sát phải). Trông giống nhau nhưng không khớp. Kiểm tra bằng =ISTEXT(A2). Đưa khoá tìm về cùng kiểu với cột mã: cột mã là chữ thì dùng G2&"", cột mã là số còn G2 là chữ thì dùng VALUE(G2). Cách nhận ra và sửa số dạng chữ hàng loạt có ở bài sửa lỗi SUM bằng 0 trong Google Sheets.

Cột mã là chữ: nối với "" để biến số 1025 thành chữ "1025".
=XLOOKUP(G2&""; $A$2:$A$50; $B$2:$B$50; "Không có mã này")

3. Số điện thoại viết khác nhau. Tra khách theo SĐT là nhu cầu rất hay gặp, nhưng cùng một số có thể là 0987 654 321, 0987.654.321, +84 987 654 321 hay số 987654321 (Google bỏ số 0 đầu khi bạn gõ như một con số). Cách chắc chắn: bỏ mọi ký tự không phải chữ số rồi so 9 số cuối ở cả hai phía.

\D là mọi ký tự không phải chữ số. &"" biến số thành chữ để REGEXREPLACE chạy được.
=XLOOKUP(RIGHT(REGEXREPLACE(G2&""; "\D"; ""); 9); ARRAYFORMULA(RIGHT(REGEXREPLACE($C$2:$C$6&""; "\D"; ""); 9)); $A$2:$A$6; "Không thấy SĐT")

Thử lại: G2 = 0987.654.321 → bỏ dấu chấm còn 0987654321 → 9 số cuối 987654321. Ô C4 = 0987 654 321 → bỏ khoảng trắng còn 0987654321 → 987654321. Hai bên khớp → KH003. Gõ +84 987 654 321 hay số 987654321 cũng ra KH003.

Lỗi khácNguyên nhânCách sửa
Báo lỗi kích thước dải ôDải tìm và dải kết quả không cao bằng nhau (A2:A6 với B2:B7)Dùng cùng dòng đầu, dòng cuối cho cả hai
#REF!Kết quả nhiều cột bị ô có dữ liệu chặnXoá ô chặn hoặc dời công thức
Lỗi phân tích cú phápDán công thức dùng dấu phẩy vào file khu vực Việt NamĐổi "," giữa các đối số thành ";"
#NAME? khi mở bằng ExcelExcel 2019 trở về trước không có XLOOKUPDùng INDEX/MATCH nếu file phải mở bằng Excel cũ
Ra kết quả của dòng khácMã bị trùng trong bảng gốc; XLOOKUP lấy dòng đầuDọn trùng ở cột mã

XLOOKUP khác VLOOKUP thế nào, nên dùng hàm nào

VLOOKUPXLOOKUP
Mặc định khi bỏ trống đối số cuốiKhớp gần đúng — dễ trả sai mà không báoKhớp chính xác
Chọn cột kết quảĐếm số thứ tự cột; chèn cột là lệchChỉ thẳng dải ô; chèn cột vẫn đúng
Tra sang tráiKhôngĐược
Lấy nhiều cột một lầnPhải viết nhiều công thứcMột công thức, tràn sang phải
Khi không tìm thấy#N/A, phải bọc IFNACó sẵn đối số thứ 4
Lấy lần xuất hiện cuốiKhôngChế độ tìm -1
Mở bằng ExcelMọi bảnExcel 2021, Microsoft 365

Chọn nhanh: file chỉ dùng trên Google Sheets hoặc Excel mới thì dùng XLOOKUP. File còn phải mở bằng Excel 2016, 2019 thì dùng INDEX/MATCH, vì ô XLOOKUP sẽ báo lỗi ở đó. Những khác biệt khác giữa hai bên có ở bài Google Sheets hay Excel.

Nếu bảng khách của bạn là danh sách khách tiềm năng cần gọi lại, bài quản lý khách hàng tiềm năng bằng Google Sheets chỉ cách dựng cột, trạng thái và lịch chăm sóc để XLOOKUP có dữ liệu sạch mà tra.

Câu hỏi thường gặp về hàm XLOOKUP

Google Sheets có hàm XLOOKUP không?

Có, Google thêm hàm này từ tháng 8/2022. Cú pháp giống XLOOKUP của Excel, chỉ khác dấu phân cách: file khu vực Việt Nam dùng dấu chấm phẩy.

Vì sao XLOOKUP ra #N/A dù mã có trong bảng?

Thường do khoảng trắng thừa (kiểm tra bằng LEN), số nằm dưới dạng chữ (kiểm tra bằng ISTEXT) hoặc số điện thoại viết khác cách. Sửa bằng TRIM, nối G2&"" hoặc VALUE(G2), và so 9 số cuối với SĐT.

XLOOKUP lấy nhiều cột cùng lúc được không?

Được: đặt dải kết quả nhiều cột, ví dụ =XLOOKUP(G2; A2:A6; B2:D6) trả về tên, SĐT, hạng tràn sang 3 ô. Các ô bên phải phải trống, nếu không sẽ báo #REF!. Muốn bỏ bớt cột ở giữa thì dùng CHOOSECOLS.

XLOOKUP không tìm thấy thì hiện ô trống thế nào?

Ghi "" ở đối số thứ 4: =XLOOKUP(G2; A2:A6; B2:B6; ""). Muốn ô mã trống thì kết quả cũng trống, bọc thêm IF(G2=""; ""; …).

XLOOKUP có phân biệt chữ hoa, chữ thường không?

Không: "kh003" khớp "KH003". Nhưng có phân biệt dấu tiếng Việt và khoảng trắng, nên "Ha" không khớp "Hà".

Nên dùng XLOOKUP hay VLOOKUP?

XLOOKUP nếu file chỉ dùng trên Google Sheets hoặc Excel 2021, Microsoft 365: mặc định khớp chính xác, tra được sang trái, có sẵn giá trị khi không thấy. Cần mở bằng Excel cũ thì dùng INDEX/MATCH.

Đọc tiếp

Nguồn tham khảo

Mẫu làm sẵn cho việc này

Mẫu khác liên quan: Bán hàng 360 PRO.

Đọc tiếp

Xem thêm mẹo và video hướng dẫn trên kênh YouTube HiTaVa, hoặc đọc các bài khác trong chủ đề Mẹo Google Sheets.

Cần hỏi thêm?Zalo 0935077673 (Hải Vân)