Tại sao kết quả hiện ra trên màn hình và ấn F9 khác nhau (tìm max cho 1 sản phẩm) (1 người xem)

Người dùng đang xem chủ đề này

trungvdb

Thành viên thường trực
Tham gia
22/8/08
Bài viết
374
Được thích
171
Nghề nghiệp
Tài chính
Bài toán của em là: Tìm mã hợp đồng (mã HĐ) của loại sản phẩm máy tính có thành tiền lớn nhất.

Giải pháp công thức của em tại ô J3 như sau:
PHP:
INDEX(B3:B12;MATCH(MAX((LEFT($B$3:$B$12;2)="MT")*($H$3:$H$12));H3:H12;0);1)

Nhưng không hiểu sao cho kết quả không đúng (xin gửi file đính kèm).

Rất mong các anh/chị, các thày chỉ giúp nguyên nhân tại sao?
 

File đính kèm

Công thức mảng nhấn Ctrl+Shift+Enter
 
Bài toán của em là: Tìm mã hợp đồng (mã HĐ) của loại sản phẩm máy tính có thành tiền lớn nhất.

Giải pháp công thức của em tại ô J3 như sau:
PHP:
INDEX(B3:B12;MATCH(MAX((LEFT($B$3:$B$12;2)="MT")*($H$3:$H$12));H3:H12;0);1)

Nhưng không hiểu sao cho kết quả không đúng (xin gửi file đính kèm).

Rất mong các anh/chị, các thày chỉ giúp nguyên nhân tại sao?

Công thức mảng nhấn Ctrl+Shift+Enter
Đúng là tác giả quên Ctrl+Shift+Enter... nhưng cho dù nhớ thì công thức trên cũng... trật lất
Thử cho cell H6 = 10000000 sẽ biết liền
 
Đúng là tác giả quên Ctrl+Shift+Enter... nhưng cho dù nhớ thì công thức trên cũng... trật lất
Thử cho cell H6 = 10000000 sẽ biết liền

Thưa thày em nghĩ hàm kết quả hàm max này ra giá trị đơn chứ tại sao lại là hàm mảng được
PHP:
MAX((LEFT($B$3:$B$12;2)="MT")*($H$3:$H$12))

Với bài toán này, thì cách làm như thế nào là nhanh nhất (không kể đặt Name), đồng thời chỉ cần công thức mà không phải là công thức mảng (gõ trực tiếp không cần Shift+Ctrl+Enter).
 
Thưa thày em nghĩ hàm kết quả hàm max này ra giá trị đơn chứ tại sao lại là hàm mảng được
PHP:
MAX((LEFT($B$3:$B$12;2)="MT")*($H$3:$H$12))

Với bài toán này, thì cách làm như thế nào là nhanh nhất (không kể đặt Name), đồng thời chỉ cần công thức mà không phải là công thức mảng (gõ trực tiếp không cần Shift+Ctrl+Enter).

Không Ctrl + Shift + Enter sao mà ra? Đoạn (LEFT($B$3:$B$12;2)="MT")*($H$3:$H$12) chính là mảng cơ mà
Nói thêm: Ngay cả công thức tính MAX này cũng sai về mặt nguyên lý (bạn tự tìm các bài viết về MAX có điều kiện sẽ biết)
 
Bài này còn cách khác bằng công thức không thày.
 
Bài này còn cách khác bằng công thức không thày.

Xen vào một tí. Hơi trơ trẽn chút.
---------
Cách bình thường?

Mã:
=LOOKUP(2;1/((LEFT($B$3:$B$12;2)="MT")*($H$3:$H$12)=LARGE((LEFT($B$3:$B$12;2)="MT")*($H$3:$H$12);1));$B$3:$B$12)

Cách quái đản?

Mã:
=INDEX($B$1:$B$12;MOD(LARGE((LEFT($B$3:$B$12;2)="MT")*(COUNTIF($H$3:$H$12;"<"&$H$3:$H$12)*10000+ROW($B$3:$B$12));1);10000))

Cả 2 kết thúc bằng Ctrl + Shift + Enter

Tôi viết thế thôi chứ chưa suy nghĩ kỹ lưỡng.
 
Xen vào một tí. Hơi trơ trẽn chút.
---------
Cách bình thường?

Mã:
=LOOKUP(2;1/((LEFT($B$3:$B$12;2)="MT")*($H$3:$H$12)=LARGE((LEFT($B$3:$B$12;2)="MT")*($H$3:$H$12);1));$B$3:$B$12)

Cách quái đản?

Mã:
=INDEX($B$1:$B$12;MOD(LARGE((LEFT($B$3:$B$12;2)="MT")*(COUNTIF($H$3:$H$12;"<"&$H$3:$H$12)*10000+ROW($B$3:$B$12));1);10000))

Cả 2 kết thúc bằng Ctrl + Shift + Enter

Tôi viết thế thôi chứ chưa suy nghĩ kỹ lưỡng.

Em phát hiện ra rồi: Bài này cũng có thể làm bằng hàm Dget.
 

Bài viết mới nhất

Back
Top Bottom