Hôm nay Saunguyen.pro sẽ sử dụng một đề thi thực hành tin học để minh họa cách sử dụng hàm INDIRECT kết hợp Data Validation giải bài toán Excel phụ thuộc lẫn nhau giữa các bảng dữ liệu.
Hàm INDIRECT: Trả về một tham chiếu từ chuỗi ký tự.
=INDIRECT(ref_text [, a1])
- ref_text là tham chiếu tới một ô (có thể là dạng A1 hoặc dạng R1C1), là tên định nghĩa của một tham chiếu, hoặc là một tham chiếu dạng chuỗi.
- a1 là giá trị logic xác định dạng tham chiếu bên trong ref_text.
- a1 = TRUE (hoặc là 1, hoặc không nhập) là kiểu tham chiếu A1
- a1 = FALSE (hoặc là 2) là kiểu tham chiếu R1C1
- Nếu ref_text không hợp lệ, Indirect sẽ báo lỗi #REF!
- Nếu ref_text chứa tham chiếu đến một bảng tính khác thì bảng tính này phải đang mở, nếu không, Indirect cũng báo lỗi #REF!
Data Validation là tính năng của Excel dùng để cố định dữ liệu của những ô tính được chọn.
- Data Validation tạo danh sách dạng sổ xuống trong excel.
- Data Validation thiết lập thông báo kiểu dữ liệu cho ô được chọn.
- Data Validation báo lỗi khi nhập sai dữ liệu.
Dùng hàm INDIRECT kết hợp Data Validation giải bài toán Excel phụ thuộc qua bài thi dưới đây
- #,##0 "VND"
- #.##0 "USD"
B2.1: Lần lược chọn các tên hàng và đặt tên giống bảng Mã nhóm hàng
- NhomQuanAo (Ghế Sôfa, Tràng kỷ, Cầu thang, Tủ quần áo, Kệ bếp)
- NhomLinhKien (CD-Rom, DVD, CDRW, COMBO, Monitor LCD)
- NhomGiaDung (Somi dài tay, Somi ngắn tay, Kaki nam, Quần tây nam)
- NhomSon (Sơn ngoài trời, Sơn trong nhà, Sơn lót, Bôi trét)
Làm tương tự cho 2 nhóm mặt hàng còn lại; vào Name Manager kiểm tra lại nhé.
Câu 3: Lấy dữ liệu vào cột Hãng SX/Cơ sở/Kích cỡ" Ứng với Nhóm hàng là Hãng SX/Cơ sở/kích cớ tương ứng của Nhóm hàng đó?
Câu 4: Cột "Số lượng" nhập giá trị lớn hơn 0, nhập sai hiện thông báo như hình dưới
Câu 5: Điền đơn giá vào cột E, đơn giá được lấy ở bảng đơn giá ứng với mỗi Nhóm hàng, tên hãng, tên hàng.
- dg_NhomGiaDung
- dg_NhomThietBi
- dg_NhomQuanAo
- dg_NhomSon
B5.2. Tiếp theo bạn hãy dành chút thời gian để xem lại cú pháp của 3 hàm được chúng tôi liệt kê ở cuối bà viết.
B5.3. Cột đơn giá bạn nhập công thức gợi ý như sau:
=IF(A5="NhomGiaDung";VLOOKUP(C5;dg_NhomGiaDung;MATCH(B5;$A$16:$F$16;0);0);IF(A5="NhomLinhKien";VLOOKUP(C5;gd_NhomLinhKien;MATCH(B5;$A$22:$F$22;0);0);IF(A5="NhomQuanAo";VLOOKUP(C5;dg_NhomQuanAo;MATCH(B5;$A$28:$E$28;0);0);IF(A5="NhomSon";VLOOKUP(C5;dg_NhomSon;MATCH(B5;$A$34:$E$34;0);0);""))))
Giải thích:
- =IF(A5="NhomGiaDung" : hàm if sẽ so sách và xác định chính xác nhóm hàm được lấy ở cột A
- =MATCH(B5;$A$16:$F$16;0);0 : Hàm match để xác định tọa độ, vị trí
- =VLOOKUP(C5;dg_NhomGiaDung;MATCH(B5;$A$16:$F$16;0);0) : Lấy đơn giá với các diều kiện tương ứng

Lồng ghép các hàm if ta có công thức hoàn chỉnh như sau:
=IF(A5="NhomGiaDung";VLOOKUP(C5;dg_NhomGiaDung;MATCH(B5;$A$16:$F$16;0);0);IF(A5="NhomLinhKien";VLOOKUP(C5;gd_NhomLinhKien;MATCH(B5;$A$22:$F$22;0);0);IF(A5="NhomQuanAo";VLOOKUP(C5;dg_NhomQuanAo;MATCH(B5;$A$28:$E$28;0);0);IF(A5="NhomSon";VLOOKUP(C5;dg_NhomSon;MATCH(B5;$A$34:$E$34;0);0);""))))
Và kết quả:
Câu 6: Thành tiền = số lượng * đơn giá * tỷ giá biết NhomQuanAo, NhomGiaDung giữ nguyên tỷ giá các nhóm còn lại 23.500, yêu cầu dùng công thức mảng?
- Theo đề các sản phẩm đơn giá là USD thì tỷ giá là 23.500 VNĐ
- Dùng công thức mảng: Công thức mảng là công thức có thể thực hiện nhiều phép tính đối với một hoặc nhiều mục trong mảng. Bạn có thể hình dung mảng là một hàng hoặc một cột giá trị hoặc là một kết hợp các hàng và cột giá trị. Công thức mảng có thể trả về nhiều kết quả hoặc một kết quả duy nhất.
Công thức ở câu 6 tương đối đơn giản, bạn dùng if để so sách và công thức sẽ là:
{=IF((A5:A10<>"NhomLinhKien")*(A5:A10<>"NhomSon");D5:D10*E5:E10;D5:D10*E5:E10*23500)}Để sử dụng công thức mảng bạn phải làm như sau:
B6.1: Chọn vùng cần tính F5:F10
B6.2: Nhập công thức:
=IF((A5:A10<>"NhomLinhKien")*(A5:A10<>"NhomSon");D5:D10*E5:E10;D5:D10*E5:E10*23500)
B6.3. Nhấp tổ hợp phím: Ctrl+Shift+Enter
Câu 7: Ngày tháng: yêu cầu nhập bất cứ thời gian nào trong năm 2020
- Như vậy bạn nhập ngày tháng trong năm 2020 là được.
Câu 8: Ghi chú: Nếu số lượng >=200 và có ngày lập phiếu trong tháng 5/ 2020 thì đánh dấu XXX còn lại để trống, yêu cầu dùng công thức mảng?
- Tương tự câu 6, câu 8 các bạn làm công thức so sách như sau:
{=IF((D5:D10>=200)*(MONTH(G5:G10)=5);"XXX";"")}
Câu 9: tô màu cho 3 dòng có "Số lượng" lớn nhất và "Ghi chú" là XXX?
Với câu 9 bạn dùng tính năng: Conditional formatting
- Tuy nhiên để đơn giản chọn các sản phẩm có số lượng mua xếp lớn nhất nên thêm 1 cột dùng hàm Rank
- Sau đó dùng tính năng Conditional formatting với công thức:
=AND(OR($J5=1;$J5=2;$J5=3);$H5="XXX")
Tìm hiểu một số hàm có sử dụng trong bài viết này.
1. Hàm IF trong Excel có cú pháp là
=IF(logical_test;[value_if_true];[value_if_false])
- - Logical_test là điều kiện kiểm tra;
- - Value_if_true là giá trị nếu điều kiện đúng;
- - Value_if_false là giá trị nếu điều kiện sai.
2. Công thức hàm VLOOKUP:
=VLOOKUP(Lookup_value, Table_array, Col_index_ num, Range_lookup)Trong đó:
- Lookup_value: Giá trị cần dò tìm
- Table_array: Bảng giới hạn để dò tìm.
- Col_index_num: Số thứ tự của cột lấy dữ liệu trong bảng cần dò tìm, tính từ trái qua phải.
- Range_lookup: tìm kiếm chính xác hay tìm kiếm tương đối với bảng giới hạn, nếu bỏ qua thì mặc định là 1.
- Nếu Range_lookup = 1 (TRUE): dò tìm tương đối.
- Nếu Range_lookup = 0 (FALSE): dò tìm chính xác.
3. Hàm match là một hàm tìm kiếm vị trí của một dữ liệu trong một vùng dữ liệu, thực hiện công việc đưa ra số thứ tự vị trí của dữ liệu đó trong một khu vực cột hoặc hàng nào đó.
=MATCH(lookup_value, lookup_array, [match_type])
- Lookup_value: giá trị cần xác định vị trí trong mảng dữ liệu lookup_array
- Lookup_array: là mảng dữ liệu để xác định vị trí số thứ tự.
- Match_type: không cần thiết hay bắt buộc, có thể là -1, 0 hoặc 1,mặc định là 1.
- 1 hoặc bỏ trống: hàm Match sẽ tìm giá trị lớn nhất
- 0: hàm Match sẽ tìm chính xác
- -1: hàm Match sẽ tìm giá trị nhỏ nhất