Hàm IF (tt)


Những hàm IF lồng nhau

Trong cuộc sống đời thường, có mấy ai dễ dàng chấp nhận chuyện "một cái nếu", phải không các bạn.
Chúng ta thường sẽ dùng kiểu, nếu... rồi nhưng mà nếu... nhiều khi kéo dài đến vô tận!

Trong Excel cũng vậy. Giả sử, chúng ta xếp loại học tập, nếu điểm trung bình (ĐTB) lớn hơn 9 thì giỏi, vậy ĐTB nhỏ hơn 9 thì dở? Chưa, ĐTB nhỏ hơn 9 nhưng lớn hơn 7 thì khá cái đã, rồi ĐTB nhỏ hơn 7 nhưng chưa bị điểm 5 thì trung bình, chỉ khi nào ĐTB nhỏ hơn 4 thì mới gọi là dở (cái này tôi chỉ ví dụ thôi, các bạn đừng sử dụng để xếp loại nhé).

Khi đó, chúng ta sẽ dùng những hàm IF() lồng nhau, IF() này nằm trong IF() kia. Sau này chúng ta sẽ học cách ghép thêm nhiều điều kiện khác vào nữa.

Ví dụ, tôi lấy lại ví dụ đã nói ở bài trước:

=IF(A1 >= 1000, "Big!", "Not big")

Bi giờ thêm chút, A1 lớn hơn 1000 là "big" rồi, nhưng chẳng lẽ 10000 thì cũng chỉ là "big" ? Có lẽ nên tặng thêm một danh hiệu cao hơn:

