Chào mọi người,
Mình làm kế toán và thường xuyên phải dùng VLOOKUP để tra cứu số liệu từ bảng này sang bảng khác. Thông thường, mình hay dùng tham số thứ 4 (range_lookup) là FALSE để tìm kiếm chính xác.
Tuy nhiên, có những lúc mình muốn tìm kiếm một giá trị gần đúng, ví dụ như tra cứu mức lương theo bậc lương hoặc tra cứu thuế suất theo doanh thu. Mặc định, nếu để range_lookup là TRUE (hoặc bỏ trống), VLOOKUP sẽ tìm kiếm gần đúng nhưng có một yêu cầu là bảng tra cứu phải được sắp xếp theo thứ tự tăng dần của cột đầu tiên. Điều này đôi khi khá bất tiện nếu bảng dữ liệu của mình không được sắp xếp sẵn.
Hôm nay, mình muốn chia sẻ một mẹo nhỏ để VLOOKUP có thể tìm kiếm gần đúng mà không cần sắp xếp bảng.
Giả sử bạn có bảng dữ liệu lương và muốn tra cứu mức lương cho một nhân viên dựa trên bậc lương của họ. Bảng tra cứu của bạn trông như sau:
Bậc lương | Mức lương
1 | 5,000,000
3 | 7,000,000
2 | 6,000,000Nếu dùng VLOOKUP(Bậc_cần_tra, Bảng_tra_cứu, 2, TRUE) trực tiếp thì kết quả sẽ sai vì bảng chưa sắp xếp.
Cách làm của mình là:
- Tạo một cột phụ trong bảng tra cứu, ví dụ cột C.
- Trong cột C, dùng công thức
=IF(Bậc_lương_hiện_tại<>MIN(Bậc_lương_của_cột), Bậc_lương_hiện_tại, MIN(Bậc_lương_của_cột)). Công thức này sẽ đảm bảo rằng nếu bậc lương là giá trị nhỏ nhất trong danh sách, nó sẽ giữ nguyên, còn nếu không phải thì nó sẽ lấy chính nó. Nói cách khác, nó sẽ xử lý các giá trị bị thiếu trong chuỗi sắp xếp. - Sắp xếp lại bảng tra cứu chỉ dựa trên cột phụ này theo thứ tự tăng dần.
- Bây giờ bạn có thể dùng
VLOOKUPvới tham số thứ 4 làTRUEđể tra cứu gần đúng mà không sợ sai lệch.
Cách này tuy hơi thủ công một chút nhưng giúp mình xử lý được nhiều trường hợp cần tra cứu gần đúng mà không muốn ảnh hưởng đến cấu trúc dữ liệu gốc. Có ai có cách nào hay hơn không, chia sẻ với mình nhé!