Noname > 20-05-21, 06:02 PM
ongke0711 > 20-05-21, 10:17 PM
Noname > 24-05-21, 12:10 PM
(20-05-21, 10:17 PM)ongke0711 Đã viết: Theo tôi suy luận thì lỗi này do cách mà hàm SUMIF() và VLOOKUP() đối xử khác nhau với dấu "~".
- Đối với VLOOKUP thì nó thuộc về tìm kiếm nên khi chuỗi điều kiện có dấu "~" nó xem như một ký tự đại diện (wildcards) như các ký tự "*", "?" v.v.. Vì vậy khi tìm chuỗi "KT 3~4" --> tìm "KT3" + chính xác ký tự "4" <=>Tìm chuỗi "KT34" mà chuỗi này không có trong bảng tham chiếu.
- Đối với SUMIF thì nó như so sánh chính xác chuỗi chứ không tìm kiếm với Wildcards. Nếu chuỗi "KT 3~4" trong Range 1 bằng chuỗi "KT 3~4" trong Range 2 thì lấy SUM.
Tận dụng việc VLOOKUP xem "~" như ký tự đại diện - tìm chính xác ký tự đứng sau nó. Ta dùng hàm SUBTITUTE thay thế nó
Vd: =VLOOKUP(SUBSTITUTE(B13,"~","~~"),$B$3:$C$7,2,0)
Đây chỉ là suy luận cá nhân thôi nhé chứ không đủ trình để phân tích Source code của 2 hàm trên với C++ để xem nó hoạt động như thế nào.