=IF(A1 >= 1000, IF(A1 >= 10000, "Really big!!", Big!"), "Not big")

Hoặc là, đồng ý rằng <1000 là "Not big", nhưng nó khác "Small" chứ (tui không lớn, chưa chắc tui nhỏ), vậy chúng ta thêm một định nghĩa "Small" thử xem:

=IF(A1 >= 1000, "Big!", IF(A1 < 100, "Small", "Not big"))

Bạn để ý nhé, ở đây tôi đặt cái IF "con" không giống như ở trên, sao cũng được bạn à, miễn là đừng sai cú pháp của IF().
Và nếu thích, bạn có thể ghép tất cả lại:

=IF(A1 >= 1000, IF(A1 >= 10000, "Really big!!", Big!"), IF(A1 < 100, "Small", "Not big"))

Chĩ cần một lưu ý, là những dấu đóng mở ngoặc đơn. Nếu bạn đóng và mở không đúng lúc hoặc không đủ, Excel sẽ không hiểu, hoặc là cho các bạn kết quả sai đấy.

Bài toán tính tiền thưởng dựa trên doanh số bán hàng

Có một cửa hàng quy định mức tiền thưởng trên doanh số bán hàng trong tháng cho nhân viên như sau:

- Nếu doanh số không đạt định mức đề ra, không thường
- Nếu doanh số vượt định mức, nhưng chưa tới 10% so với định mức, thưởng $1000
- Nếu doanh số vượt định mức, và vượt hơn 10% so với định mức, thưởng $10.000

Tôi đề nghị cách làm như vầy nhé:

Giả sử cột B là định mức doanh số bán, cột C là doanh số thực tế trong tháng, để tính được phần trăm vượt định mức của nhân viên, tại cột D ta dùng công thức:

=(C2-B2)/C2 (nếu muốn hiện số %, bạn định dạng cho cột D theo kiểu Percentage)

Và tại cột E, tính mức tiền thưởng, dùng công thức:

=IF(D2 < 0, "", IF(D2 < 0.1, 1000, 10000))

Dưới đây là hình minh họa cho ví dụ này:

http://i216.photobucket.com/albums/cc49/BNTT_photos/IF4.jpg

1.     Hàm IF


Hàm IF()

Trả về một giá trị nếu điều kiện có giá trị TRUE, và một giá trị khác nếu điều kiện có giá trị FALSE.

Cú pháp: IF(logical_test, value_is_true [, value_is_false])

logical_test : Là bất kỳ giá trị hay công thức nào có thể trả về TRUE hoặc FALSE. Ví dụ, A1=100 là một biểu thức logic. Nếu giá trị trong A1 bằng 100, biểu thức sẽ trả về giá trị TRUE, còn ngược lại thì biểu thức trả về giá trị FALSE. Đối số này có thể bất kỳ toán tử so sánh nào.

value_is_true : Giá trị trả về nếu logical_test là TRUE.

value_is_false : Giá trị trả về nếu logical_test là FALSE.


Lưu ý
:

o  Có tới 64 hàm IF có thể lồng vào nhau (với Excel 2003 trở về trước thì con số này là 7) khi đối số value_is_truevalue_is_false xây dựng trên những điều kiện phức tạp hơn. Tuy nhiên, khi cần phải kiểm tra nhiều điều kiện, nên dùng các hàm LOOKUP(), VLOOKUP(), HLOOKUP(), hoặc CHOOSE().

o  Nếu có bất kỳ đối số nào của hàm IF() là mảng, mỗi phần tử trong mảng sẽ được tính toán khi câu lệnh IF được thực thi.

o  Microsoft Excel có cung cấp một số hàm khác mà bạn có thể dùng để phân tích dữ liệu dựa vào một điều kiện nào đó. Ví dụ như hàm COUNTIF(), COUNTIFS(), hàm SUMIF() hay SUMIFS().

 

1. Hàm AND()

Trả về giá trị TRUE nếu tất cả các đối số là đúng; trả về giá trị FALSE nếu có một hay nhiều đối số là sai.
Có thể dùng hàm AND() bất cứ chỗ nào, nhưng thường thì hàm AND() hay được dùng chung với hàm IF().

Cú pháp: AND(logical1, [, logical2...])

logical: Có thể có từ 1 đến 255 biểu thức (trong Excel 2003 trở về trước, con số này là 30) được xét xem đúng (TRUE) hay sai (FALSE).


Ghi chú
:

o  Các đối số phải có giá trị logic là TRUE hoặc là FALSE. Nếu đối số là mảng hay tham chiếu thì mảng hay tham chiếu đó chỉ chứa những giá trị logic.

o  Nếu đối số là mảng hay tham chiếu có chứa chữ hoặc những ô rỗng, các giá trị đó sẽ được bỏ qua.

o  Nếu dãy không chứa các trị logic, AND() sẽ trả về giá trị lỗi #VALUE!

2.     Hàm OR()

Trả về giá trị TRUE nếu có một hay nhiều đối số là đúng; trả về giá trị FALSE nếu tất cả các đối số là sai.
Có thể dùng hàm OR() bất cứ chỗ nào, nhưng thường thì hàm OR() hay được dùng chung với hàm IF().

Cú pháp: OR(logical1, [, logical2...])

logical: Có thể có từ 1 đến 255 biểu thức (trong Excel 2003 trở về trước, con số này là 30) được xét xem đúng (TRUE) hay sai (FALSE).


Ghi chú
:

o    Các đối số phải có giá trị logic là TRUE hoặc là FALSE. Nếu đối số là mảng hay tham chiếu thì mảng hay tham chiếu đó chỉ chứa những giá trị logic.

o    Nếu đối số là mảng hay tham chiếu có chứa chữ hoặc những ô rỗng, các giá trị đó sẽ được bỏ qua.

o    Nếu dãy không chứa các trị logic, OR() sẽ trả về giá trị lỗi #VALUE!

3.     Áp dụng hàm lý luận vào công thức mãng

Mời bạn xem bảng tính sau đây:

http://i216.photobucket.com/albums/cc49/BNTT_photos/IF5.jpg
Nếu nhìn thoáng qua, có lẽ bạn sẽ nói rằng, có gì đâu, mấy cái TOTAL là cộng những cái có ở trên thôi.

Vậy, tại sao cái TOTAL ở B16 trống rỗng? Và cái công thức tôi trình bày đó, làm gì mà "ghê" vậy ?

Vâng, vì yêu cầu của hai cái TOTAL này là: Nếu các chỉ tiêu Advertising, Rent, Supplies, Salaries và Utilities đều lớn hơn 0 thì mới cộng chúng lại,
còn nếu chỉ có 1 trong những chỉ tiêu đó không có (Salaries của năm 2005, cell B14) thì không cộng.

Phải làm công thức mãng thôi. Trước tiên chúng ta làm nháp:

Các ô từ B3 đến B7 phải lớn hơn 0: AND(B3:B7>0)

Tổng của B3 đến B7: SUM(B3:B7)

Rồi, bây giờ ghép chữ nếu vào: =IF(AND(B3:B7 > 0), SUM(B3:B7), "")

Đây là một dạng công thức mãng. Bạn thử Enter xem, Excel sẽ báo lỗi #VALUE! liền. Bạn phải Ctrl-Shift-Enter mới được.

Thêm một ví dụ

Đề bài: Lập công thức trong F3:F8, biết rằng nó là tổng số tiền ở cột C nếu năm (year) ở cột B bằng năm ở cột E tương ứng.
(Ví dụ: ở F3 là tổng số tiền của năm 2009)

http://i216.photobucket.com/albums/cc49/BNTT_photos/IF6.jpg

Các bạn xem lại công thức của bài trên một tí:
=IF(AND(B3:B7 > 0), SUM(B3:B7), "")

Công thức này, tôi sẽ sửa lại như sau: =SUM(IF(B3:B7 > 0, B3:B7, "")

Kết quả vẫn tương đương.

Chúng ta sẽ dùng kiểu công thức thứ hai (tính SUM) cho bài này:

=SUM(IF(YEAR($B$3:$B$18) = E3, $C$3:$C$18, 0))

(nhớ nhấn Ctrl-Shift-Enter sau khi gõ công thức)

Và đây là đáp số: (bạn thử lại xem đúng không nhé)

http://i216.photobucket.com/albums/cc49/BNTT_photos/IF7.jpg

1.     Hàm IFERROR

http://i216.photobucket.com/albums/cc49/BNTT_photos/EXCEL2007.pngHàm IFERROR()

Trả về một giá trị đã xác định nếu công thức có lỗi, hoặc trả về kết quả của công thức nếu công thức đó không có lỗi. Thường dùng IFERROR() để bẫy lỗi trong các công thức.

Cú pháp: IFERROR(value, value_if_error)

value: Là một biểu thức, một công thức cần kiểm tra có lỗi hay không.

value_if_error: Giá trị trả về nếu value gây ra lỗi, là các loại lỗi sau đây: #N/A, #VALUE!, #REF!, #DIV/0!, #NUM!, #NAME?, hoặc #NULL!.


Ghi chú
:

o  Nếu value hoặc value_if_error là một ô rỗng, IFERROR() sẽ xem chúng như những chuỗi rỗng ("").

o  Nếu value là một công thức mảng, IFERROR() trả về một mảng các kết quả cho mỗi ô của mảng trong value

2.     Hàm IFERROR

http://i216.photobucket.com/albums/cc49/BNTT_photos/EXCEL2007.pngHàm IFERROR()

Trả về một giá trị đã xác định nếu công thức có lỗi, hoặc trả về kết quả của công thức nếu công thức đó không có lỗi. Thường dùng IFERROR() để bẫy lỗi trong các công thức.

Cú pháp: IFERROR(value, value_if_error)

value: Là một biểu thức, một công thức cần kiểm tra có lỗi hay không.

value_if_error: Giá trị trả về nếu value gây ra lỗi, là các loại lỗi sau đây: #N/A, #VALUE!, #REF!, #DIV/0!, #NUM!, #NAME?, hoặc #NULL!.


Ghi chú
:

o    Nếu value hoặc value_if_error là một ô rỗng, IFERROR() sẽ xem chúng như những chuỗi rỗng ("").

o    Nếu value là một công thức mảng, IFERROR() trả về một mảng các kết quả cho mỗi ô của mảng trong value

 

Free Web Hosting