EzTech

DGET

Cơ sở dữ liệuMọi phiên bản
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ảngBắt buộcCả bảng dữ liệu kèm dòng tiêu đề.
cột_cần_lấyBắt buộcTên cột trong ngoặc kép hoặc số thứ tự cột trong bảng.
vùng_điều_kiệnBắt buộcBộ đ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.

Hàm liên quan

Chat ZaloGọi điệnMessengerTìm đường