Bài 16 · THVP
VLOOKUP, HLOOKUP, XLOOKUP, LOOKUP, FILTER, INDEX + MATCH, XMATCH kèm bảng mẫu và bài tập
🎯 Mục tiêu bài học
- Hiểu nguyên tắc dò tìm và cách cố định vùng dò bằng phím F4.
- Dùng VLOOKUP dò dọc và HLOOKUP dò ngang để lấy dữ liệu theo mã.
- Dùng XLOOKUP để tra cứu linh hoạt, tra ngược và xử lý khi không tìm thấy.
- Dùng LOOKUP xếp bậc chiết khấu, bậc thưởng theo khoảng giá trị.
- Dùng FILTER lọc ra nhiều dòng thoả một hoặc nhiều điều kiện.
- Kết hợp INDEX + MATCH để tra cứu mọi hướng, kể cả từ phải sang trái.
- Dùng XMATCH tìm vị trí và dò từ dưới lên.
- Hoàn thành 2 bài tập mẫu về phiếu xuất kho và báo cáo bán hàng.
📋 Bảng mẫu để thực hành
Nhập lại bảng mẫu trong Excel, sau đó thực hiện các yêu cầu bên phải.
| Hàng | B — Mã hàng | C — Tên hàng | D — Nhóm hàng | E — Đơn giá | F — Số lượng |
|---|
| 4 | SP001 | Bàn làm việc | Nội thất | 1,250,000 | 12 |
| 5 | SP002 | Ghế xoay | Nội thất | 890,000 | 25 |
| 6 | SP003 | Máy in laser | Thiết bị | 3,450,000 | 6 |
| 7 | SP004 | Kệ sách gỗ | Nội thất | 1,750,000 | 9 |
| 8 | SP005 | Máy chiếu | Thiết bị | 8,900,000 | 3 |
| 9 | SP006 | Bàn họp lớn | Nội thất | 5,600,000 | 4 |
🔎 Ghi nhớ nhanh cấu trúc 7 hàm dò tìm
| Hàm | Cấu trúc | Công dụng |
|---|
| VLOOKUP | =VLOOKUP(giá_trị_dò; vùng_bảng; số_cột; 0) | Dò dọc theo cột đầu tiên của bảng |
| HLOOKUP | =HLOOKUP(giá_trị_dò; vùng_bảng; số_hàng; 0) | Dò ngang theo hàng đầu tiên của bảng |
| XLOOKUP | =XLOOKUP(giá_trị_dò; vùng_dò; vùng_trả_về; [khi_không_thấy]) | Dò mọi hướng, gọn và an toàn hơn VLOOKUP |
| LOOKUP | =LOOKUP(giá_trị_dò; vùng_dò; vùng_kết_quả) | Dò gần đúng theo bậc, vùng dò phải tăng dần |
| FILTER | =FILTER(vùng_dữ_liệu; điều_kiện; [khi_rỗng]) | Lọc và trả về nhiều dòng thoả điều kiện |
| INDEX + MATCH | =INDEX(vùng_kết_quả; MATCH(giá_trị_dò; vùng_dò; 0)) | Tra được cả sang trái, linh hoạt nhất |
| XMATCH | =XMATCH(giá_trị_dò; vùng_dò; [kiểu_khớp]; [chiều_dò]) | Tìm vị trí, dò được từ dưới lên |
💡 Dấu ngăn cách đối số là ; hoặc , tuỳ cài đặt máy. Nếu Excel báo lỗi công thức, hãy đổi sang dấu còn lại.
Hướng dẫn chi tiết các hàm dò tìm VLOOKUP, HLOOKUP, XLOOKUP, LOOKUP, FILTER, INDEX + MATCH, XMATCH
Mỗi phần đều nêu cấu trúc hàm, cách sử dụng từng bước và ảnh minh hoạ thực tế trong Excel.
Hàm VLOOKUP — dò tìm theo cột
- Cấu trúc: =VLOOKUP(giá_trị_dò; vùng_bảng; số_thứ_tự_cột; kiểu_dò). Công dụng: lấy dữ liệu ở các cột bên phải dựa vào mã ở cột đầu tiên.
- Nhập mã cần tra vào ô I4, ví dụ SP003.
- Nhấn vào ô kết quả J4, gõ =VLOOKUP( rồi nhấn chuột vào ô I4.
- Gõ ; rồi quét chọn vùng bảng B4:F9 và nhấn F4 để cố định thành $B$4:$F$9.
- Gõ ; rồi nhập số thứ tự cột cần lấy — cột Tên hàng là cột thứ 2 tính từ cột B.
- Gõ ; rồi nhập 0 (dò chính xác), đóng ngoặc ) và nhấn Enter.
- Kéo Fill Handle xuống hoặc sang để tra thêm các cột khác, chỉ đổi số thứ tự cột.
- Bọc IFNA để bảng đẹp hơn: =IFNA(VLOOKUP(I4;$B$4:$F$9;2;0);"Không tìm thấy").
💡 Quy tắc vàng: cột chứa mã bắt buộc phải là cột ĐẦU TIÊN của vùng bảng, nếu không VLOOKUP luôn báo #N/A.
Hình 1: Hàm VLOOKUP — dò tìm theo cộtHàm HLOOKUP — dò tìm theo hàng
- Cấu trúc: =HLOOKUP(giá_trị_dò; vùng_bảng; số_thứ_tự_hàng; kiểu_dò). Công dụng: giống VLOOKUP nhưng dò theo hàng ngang.
- Dùng khi bảng tra được trình bày nằm ngang, ví dụ hàng 3 là mã hàng, các hàng dưới là Tên hàng, Nhóm hàng, Đơn giá.
- Nhấn ô kết quả, gõ =HLOOKUP( rồi nhấn ô chứa mã cần tra.
- Gõ ; rồi quét vùng bảng ngang (bao gồm cả hàng chứa mã) và nhấn F4 để cố định.
- Gõ ; rồi nhập số thứ tự HÀNG cần lấy, tính từ hàng đầu tiên của vùng.
- Gõ ; rồi nhập 0, đóng ngoặc ) và nhấn Enter.
- Kéo Fill Handle sang ngang để tra cho các mã còn lại.
- Nếu bảng nằm dọc mà lỡ dùng HLOOKUP sẽ ra #N/A — hãy đổi lại thành VLOOKUP.
💡 Mẹo nhớ: chữ V là Vertical (dọc), chữ H là Horizontal (ngang).
Hình 2: Hàm HLOOKUP — dò tìm theo hàngHàm XLOOKUP — bản nâng cấp của VLOOKUP
- Cấu trúc: =XLOOKUP(giá_trị_dò; vùng_dò; vùng_trả_về; [khi_không_thấy]; [kiểu_khớp]; [chiều_dò]).
- Nhấn ô kết quả, gõ =XLOOKUP( rồi nhấn ô I4 chứa mã cần tra.
- Gõ ; rồi quét vùng dò $B$4:$B$9 (cột Mã hàng), nhấn F4 để cố định.
- Gõ ; rồi quét vùng trả về $C$4:$C$9 (cột Tên hàng) và cố định bằng F4.
- Gõ ; rồi nhập "Không tìm thấy" để thay cho lỗi #N/A, đóng ngoặc ) và nhấn Enter.
- Ưu điểm: không cần đếm số cột, tra được cả sang TRÁI, mặc định là dò chính xác.
- Trả về nhiều cột cùng lúc: chọn vùng trả về là $C$4:$E$9, kết quả sẽ tự tràn ra các ô bên cạnh.
- Dò từ dưới lên (lấy giao dịch mới nhất): thêm đối số cuối là -1.
💡 XLOOKUP chỉ có trên Microsoft 365 và Excel 2021 trở lên. Máy Excel 2019 hãy dùng INDEX + MATCH thay thế.
Hình 3: Hàm XLOOKUP — bản nâng cấp của VLOOKUPHàm LOOKUP — dò gần đúng theo bậc
- Cấu trúc: =LOOKUP(giá_trị_dò; vùng_dò; vùng_kết_quả). Công dụng: xếp bậc, xếp loại theo khoảng giá trị.
- Tạo bảng bậc phụ, ví dụ: 0 → 0%, 5 → 3%, 10 → 5%, 20 → 8%. Cột mốc bắt buộc phải sắp xếp TĂNG DẦN.
- Nhấn ô kết quả, gõ =LOOKUP( rồi nhấn ô F4 chứa Số lượng.
- Gõ ; rồi quét cột mốc và nhấn F4 để cố định.
- Gõ ; rồi quét cột kết quả tương ứng, cố định bằng F4, đóng ngoặc ) và nhấn Enter.
- Có thể viết gọn bằng hằng mảng: =LOOKUP(F4;{0;5;10;20};{"0%";"3%";"5%";"8%"}).
- Kéo Fill Handle xuống hết cột để xếp bậc cho toàn bộ danh sách.
- Lỗi hay gặp: mốc sắp xếp lộn xộn → kết quả sai mà không báo lỗi, nên luôn sắp xếp tăng dần trước.
💡 Có thể thay bằng VLOOKUP dò gần đúng: =VLOOKUP(F4;$H$4:$I$7;2;1) — đối số cuối là 1 (TRUE).
Hình 4: Hàm LOOKUP — dò gần đúng theo bậcHàm FILTER — lọc ra nhiều dòng cùng lúc
- Cấu trúc: =FILTER(vùng_dữ_liệu; điều_kiện; [giá_trị_khi_rỗng]). Công dụng: trả về TẤT CẢ các dòng thoả điều kiện.
- Nhấn vào một ô trống rộng rãi (bên dưới hoặc bên phải bảng) vì kết quả sẽ tràn ra nhiều dòng.
- Gõ =FILTER( rồi quét vùng dữ liệu $B$4:$F$9.
- Gõ ; rồi nhập điều kiện, ví dụ $D$4:$D$9="Nội thất".
- Gõ ; rồi nhập "Không có dữ liệu", đóng ngoặc ) và nhấn Enter.
- Kết quả tự tràn (spill) và được viền xanh — chỉ cần sửa ở ô đầu tiên, không kéo Fill Handle.
- Lọc nhiều điều kiện cùng đúng dùng dấu *: =FILTER($B$4:$F$9;($D$4:$D$9="Nội thất")*($E$4:$E$9>1000000)).
- Lọc một trong hai điều kiện dùng dấu +: =FILTER($B$4:$F$9;($D$4:$D$9="Nội thất")+($F$4:$F$9>=10)).
💡 Lỗi #SPILL! nghĩa là vùng tràn đang bị ô khác chiếm chỗ — hãy xoá dữ liệu bên dưới hoặc chuyển công thức sang chỗ trống.
Hình 5: Hàm FILTER — lọc ra nhiều dòng cùng lúcINDEX + MATCH — cặp đôi tra cứu linh hoạt nhất
- Cấu trúc: =INDEX(vùng_kết_quả; MATCH(giá_trị_dò; vùng_dò; 0)). MATCH tìm vị trí dòng, INDEX lấy giá trị tại dòng đó.
- Hiểu MATCH trước: =MATCH(I4;$B$4:$B$9;0) trả về số thứ tự dòng chứa mã, ví dụ SP003 cho kết quả 3.
- Hiểu INDEX: =INDEX($C$4:$C$9;3) trả về giá trị ở dòng thứ 3 của cột Tên hàng.
- Ghép lại: nhấn ô kết quả, gõ =INDEX( rồi quét vùng kết quả $C$4:$C$9 và nhấn F4.
- Gõ ; rồi gõ MATCH( , nhấn ô I4, gõ ; quét vùng dò $B$4:$B$9 và nhấn F4.
- Gõ ;0 rồi đóng đủ 2 dấu ngoặc )) và nhấn Enter.
- Ưu điểm lớn nhất: tra được từ PHẢI sang TRÁI — điều VLOOKUP không làm được.
- Tra 2 chiều (giao dòng và cột): =INDEX($C$4:$F$9;MATCH(I4;$B$4:$B$9;0);MATCH(J3;$C$3:$F$3;0)).
💡 INDEX + MATCH chạy trên mọi phiên bản Excel và không bị sai khi chèn thêm cột — nên dùng cho các file dùng lâu dài.
Hình 6: INDEX + MATCH — cặp đôi tra cứu linh hoạt nhấtHàm XMATCH — tìm vị trí phiên bản mới
- Cấu trúc: =XMATCH(giá_trị_dò; vùng_dò; [kiểu_khớp]; [chiều_dò]). Công dụng: trả về vị trí của giá trị trong danh sách.
- Nhấn ô kết quả, gõ =XMATCH( rồi nhấn ô I4 chứa mã cần tìm.
- Gõ ; rồi quét vùng dò $B$4:$B$9 và nhấn F4 để cố định, đóng ngoặc ) và nhấn Enter.
- Khác MATCH: XMATCH mặc định là dò CHÍNH XÁC nên không cần gõ thêm số 0.
- Kiểu khớp: 0 chính xác, -1 lấy giá trị nhỏ hơn gần nhất, 1 lấy giá trị lớn hơn gần nhất, 2 dùng ký tự đại diện * ?.
- Chiều dò: để trống là từ trên xuống, nhập -1 để dò từ DƯỚI LÊN — rất hợp để lấy giao dịch mới nhất.
- Ghép với INDEX y hệt MATCH: =INDEX($C$4:$C$9;XMATCH(I4;$B$4:$B$9)).
- Kiểm tra tồn tại: =IF(ISNUMBER(XMATCH(I4;$B$4:$B$9));"Có trong kho";"Chưa có").
💡 XMATCH chỉ có trên Microsoft 365 / Excel 2021. Máy đời cũ hãy thay bằng MATCH và nhớ thêm đối số 0.
Hình 7: Hàm XMATCH — tìm vị trí phiên bản mới📝 Bài tập mẫu để luyện tập
Hai bài tập dưới đây bao quát cả 7 hàm dò tìm vừa học. Hãy tự làm trước rồi mới mở phần đáp án gợi ý.
Bài tập 1 — Phiếu xuất kho tra cứu tự động
Nhập bảng danh mục sau vào Excel (tiêu đề ở hàng 3, dữ liệu từ hàng 4) rồi lập phiếu xuất kho tự động điền thông tin khi gõ mã hàng.
Bảng danh mục hàng hoá (B3:F9)| Hàng | B — Mã hàng | C — Tên hàng | D — Nhóm hàng | E — Đơn giá | F — Tồn kho |
|---|
| 4 | VT001 | Bút bi Thiên Long | Văn phòng phẩm | 5,000 | 500 |
| 5 | VT002 | Giấy A4 Double A | Văn phòng phẩm | 78,000 | 120 |
| 6 | TB001 | Máy tính Casio | Thiết bị | 450,000 | 35 |
| 7 | TB002 | Máy in HP | Thiết bị | 3,200,000 | 8 |
| 8 | NT001 | Bàn học sinh | Nội thất | 890,000 | 24 |
| 9 | NT002 | Ghế nhựa | Nội thất | 150,000 | 60 |
Xem đáp án gợi ý
- J4:
=IFNA(VLOOKUP($I$4;$B$4:$F$9;2;0);"Không tìm thấy") - J5:
=IFNA(VLOOKUP($I$4;$B$4:$F$9;4;0);0) - J6:
=XLOOKUP($I$4;$B$4:$B$9;$D$4:$D$9;"Không tìm thấy") - J7:
=INDEX($F$4:$F$9;MATCH($I$4;$B$4:$B$9;0)) - J8:
=XMATCH($I$4;$B$4:$B$9;0) - J9:
=IF(J7>0;"Còn hàng";"Hết hàng")
Bài tập 2 — Báo cáo bán hàng và lọc dữ liệu
Nhập bảng doanh số sau rồi dùng LOOKUP, FILTER, HLOOKUP và INDEX + MATCH để lập báo cáo.
Bảng doanh số nhân viên quý III (bảng bậc thưởng đặt tại L4:M7 gồm 0→0%, 100→2%, 300→5%, 500→8%)| Hàng | B — Mã NV | C — Họ và tên | D — Khu vực | E — Doanh số (triệu) | F — Chỉ tiêu |
|---|
| 4 | NV01 | Nguyễn Thị Mai | Miền Bắc | 520 | 400 |
| 5 | NV02 | Trần Quốc Bảo | Miền Nam | 180 | 200 |
| 6 | NV03 | Lê Hoàng Nam | Miền Trung | 310 | 300 |
| 7 | NV04 | Phạm Thu Hà | Miền Bắc | 95 | 150 |
| 8 | NV05 | Võ Minh Trí | Miền Nam | 460 | 400 |
| 9 | NV06 | Đỗ Kim Ngân | Miền Trung | 275 | 250 |
Xem đáp án gợi ý
- G4:
=LOOKUP(E4;$L$4:$L$7;$M$4:$M$7) - H4:
=E4*G4 - I4:
=IF(E4>=F4;"Đạt";"Chưa đạt") - K5:
=INDEX($C$4:$C$9;MATCH($K$4;$B$4:$B$9;0)) - K6:
=XLOOKUP($K$4;$B$4:$B$9;$D$4:$D$9;"Không tìm thấy") - O4:
=FILTER($B$4:$F$9;$D$4:$D$9="Miền Bắc";"Không có") - O10:
=FILTER($B$4:$F$9;($E$4:$E$9>=300)*($E$4:$E$9>=$F$4:$F$9);"Không có") - K8:
=XMATCH("Miền Nam";$D$4:$D$9;0;-1)
Tài liệu đang được cập nhật.