Tại sao dùng "hàm OR" trong "hàm mảng" cho kết quả không đúng? (1 người xem)

Liên hệ QC

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

Vậy thì bạn lưu ý, hàm OR không làm theo nguyên tắc công thức mảng đâu,

Nó sẽ phá mảng và tính toán OR hết cho từng phần tử trong mảng

Cứ thử ví dụ sau sẽ hiểu
Gõ 3 sô 1 2 0 lần lượt vào 3 cells: A1 A2 A3

rồi tại 1 cell kết quả gõ công thức sau
=IF(OR(A1:A3=0,A1:A3=99),A1:A3,-999)

Bôi đen công thức rồi bấm F9 xem kết quả thế nào bạn tự suy luận nhé,
-------------
Sau đó gõ số liệu mới
1 2 5
thử tiếp xem sao

rui sẽ hiểu


Cảm ơn bạn!

Có lẽ t đã hiểu thêm được "đôi chút" về mảng rồi :D

bấm F9 xem kết quả thế nào

Cách này rất hay! hihi

 
Cảm ơn thầy ptm0412
(em mới vào diễn đàn nên chưa biết nhiều về thầy và các anh chị, nếu có gì sai sót trong cách xưng hô, mong anh chị và thầy lượng thứ!)

Em đã đọc phần phân tích trên của thầy, có lẽ e đã hiểu ra được một số thứ quan trọng rồi ạ :), cảm ơn thầy nhiều ạ!
 
Lần chỉnh sửa cuối:
Em đồng ý đúng là C2:C11="BN" trả về 1 mảng.
Nhưng ý em là khi lồng vào OR(C2:C11="BN",...) thì C2:C11="BN" trả về giá trị đơn.

Câu phát biểu đúng là: Hàm Or luôn trả về giá trị đơn, dù cho C2:C11="BN" trả về giá trị mảng.

Xem hình trong bài trên thì biết.
 
Bài này có nhiều cách làm: Có thể dùng SUMIF, SUMPRODUCT... nhưng nếu cố tình muốn dùng công thức mảng thì cũng không thể dùng OR hay AND
Với dạng bài toán tính tổng hoặc đếm nhiều điều kiện, OR sẽ được thay bằng dấu cộngAND được thay bằng dấu nhân
Vậy nên, nếu muốn dùng công thức mảng thì phải thế này:
Mã:
=SUM(IF((C2:C11="Bào Ngư")[COLOR=#ff0000]+[/COLOR](C2:C11="Nghêu"),G2:G11,""))
không có vụ OR, AND gì ở đây cả
Công thức trên, nếu biến đổi chút cũng có thể viết thành:
Mã:
=SUM(((C2:C11="Bào Ngư")[COLOR=#ff0000]+[/COLOR](C2:C11="Nghêu"))*(G2:G11))
Rồi thay SUM thành SUMPRODUCT thì:
Mã:
=SUMPRODUCT(((C2:C11="Bào Ngư")[COLOR=#ff0000]+[/COLOR](C2:C11="Nghêu"))*(G2:G11))
Công thức cuối cùng được cái chỉ cần Enter (khỏi phải bấm tổ hợp phím Ctrl + Shift + Enter)
-------------------------
Tóm lại, chỉ cần nhớ dòng màu đỏ ở trên
 
[URL="http://www.giaiphapexcel.com/forum/member.php?61139-ndu96081631"]ndu96081631 : Bạn này nói đã đủ tất cả ý rồi đấy. Đúng là khi rớ vào hàm mảng thì OR và AND nó ko còn được xài nữa mà lúc dó được thay bằng dấu + và dấu nhân. Tuy nhiên mình xin bổ sung 1 điểm nho nhỏ là điều này chỉ đúng với việc tạo ra mảng true, false ko trùng nhau (Tức ko có true+true) hay nói một cách dễ hiểu hơn là các bạn chỉ nên áp dụng cho trường hợp cột điều kiện là cột đơn, trường hợp điều kiện nằm ở 2 cột khác nhau thì hãy cẩn thận với phép nhân vì có thể xảy ra true+true=2.[/URL]
 
Web KT

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

Back
Top Bottom