Hàm AND trong IF không hoạt động.

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

htin1997

Dậm chân tại chỗ là đi lùi.
Tham gia
12/10/20
Bài viết
317
Được thích
272
Xin chào GPE,

Em muốn lọc dữ liệu theo 2 điều kiện nhưng khi đưa biểu thức AND vào trong hàm IF thì nó không hoạt động.
Ví dụ:
Mã:
=IF(AND(B3:B32>3,B3:B32<7),"",B3:B32)
thì không dùng được, mà phải:
Mã:
=IF(B3:B32>3,IF(B3:B32<7,"",B3:B32),B3:B32)

Mong GPE giải đáp tại sao nó không hoạt động như hàm thứ 2?

Ps: Em chỉ thắc mắc thêm chứ em có cách giải quyết như hàm thứ 2 hoặc hàm FILTER rồi.
 
Xin chào GPE,

Em muốn lọc dữ liệu theo 2 điều kiện nhưng khi đưa biểu thức AND vào trong hàm IF thì nó không hoạt động.
Ví dụ:
Mã:
=IF(AND(B3:B32>3,B3:B32<7),"",B3:B32)
thì không dùng được, mà phải:
Mã:
=IF(B3:B32>3,IF(B3:B32<7,"",B3:B32),B3:B32)

Mong GPE giải đáp tại sao nó không hoạt động như hàm thứ 2?

Ps: Em chỉ thắc mắc thêm chứ em có cách giải quyết như hàm thứ 2 hoặc hàm FILTER rồi.
Hàm and bạn dùng ở công thức đầu nó vẫn hoạt động. Nhưng nếu tất cả các ô từ b3 đến b32 đều lớn hơn 3 thì trả về true, còn lại trả về false.
 
Trong công thức của mình mà có một mảng thì việc đầu tiên là:
1. xét xem nó có bị tình trạng implicit intersection hay không. Điểm này GPE rất yếu, nên bạn phải tự tìm hiểu lây. Toi có viết vài bài về cái này rồi, không muốn nhắc lại.
2. thử dùng Ctrl+Shift+Enter.
 
.
2. thử dùng Ctrl+Shift+Enter.
Ctrl Shift Enter không hoạt động. Excel 365 (tác giả đã dùng hàm filter) nên kết quả trả về nguyên mảng, y như cũ. Trong khi phép nhân mảng thì ra kết quả (cột F)

1678867355393.png

nếu tất cả các ô từ b3 đến b32 đều lớn hơn 3 thì trả về true, còn lại trả về false.
Tôi thấy không đúng: Tất cả đều lớn hơn 3, tất cả đều False

1678868111602.png
 
Lần chỉnh sửa cuối:
Ctrl Shift Enter không hoạt động. Excel 365 (tác giả đã dùng hàm filter) nên kết quả trả về nguyên mảng, y như cũ. Trong khi phép nhân mảng thì ra kết quả (cột F)

View attachment 287615


Tôi thấy không đúng: Tất cả đều lớn hơn 3, tất cả đều False

View attachment 287616
Bác thử sửa <7 thành <8 xem sao. Nãy em quên không nói điều kiện thứ 2 của hàm And trong bài của #1.
 
Bác thử sửa <7 thành <8 xem sao. Nãy em quên không nói điều kiện thứ 2 của hàm And trong bài của #1.
Nếu sửa <8 thì tất cả thành "", thì câu phát biểu của bạn đúng 1 nửa
"nếu tất cả các ô từ b3 đến b32 đều lớn hơn 3 thì trả về true, còn lại trả về false." (thêm "và đều nhỏ hơn 8")
Nhưng như vậy cũng không gọi là hàm And "có hoạt động"
Có hoạt động thì nó phải trả về kết quả như cột F ở hình bài trên.
 
Nếu sửa <8 thì tất cả thành "", thì câu phát biểu của bạn đúng 1 nửa
"nếu tất cả các ô từ b3 đến b32 đều lớn hơn 3 thì trả về true, còn lại trả về false." (thêm "và đều nhỏ hơn 8")
Nhưng như vậy cũng không gọi là hàm And "có hoạt động"
Có hoạt động thì nó phải trả về kết quả như cột F ở hình bài trên.
Thì nó vẫn hoạt động đúng theo logic của nó mà bác, chỉ cần có 1 giá trị false là nó trả về false. Nó tương đương với and(b3>3,b4>3...,b32>3,b3<8,...b32<8).
Chỉ là nó không hoạt động như cách mà #1 nghĩ thôi.
 
Xin chào GPE,

Em muốn lọc dữ liệu theo 2 điều kiện nhưng khi đưa biểu thức AND vào trong hàm IF thì nó không hoạt động.
Ví dụ:
Mã:
=IF(AND(B3:B32>3,B3:B32<7),"",B3:B32)
thì không dùng được, mà phải:
Mã:
=IF(B3:B32>3,IF(B3:B32<7,"",B3:B32),B3:B32)

Mong GPE giải đáp tại sao nó không hoạt động như hàm thứ 2?

Ps: Em chỉ thắc mắc thêm chứ em có cách giải quyết như hàm thứ 2 hoặc hàm FILTER rồi.
Hàm 1 xét true false cho tất cả các dòng -> true hoặc false.
Hàm 2 xét true false cho từng dòng -> true hoặc false (1), true hoặc false (2), true hoặc false (3),...
Đây là kỹ thuật đoán mò.
 
Thì nó vẫn hoạt động đúng theo logic của nó mà bác, chỉ cần có 1 giá trị false là nó trả về false. Nó tương đương với and(b3>3,b4>3...,b32>3,b3<8,...b32<8).
Chỉ là nó không hoạt động như cách mà #1 nghĩ thôi.
Không đúng lắm. Phép nhân như cột F chấp nhận mảng, vì nó nhân riêng từng cặp True/ False, mỗi giá trị trong mảng là 1 cặp. Đó là cách công thức mảng hoạt động.
Hàm And không chấp nhận tham số mảng.
Theo cách bạn giải thích thì khi đưa mảng vào nó không And từng cặp mà and hết các giá trị của điều kiện 1, and hết các giá trị của điều kiện 2, rồi cả 2 lại and với nhau. Lọt vào bất kỳ 1 cái false nào ở điều kiện nào thì kết quả cuối bị false hết.

Dù là vậy đi nữa thì cũng không gọi là "hoạt động theo công thức mảng", chỉ là hoạt động theo And nhiều phần tử.
Nói thêm:
Do Excel 2021 và Excel 365 cho phép công thức trả về mảng, nên các công thức đơn giản như Vlookup cũng trả về được nhiều hơn 1 giá trị:

Vlookup 2 giá trị 1 lúc:

1678886310966.png

Vlookup 1 giá trị ra 2 cột 1 lúc:

1678886345221.png

Ta thấy rằng tính chất mảng của công thức là nó tính lần lượt riêng từng phần tử một, mỗi phần tử cho 1 giá trị. Chứ không tính gộp như And mà bạn nói.
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom