Menu

Hàm IF trong Excel: công thức, ví dụ và lỗi thường gặp

=IF(B2>=50,"Pass","Fail") kiểm tra B2 có từ 50 trở lên không, đúng thì trả về Pass, sai thì trả về Fail. Tìm hiểu cú pháp IF, IF với văn bản, IF với phép tính, IF khi ô trống và những lỗi khiến IF trả về kết quả sai.

Mọi bảng tính trên trang này đều trực tiếp: đổi một số hoặc công thức, bảng tính sẽ tự tính lại.

=IF(B2>=50,"Pass","Fail") kiểm tra điểm ở B2 có từ 50 trở lên hay không. Nếu có, ô hiện Pass; nếu không, ô hiện Fail.

Đạt hay trượt
C2
ABC
1StudentScoreResult
2Ana72Pass
3Ben45Fail
4Chloe50Pass
5Dan38Fail
6Eve91Pass
Bấm vào một ô để xem công thức. Đổi một số hoặc công thức, bảng tính sẽ tự tính lại.

Bấm vào C2 để xem công thức, rồi đổi điểm của Ben ở B3 thành 60: kết quả của anh ấy chuyển thành Pass. Chloe được đúng 50, và >= nghĩa là "từ 50 trở lên", nên cô ấy đạt. Nếu dùng > thì cô ấy sẽ trượt.

Cú pháp hàm IF

=IF(logical_test, value_if_true, value_if_false)
  • logical_test là bất kỳ phép so sánh hay công thức nào cho ra TRUE hoặc FALSE: B2>=50, C2="Paid", D2<TODAY().
  • value_if_true là nội dung ô hiển thị khi điều kiện là TRUE.
  • value_if_false là nội dung hiển thị trong trường hợp còn lại. Đối số này không bắt buộc: bỏ nó đi thì ô hiện FALSE khi điều kiện sai. Giữ dấu phẩy nhưng để trống đối số, =IF(B2>=50,"Pass",), thì ô hiện 0.

Mỗi kết quả có thể là văn bản trong dấu ngoặc kép ("Pass"), một số (0), một tham chiếu ô (C2) hoặc một công thức khác. Văn bản không có dấu ngoặc kép bị đọc thành tên, nên =IF(B2>=50,Pass,Fail) cho ra #NAME?.

Các toán tử so sánh là = (bằng), <> (khác), >, <, >= và <=. Khi Excel được đặt theo ngôn ngữ dùng dấu phẩy thập phân, các đối số được ngăn cách bằng dấu chấm phẩy: =IF(B2>=50;"Pass";"Fail"). Google Sheets dùng cùng hàm IF với cùng các đối số.

Hàm IF với văn bản

Điều kiện có thể so sánh một ô với văn bản. Văn bản đặt trong dấu ngoặc kép, và phép so sánh không phân biệt chữ hoa chữ thường.

Miễn phí giao hàng cho khu vực North
C2
ABCD
1OrderRegionFree deliveryExact case
21001NorthYesYes
31002SouthNoNo
41003northYesNo
51004EastNoNo
61005NORTHYesNo
Bấm vào một ô để xem công thức. Đổi một số hoặc công thức, bảng tính sẽ tự tính lại.

Cột C ghi Yes cho North, north và NORTH, vì = không quan tâm kiểu chữ. Khi kiểu chữ quan trọng (mã sản phẩm, mật khẩu), hãy kiểm tra bằng EXACT như ở cột D: chỉ hàng ghi đúng North mới được Yes.

Để kiểm tra mọi thứ trừ một giá trị, dùng <>: =IF(B2<>"North","Standard","Free"). Để kiểm tra một ô có chứa một từ ở đâu đó bên trong hay không, IF cần thêm SEARCH, được trình bày ở trang các hàm IS.

Hàm IF với phép tính

Kết quả của IF không nhất thiết là văn bản. Ở đây mỗi nhân viên bán hàng được thưởng 5% trên doanh số trên 1.000, và không có gì nếu thấp hơn:

Thưởng khi trên 1.000
C2
ABC
1RepSalesBonus
2Ana$1,400$70
3Ben$800$0
4Chloe$1,000$0
5Dan$2,600$130
6Eve$1,150$58
Bấm vào một ô để xem công thức. Đổi một số hoặc công thức, bảng tính sẽ tự tính lại.

