=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.
| A | B | C | |
|---|---|---|---|
| 1 | Student | Score | Result |
| 2 | Ana | 72 | Pass |
| 3 | Ben | 45 | Fail |
| 4 | Chloe | 50 | Pass |
| 5 | Dan | 38 | Fail |
| 6 | Eve | 91 | Pass |
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_testlà 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_truelà nội dung ô hiển thị khi điều kiện là TRUE.value_if_falselà 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.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Order | Region | Free delivery | Exact case |
| 2 | 1001 | North | Yes | Yes |
| 3 | 1002 | South | No | No |
| 4 | 1003 | north | Yes | No |
| 5 | 1004 | East | No | No |
| 6 | 1005 | NORTH | Yes | No |
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:
| A | B | C | |
|---|---|---|---|
| 1 | Rep | Sales | Bonus |
| 2 | Ana | $1,400 | $70 |
| 3 | Ben | $800 | $0 |
| 4 | Chloe | $1,000 | $0 |
| 5 | Dan | $2,600 | $130 |
| 6 | Eve | $1,150 | $58 |
Ana đượ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 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:
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Item | Qty | Price | Total | Status |
| 2 | Pens | 10 | $1.50 | $15.00 | Ordered |
| 3 | Paper | $4.20 | Not ordered | ||
| 4 | Ink | 2 | $18.00 | $36.00 | Ordered |
| 5 | Tape | $2.80 | Not ordered | ||
| 6 | Clips | 5 | $0.90 | $4.50 | Ordered |
"" (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
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Item | Stock | Minimum | Status |
| 2 | Pens | 12 | 20 | |
| 3 | Paper | 30 | 25 | |
| 4 | Tape | 15 | 12 | |
| 5 | Ink | 8 | 10 |
Đế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.
| A | B | C | |
|---|---|---|---|
| 1 | Rep | Sales | Bonus |
| 2 | Ana | $1,250 | |
| 3 | Ben | $600 | |
| 4 | Chloe | $2,300 |
Đế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.