AND: kiểm tra tất cả điều kiện cùng đúng, và một quy tắc tính toán dễ bị bỏ qua
Chia sẻ
"AND trả về TRUE khi tất cả điều kiện đưa vào đều đúng — một trong những hàm được dùng nhiều nhất bên trong IF. Excel không tính AND theo kiểu ngắn mạch như nhiều ngôn ngữ lập trình, nên mọi đối số đều được tính hết, kể cả khi không cần thiết."
AND là một trong những hàm luận lý được dùng nhiều nhất trong Excel — hầu như công thức IF nào cần kiểm tra nhiều điều kiện cùng lúc đều có AND nằm bên trong. Nhưng cách Excel tính AND có một điểm khác với trực giác lập trình thông thường, đáng để biết trước khi gặp phải.
Công thức trong bài dùng dấu phẩy (,); đổi sang dấu chấm phẩy (;) nếu Excel của bạn cấu hình theo vùng miền khác.
Cú pháp
=AND(dieu_kien1, dieu_kien2, ...)
Trả về TRUE khi tất cả điều kiện đều đúng, FALSE nếu có bất kỳ điều kiện nào sai. Nhận tối đa 255 điều kiện cùng lúc.
Ứng dụng: duyệt đơn hàng cần thoả nhiều tiêu chí cùng lúc
=IF(AND(DiemTinDung>=700,ThuNhap>=10000000),"Duyệt","Từ chối")
Đơn hàng chỉ được duyệt khi cả hai điều kiện đều đúng — điểm tín dụng đạt ngưỡng và thu nhập đạt ngưỡng. Thiếu một trong hai, AND trả về FALSE, IF cho ra "Từ chối".
So sánh với việc lồng nhiều lớp IF
=IF(DiemTinDung>=700,IF(ThuNhap>=10000000,"Duyệt","Từ chối"),"Từ chối")
Cùng một logic, nhưng viết bằng IF lồng hai lớp phải lặp lại "Từ chối" ở cả hai nhánh — dùng AND gộp điều kiện lại một chỗ, công thức ngắn hơn và không lặp lại kết quả.
Điểm dễ gây bất ngờ: AND không tính theo kiểu ngắn mạch
Nhiều ngôn ngữ lập trình dừng đánh giá ngay khi gặp điều kiện FALSE đầu tiên (ngắn mạch — "short-circuit"), không cần tính tiếp các điều kiện còn lại. Excel không làm vậy — AND luôn tính toán toàn bộ các đối số trước, bất kể đối số nào đã là FALSE:
=AND(B2<>0,C2/B2>10)
Nếu B2 bằng 0, về mặt logic điều kiện đầu B2<>0 đã là FALSE, tưởng như không cần tính C2/B2 nữa. Nhưng Excel vẫn tính C2/B2 để đưa vào AND, và phép chia cho 0 này báo lỗi #DIV/0! — lỗi đó lan ra toàn bộ công thức AND, bất kể điều kiện đầu đã đủ để biết kết quả cuối cùng là FALSE.

Cách tránh: lồng IF để chặn phép tính có nguy cơ lỗi trước, chỉ tính nó khi điều kiện đầu đã an toàn:
=IF(B2<>0,AND(B2<>0,C2/B2>10),FALSE)Tổng kết
AND trả về TRUE khi tất cả điều kiện đều đúng, dùng phổ biến nhất để gộp nhiều tiêu chí vào một IF thay vì lồng nhiều lớp. Cần nhớ Excel tính hết toàn bộ đối số của AND, không ngắn mạch như nhiều ngôn ngữ lập trình — nếu một đối số có nguy cơ gây lỗi (chia cho 0, tham chiếu rỗng), cần chặn bằng IF riêng trước khi đưa vào AND.
Đọc tiếp trong cùng cụm bài: OR — chỉ cần một điều kiện đúng là đủ.
Mục lục
Muốn làm chủ Excel?
Tham gia khóa học E-Learning của Trà Đá Data để được hướng dẫn chi tiết từ A-Z với Case Study thực tế.
Tìm hiểu ngayBài viết liên quan
Khám phá thêm các bài viết cùng chủ đề
OR: chỉ cần một điều kiện đúng là đủ
OR trả về TRUE khi có ít nhất một điều kiện đúng — dùng để gắn cờ ngoại lệ hoặc gộp nhiều trường hợp chấp nhận được vào một công thức duy nhất, thay vì lồng nhiều lớp IF lặp lại.
NOT: đảo ngược một giá trị luận lý, đôi khi diễn đạt rõ ý hơn viết điều kiện thuận
NOT đảo ngược TRUE thành FALSE và ngược lại. Đơn giản nhưng đôi khi giúp công thức đọc rõ ý hơn hẳn — nhất là khi ghép với các hàm ISBLANK, ISERROR vốn đã mang sẵn ý phủ định trong tên gọi.
TRUE, FALSE: hai hàm không đối số, và vì sao gõ trong ngoặc kép lại thành một thứ khác hẳn
TRUE() và FALSE() là hai hàm ngắn nhất Excel có — không nhận đối số nào, chỉ trả về đúng một giá trị luận lý cố định. Bài này cũng giải thích vì sao gõ \"TRUE\" trong dấu ngoặc kép lại tạo ra một thứ hoàn toàn khác, dùng ISLOGICAL để phân biệt.
Bình luận
Đăng nhập để tham gia bình luận
Đăng nhậpNhận bài viết mới nhất
Đăng ký để nhận thông báo khi có bài viết mới. Không spam, chỉ kiến thức chất lượng.