Ana được 70(570 (5% của 1.400) và Ben được 0. Chloe bán đúng 1.000, mà điều kiện là "lớn hơn 1.000", nên cô ấy cũng được 0.Đổico^ngthứcởC2thaˋnh‘=IF(B2>=1000,B2∗50. Đổi công thức ở C2 thành `=IF(B2>=1000,B2*5%,0)` và tiền thưởng của cô ấy thành 50.

Điều kiện cũng có thể so sánh hai ô, =IF(B2>C2,"Over target","Under target"), hoặc một ô với một phép tính, =IF(B2>AVERAGE($B$2:$B$6),"Above average","").

Hàm IF khi ô trống

B2="" là TRUE khi B2 trống. Dùng nó để bỏ qua các hàng chưa có dữ liệu, để cột công thức không bị toàn số 0:

Bỏ qua hàng chưa có số lượng
D2
ABCDE
1ItemQtyPriceTotalStatus
2Pens10$1.50$15.00Ordered
3Paper$4.20Not ordered
4Ink2$18.00$36.00Ordered
5Tape$2.80Not ordered
6Clips5$0.90$4.50Ordered
Bấm vào một ô để xem công thức. Đổi một số hoặc công thức, bảng tính sẽ tự tính lại.

"" (hai dấu ngoặc kép không có gì ở giữa) là văn bản rỗng, nên Paper và Tape không hiện gì ở cột D. Nhập số lượng vào B3 và tổng tiền xuất hiện. Cột E kiểm tra điều ngược lại bằng <>"", tức "không trống".

Một ô chứa ="" trông như trống nhưng với ISBLANK thì không phải ô trống. Sự khác biệt này quan trọng khi công thức khác đọc cột đó, ví dụ COUNTA vẫn đếm ô ấy.

Hàm IF với hai điều kiện

IF chỉ nhận một điều kiện. Để yêu cầu hai điều cùng đúng, đặt AND vào điều kiện; để chấp nhận một trong hai, dùng OR:

=IF(AND(B2>=50,C2>=50),"Pass","Fail")
=IF(OR(B2="North",B2="South"),"Zone 1","Zone 2")

Cả hai được giải thích kèm ví dụ trực tiếp ở trang AND và OR. Với ba kết quả trở lên (A, B, C, F), hãy lồng một IF vào IF khác (IF lồng nhau) hoặc dùng IFS.

Luyện tập: có cần nhập thêm hàng không

Kiểm tra nhập hàng
D2
ABCD
1ItemStockMinimumStatus
2Pens1220
3Paper3025
4Tape1512
5Ink810
Bấm vào một ô để xem công thức. Đổi một số hoặc công thức, bảng tính sẽ tự tính lại.

Đến lượt bạn: Trong D2, hiện "Reorder" khi tồn kho ở B2 thấp hơn mức tối thiểu ở C2, ngược lại hiện "OK". Công thức được kéo xuống đến D5.

Thưởng 10%
C2
ABC
1RepSalesBonus
2Ana$1,250
3Ben$600
4Chloe$2,300
Bấm vào một ô để xem công thức. Đổi một số hoặc công thức, bảng tính sẽ tự tính lại.

Đến lượt bạn: Trong C2, trả về tiền thưởng bằng 10% doanh số ở B2 khi doanh số trên 1000, ngược lại trả về 0. Công thức được kéo xuống đến C4.

Các lỗi thường gặp với hàm IF

Đặt số trong dấu ngoặc kép. =IF(B2>"50","High","Low") so sánh B2 với văn bản "50", không phải số 50. Excel xếp mọi số đứng trước mọi văn bản, nên điều kiện là FALSE với bất kỳ số nào ở B2 và công thức luôn ra Low. Hãy viết số không có dấu ngoặc kép: B2>50.

Dùng ==. Phép so sánh bằng của Excel chỉ là một dấu =. Gõ =IF(B2=="Paid","Yes","No") khiến Excel từ chối công thức với thông báo "There's a problem with this formula".

Số lưu dạng văn bản. Nếu B2 chứa '12 (văn bản trông như số, thường do nhập từ nguồn khác), B2>=50 sẽ so sánh văn bản với số. Văn bản luôn được coi là lớn hơn, nên điều kiện là TRUE và 12 vẫn đạt. Hãy chuyển cột đó sang số trước; trang chuyển văn bản thành số chỉ cách làm.

Muốn TRUE ở dạng văn bản. =IF(B2>=50,"TRUE","FALSE") trả về các từ đó dưới dạng văn bản, mà công thức khác không dùng được như giá trị logic. Nếu bạn cần TRUE và FALSE thì không cần IF: =B2>=50 trả về chúng trực tiếp.

Thiếu dấu đóng ngoặc. Mỗi IF mở một dấu ngoặc và cần một ) riêng. Khi bạn sửa công thức, Excel tô mỗi cặp ngoặc một màu riêng, nhờ đó dễ thấy chỗ bị thiếu.

Câu hỏi thường gặp

Làm sao viết công thức IF trong Excel?

Viết =IF(test, value_if_true, value_if_false). Ví dụ =IF(B2>=50,"Pass","Fail") hiện Pass khi B2 từ 50 trở lên, ngược lại hiện Fail. Kết quả dạng văn bản đặt trong dấu ngoặc kép, còn số và tham chiếu ô thì không.

Vì sao công thức IF trả về FALSE?

Bạn đã bỏ sót đối số thứ ba. =IF(B2>=50,"Pass") trả về FALSE khi điều kiện sai. Hãy thêm giá trị cho trường hợp đó, ví dụ "" để hiện ô trống: =IF(B2>=50,"Pass","").

Hàm IF có phân biệt chữ hoa chữ thường không?

Không. =IF(B2="North","Yes","No") trả về Yes cho North, north và NORTH. Để khớp đúng kiểu chữ, dùng EXACT làm điều kiện: =IF(EXACT(B2,"North"),"Yes","No").

Làm sao để IF để trống ô?

Trả về một chuỗi văn bản rỗng, tức hai dấu ngoặc kép: =IF(B2="","",B2*C2) không hiện gì khi B2 trống, ngược lại hiện tích của hai ô. Ô này vẫn chứa công thức, nên ISBLANK trên ô đó trả về FALSE.

Hàm IF có kiểm tra được nhiều điều kiện không?

Có. Đặt AND hoặc OR vào điều kiện, =IF(AND(B2>=50,C2>=50),"Pass","Fail"), hoặc lồng một IF vào trong IF khác để có nhiều hơn hai kết quả. Từ Excel 2019 trở đi, IFS xử lý nhiều kết quả mà không cần lồng.

Hình minh họa các ngôn ngữ lập trình của Coddy

Học lập trình cùng Coddy

Bắt đầu