Có cách nào để thiết lập hàm tự động tìm thông số "lookup_value"?

Dùng hàm VLOOKUP, khi thông số "lookup_value" không có thì kết quả trả về là: #N/A. Có cách nào để thiết lập hàm tự động tìm thông số "lookup_value" ở một sheet khác khi không tìm thấy ở sheet hiện hành?
Con Nan
Con Nan
Trả lời 15 năm trước
Hàm VLookup (hay bất kỳ hàm thư viện nào khác) đều có đặc tả chức năng rõ ràng và xác định, người dùng phải hiểu và sử dụng đúng theo đặc tả của hàm. Bạn tra cứu tài liệu chỉ dẫn về hàm VLookup thì sẽ biết rõ rằng nếu dò tìm không có (và nếu tham số thứ tư của hàm là False) thì hàm sẽ trả về mã lỗi "#N/A". Nếu muốn tìm tiếp 1 hay nhiều sheet khác khi chưa tìm được trong sheet hiện hành, bạn có thể viết 1 hàm user-defined cho riêng mình. Thí dụ hàm MyVLookup do chúng tôi viết như sau: 'Hàm MyVlookup có danh sách tham số y như VLookup Public Function MyVLookup(val As Variant, r As Range, c As Integer, flag As Boolean) As Variant 'gọi VLookup MyVLookup = Application.VLookup(val, r, c, flag) 'kiểm tra xem có lỗi không, nếu có trả về 0 If IsError(MyVLookup) Then MyVLookup = 0 End Function Nếu bạn đặt hàm trên trong 1 file add-ins (thí dụ file *.xla) rồi add vào Excel thì bạn có thể gọi nó ở bất kỳ tài liệu Excel nào. Còn nếu bạn đặt hàm trong 1 module VBA trong file Excel của bạn thì chỉ có file Excel đó dùng được hàm trên thôi. Bảng dữ liệu Excel có 3 mã hàng: A, B, C. Mỗi mã hàng có 3 loại hàng (1, 2, 3). Cụ thể hàng A1 giá 5000, A2 giá 4500, A3 giá 4000, B1 giá 3000, B2 giá 2500, B3 giá 2000, C1 giá 1000, C2 giá 500, C3 giá 100. Cột A2 có dữ liệu ngẫu nhiên như A1, B2, C3, A3, C3, A1, B1... Cần tính giá trị cột B2 dựa vào bảng dữ liệu và cột A2. Vấn đề mà bạn cần giải quyết có thể giải quyết bằng các thao tác sau: • nhập vào bảng tra, bảng này có 9 hàng, mỗi hàng có 2 cột: cột mã hàng và cột giá cả. Giả sử bạn nhập bảng này vào vùng cell từ E1 đến F9. • nhập danh sách mã hàng cần tính tiền vào 1 cột nào đó, giả sử cột A từ hàng 1. • nhập công thức tính tiền như sau vào từng cell ở cột tính tiền, thí dụ cột B: =VLOOKUP(A1,$E$1:$F$9,2) Lưu ý chỉ cần nhập công thức trên vào cell đầu tiên, sau đó dùng chức năng Copy/Paste để dán công thức vào các cell còn lại của cột tính tiền.