Mình cảm ơn excel_lv1.5 rất nhiều. Thực sự mình rất mong bạn chỉ bảo giúp mình khi nào cần phải cài thêm điều kiện > 0 ở trong mảng (MMULT(N($AI$3=$B$4:$AE$19),N(ROW($1:$30)>0))>0)
Vì như 1 ví dụ khác khi mình thực hành Mmult mà không thêm >0 ở phía sau Mmul thì hàm vẫn cho ra kết quả đúng bình thường. (Bạn xem file Test Mmul mình gửi kèm nhé)
Ý mình là muốn biết khi nào thì thêm >0 khi nào không cần thêm
Một lần nữa rất cảm ơn bạn
Tôi mới nói làm biếng viết dài,nhưng giải thích bạn chỗ này. Trong file test này của bạn chỗ MMULT(N($A$15:$A$21=$D$14);1) không cần dùng mmult có thể viết thành $A$15:$A$21=$D$14 cũng được vì chỉ có một cột mà, chừng nào từ 2 cột trở lên hãy dùng MMULT. Xem như viết vậy cũng được, giờ phân tích ra từng phần:
MMULT(N($A$15:$A$21=$D$14);1) tạo ra mảng
{1;1;0;1;0;0;1}
ROW($1:$7)/MMULT(N($A$15:$A$21=$D$14)=
{1;2;3;4;5;6;7}/
{1;1;0;1;0;0;1} tạo ra mảng
{1;2;#DIV/0!;4;#DIV/0!;#DIV/0!;7}
Bạn dùng AGGREGATE(15;6;...;row(a1)) tức là tìm giá trị nhỏ nhất bỏ qua lỗi của mảng {1;2;#DIV/0!;4;#DIV/0!;#DIV/0!;} sẽ kết cho kết quả là
1
IFERROR(OFFSET($B$1,AGGREGATE(15,6,ROW($1:$7)/MMULT(N($A$15:$A$21=$D$14),1),ROW($A1)),),0)=
OFFSET(B1,1)
-----------------------------------
Trong file bài 1 thì
MMULT(N($AI$3=$B$4:$AE$19),N(ROW($1:$30)>0)) tạo ra mảng {0;0;0;0;0;0;4;0;0;12;0;0;0;1;6;0;0}
ROW($1:$17)/MMULT(N($AI$3=$B$4:$AE$19),N(ROW($1:$30)>0))={1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17}/{0;0;0;0;0;0;4;0;0;12;0;0;0;1;6;0;0}={#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;1.5;#DIV/0!;#DIV/0!;0.75;#DIV/0!;#DIV/0!;#DIV/0!;13;2.3333;#DIV/0!;#DIV/0!} (*)
Bạn dùng AGGREGATE(15;6;...;row(a1)) tức là tìm giá trị nhỏ nhất bỏ qua lỗi của mảng (*) sẽ kết cho kết quả là
0.75
=OFFSET($A$4,AGGREGATE(15,6,ROW($1:$17)/MMULT(N($AI$3=$B$4:$AE$19),N(ROW($1:$30)>0)),ROW($A1)),)=OFFSET($A$4,
0.75)=OFFSET($A$4,
0)="Nguyen Van A"
=OFFSET($A$4,AGGREGATE(15,6,ROW($1:$17)/MMULT(N($AI$3=$B$4:$AE$19),N(ROW($1:$30)>0)),ROW($A2)),)=OFFSET($A$4,
1.5)=OFFSET($A$4,
1)="Nguyen Van B"
Vì vậy nếu không thêm>0 ở MMULT(N($AI$3=$B$4:$AE$19),N(ROW($1:$30)>0)) thì kết quả sẽ bị sai, hãy chú ý ở những chỗ tôi tô màu, hãy phân tích lại với trường hợp ROW($1:$17)/(MMULT(N($AI$3=$B$4:$AE$19),N(ROW($1:$30)>0))
>0) bạn sẽ thấy rõ hơn!!!