DGET
DGET(bảng, cột_cần_lấy, vùng_điều_kiện)Lấy ra giá trị của MỘT bản ghi duy nhất thoả điều kiện. Nét riêng không hàm tra cứu nào khác có: khớp nhiều hơn một dòng thì nó BÁO LỖI thay vì lặng lẽ lấy dòng đầu tiên. Vì thế DGET đáng dùng như công cụ phát hiện trùng hơn là một hàm tra cứu.
Các đối số
| Đối số | Bắt buộc? | Ý nghĩa |
|---|---|---|
| bảng | Bắt buộc | Cả bảng dữ liệu kèm dòng tiêu đề. |
| cột_cần_lấy | Bắt buộc | Tên cột trong ngoặc kép hoặc số thứ tự cột trong bảng. |
| vùng_điều_kiện | Bắt buộc | Bộ điều kiện phải hẹp tới mức chỉ còn ĐÚNG MỘT dòng khớp. Khớp 0 dòng ra #VALUE!, khớp từ 2 dòng trở lên ra #NUM!. |
Trả về gì
Giá trị của ô nằm ở cột đã chọn, trên dòng duy nhất khớp điều kiện. #VALUE! nếu không dòng nào khớp, #NUM! nếu có từ hai dòng trở lên.
Ví dụ
=DGET(A1:F500, "Đơn giá", H1:H2)H1 ghi Mã hàng, H2 ghi VT-0271 — lấy đơn giá của đúng mã đó
Kết quả: 850.000
=DGET(A1:F500, "Đơn giá", H1:H2)Vẫn công thức đó, nhưng danh mục đang bị nhập trùng mã VT-0271 hai lần
Kết quả: #NUM!
=IF(ISERROR(DGET(A1:F500, "Mã hàng", H1:H2)), "KIỂM TRA: thiếu hoặc trùng mã", "OK")Ô chốt soát danh mục trước khi chạy VLOOKUP cho cả bảng
Kết quả: KIỂM TRA: thiếu hoặc trùng mã
Lưu ý khi dùng
- Cái #NUM! ở ví dụ hai là TÍNH NĂNG chứ không phải lỗi cần che. VLOOKUP và XLOOKUP gặp mã trùng thì im lặng lấy dòng đầu; DGET nói thẳng ra.
- Vì bắt được trùng nên DGET hợp nhất để soát BẢNG DANH MỤC — mã hàng, mã khách, mã tài khoản, nơi mỗi mã lẽ ra chỉ được có một dòng.
- Cần lấy dữ liệu hàng loạt cho từng dòng thì vẫn dùng VLOOKUP hoặc XLOOKUP; DGET dành cho ô tra lẻ và ô kiểm tra.
Bẫy hay dính
Bọc IFERROR quanh DGET cho gọn mắt là vứt đi đúng cái giá trị riêng của hàm: trùng mã và không tìm thấy mã bị quy về cùng một dòng chữ, hết đường phân biệt hai chuyện hoàn toàn khác nhau. Muốn che thì che riêng #VALUE! và giữ #NUM! lại để còn nhìn thấy.