Hỏi về hàm if và and kết hợp

Liên hệ QC

haisonghinh

Thành viên mới
Tham gia
8/1/09
Bài viết
27
Được thích
5
Xin chào các bạn
Tôi sử dụng hàm if và hàm and kết hợp nhưng không cho kết quả đúng được
Mong các bạn chỉ giùm chỗ nào sai
Mục đích của tôi là nếu ở cột I10 mà là tháng 8, đồng thời ở cột J10 là các ngày ....., thì cho kết quả là ngày nghỉ, ngược lại thì cho kết quả "-"
Xin chân thành cảm ơn

Có kèm theo tập tin
 

File đính kèm

  • BK. CTP trien khai TP-------.7z
    69 bytes · Đọc: 3,274
Lần chỉnh sửa cuối:
BẠN GỬI FI LE LÊN MÀ CHẲNG CÓ THẤY CÁI GÌ CẢ THÌ BIẾT NGÀY NÀO NGHỈ ĐỂ MÀ LÀM ĐÂY.NHÂN TIỆN ĐÂY TUI GỬI CÁC HÀM IF VÀ AND CHO BẠN THAM KHẢO


Hàm AND

Có lẽ khỏi giải thích nhỉ. AND có nghĩa là VÀ. Vậy thôi. Dùng hàm này khi muốn nói đến cái này và cái này và cái này......

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

_____logical: Những biểu thức sẽ được xét xem đúng (TRUE) hay sai (FALSE)

Nếu tất cả các biểu thức đều đúng, hàm AND() sẽ trả về giá trị TRUE, và chỉ cần 1 trong các biểu thức sai, hàm AND() sẽ trả về giá trị FALSE.

Bạn có thể dùng hàm AND() bất cứ chỗ nào bạn muốn, nhưng thường thì hàm AND() hay được dùng chung với hàm IF().

Ví dụ:
=IF(AND(B2 > 0, C2 > 0), "1000", "No bonus")
Nếu giá trị ở B2 ở C2 lớn hơn 0, thì (thưởng) 1.000, còn nếu chỉ cần một trong 2 ô B2 hoặc C2 nhỏ hơn 0, thì không thưởng chi cả.

Vấn đề xét một giá trị nằm trong một khoảng

Có một bạn, khi nói đến một giá trị nằm trong khoảng từ 3 đến 10, đã dùng công thức 3 < x < 10 trong một công thức của hàm IF()
Không sai. Nhưng Excel thì "hổng hỉu". Vậy phải viết sao để Excel "hỉu" ?

Bạn ấy phải viết như vầy:

AND(x>3, x<10)


Bài toán thống kê theo độ tuổi

Bạn xem hình này nhé.

Ở vùng Thống kê theo độ tuổi, người ta muốn lập công thức dựa vào số tuổi ở cột B và câu trả lời ở cột C, thì biết được lứa tuổi nào muốn cái gì...

image001.jpg

Chúng ta cùng làm nào (làm cho một hàng thôi rồi kéo công thức xuống)
Để xét độ tuổi từ 18 đến 34, công thức:

AND(B11 >= 18, B11 <= 34)

Câu trả lời nằm ở cột C, vậy công thức tìm câu trả lời cho độ tuổi từ 18 đến 43 là:
=IF(AND(B11 >= 18, B11 <= 34), C11, "")

Đúng rồi. Vậy ta làm tiếp thôi:

Độ tuổi 35-49: =IF(AND(B11 >= 35, B11 <= 49), C11, "")

Độ tuổi 50-64: =IF(AND(B11 >= 50, B11 <= 64), C11, "")

Độ tuổi trên 65: =IF(B11 >= 65, C11, "")

Hàm IF

Hàm đầu tiên tôi muốn bàn tới là hàm IF(). Có lẽ đây là một trong những hàm được dùng nhiều nhất trong các bảng tính Excel.
Cái lập luận:
"Nếu tôi tôi đúng thì làm cho tôi cái này, nếu tôi sai thì làm cho tôi cái kia".. Có lẽ trong chúng ta ai cũng hiểu.
Vậy tôi sẽ không giải nghĩa nhiều về hàm này, mà sẽ dùng các ví dụ để minh họa.


Một tình huống đơn giản nhất

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

_____logical_test: Một biểu thức sẽ được xét xem đúng (TRUE) hay sai (FALSE)

_____value_is_true: giá trị trả về khi biểu thức logical_test được kiểm tra là đúng (TRUE)

Ví dụ:

=IF(A1 >= 1000, "It’s big!")
Nghĩa là, nếu giá trị ở A1 lớn hơn hoặc bằng 1000, thì kết quả nhận được sẽ là "It's big!", còn không, nếu A1 nhỏ hơn 1000, kết quả sẽ là FALSE.

Một ví dụ khác, giả sử bạn có một bảng đánh giá mức độ bán ra, mua vào của một danh mục hàng hóa dài, và bạn muốn theo dõi những mặt hàng có doanh số bán ra không đạt yêu cầu để điều chỉnh chiến lược kinh doanh của mình, bằng cách gán những dấu
"<" bên cạnh nó, hễ phần trăm doanh số càng thấp thì những dấu hiệu "<" càng nhiều...

Bạn có thể dùng hàm IF(), theo mẫu:

=IF(cell<0, flag)

Với cell là giá trị doanh số mà bạn muốn theo dõi, và flag là dấu hiệu để mô tả, ví dụ, cell chứa giá trị doanh số là B2:
=IF(B2<0, "<<<<<")

Để những dấu "<" tỷ lệ thuận với mức sụt giảm doanh số bán hàng, bạn có thể dùng hàm REPT(), với công thức:
REPT("<" , B2 * -100)

Ở đây, phải nhân giá trị của B2 với -100, bởi vì chúng ta chỉ xét những trường hợp B2<0

Và công thức hoàn chỉnh để thể hiện mức độ sụt giảm doanh số của từng mặt hàng sẽ là:

=IF(B2<0, REPT("<" , B2 * -100))


Hình sau đây minh họa cho ví dụ vừa rồi:

image002.jpg



Xử lý trường hợp xảy ra khi biểu thức sai (FALSE)

Xem hình trên, có lẽ bạn sẽ không thích thấy những chữ FALSE hiện ra khi giá trị trong cột B lớn hơn không.
Tuy rằng cứ để vậy thì công thức của chúng ta vẫn đúng, tuy nhiên "không đẹp", nên chăng ta thay các chữ
FALSE đó bằng những ký tự rỗng, những ký tự trắng ?

Chúng ta sẽ dùng hàm IF() với cấu trúc sau:

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

_____logical_test: Một biểu thức sẽ được xét xem đúng (TRUE) hay sai (FALSE)

_____value_is_true: giá trị trả về khi biểu thức logical_test được kiểm tra là đúng (TRUE)

_____
value_is_false: giá trị trả về khi biểu thức logical_test được kiểm tra là không đúng (FALSE)

Ví dụ:

=IF(A1 >= 1000, "It’s big!", "It’s not big!")

Nghĩa là, nếu giá trị ở A1 lớn hơn hoặc bằng 1000, thì kết quả nhận được sẽ là "It's big!", còn không, nếu A1 nhỏ hơn 1000, kết quả sẽ là "It's not big!"

Trở lại ví dụ về theo dõi mức sụt giảm doanh số bán ra ở trên, để không còn thấy những chữ
FALSE, chúng ta sẽ sửa lại công thức:
=IF(B2<0, REPT("<" , B2 * -100), "")

Kết quả có được là hình sau:
image003.jpg


Xử lý trường hợp chia cho 0


Đôi khi, do không để ý, trong bảng tính của chúng ta sẽ gặp phải những trường hợp chia cho số 0. Những khi đó, Excel sẽ báo lỗi là #DIV/0!

Để tránh xảy ra trường hợp này, có thể dùng hàm IF().

Ví dụ: Với A= doanh số bán ra, B= chi phí, thì lỷ lệ lợi nhuận có thể tính như sau
=IF(A <> 0 , (A-B)/A, "Doanh số bán = 0!")
 
Với bài tập này có dùng hàm IF như thế nào?

Chào các bạn.

Mình có bài tập như trong file dữ liệu mẫu thì liệu có áp dụng hàm IF được không, và áp dụng như thế nào. Rất mong các bạn giúp đỡ.

Cám ơn các bạn nhiều.
 

File đính kèm

  • Du lieu mau.xls
    13.5 KB · Đọc: 1,488
Chào các bạn.

Mình có bài tập như trong file dữ liệu mẫu thì liệu có áp dụng hàm IF được không, và áp dụng như thế nào. Rất mong các bạn giúp đỡ.

Cám ơn các bạn nhiều.
-----------
Chẳng biết bạn muốn như thế nào,
tôi chỉ hiểu theo tôi hiểu, bạn thử xem có giúp ích gì không?
 

File đính kèm

  • Dulieumau.rar
    2.9 KB · Đọc: 1,453
Chào các bạn.

Mình có bài tập như trong file dữ liệu mẫu thì liệu có áp dụng hàm IF được không, và áp dụng như thế nào. Rất mong các bạn giúp đỡ.

Cám ơn các bạn nhiều.
Bài này chủ yếu dùng hàm mod hoặc if kết hợp với hàm and, or. Bạn xem file nhé!
 

File đính kèm

  • Du lieu mau.xls
    16 KB · Đọc: 1,504
Thêm 1 bài tập nữa mong các bạn giúp đỡ. mình có các số 2 chữ số như sau: 34 76 29 66 83 71. mình muốn sắp xếp lại như sau: 34 67 29 66 38 17 (tức là nếu một số có số đứng trước nhỏ hơn số đứng sau thì giữ nguyên, ví dụ: 34; nếu 1 số có số đứng trước lớn hơn số đứng sau thì đổi vị trí lại, ví dụ 83 thành 38; trường hợp 2 số trước và sau đều giống nhau thì cũng giữ nguyên, ví dụ 66) thì dùng hàm if kết hợp với hàm nào khác? hoặc là có hàm nào phù hợp không? Mong các bạn giúp đỡ. Cám ơn các bạn.
 
Thêm 1 bài tập nữa mong các bạn giúp đỡ. mình có các số 2 chữ số như sau: 34 76 29 66 83 71. mình muốn sắp xếp lại như sau: 34 67 29 66 38 17 (tức là nếu một số có số đứng trước nhỏ hơn số đứng sau thì giữ nguyên, ví dụ: 34; nếu 1 số có số đứng trước lớn hơn số đứng sau thì đổi vị trí lại, ví dụ 83 thành 38; trường hợp 2 số trước và sau đều giống nhau thì cũng giữ nguyên, ví dụ 66) thì dùng hàm if kết hợp với hàm nào khác? hoặc là có hàm nào phù hợp không?
Bạn nói rõ thêm, chuỗi của bạn chỉ có 6 cặp số cách nhau bởi dấu " " (space) hay là các cặp số trong chuỗi là không xác định?
 
Thêm 1 bài tập nữa mong các bạn giúp đỡ. mình có các số 2 chữ số như sau: 34 76 29 66 83 71. mình muốn sắp xếp lại như sau: 34 67 29 66 38 17 (tức là nếu một số có số đứng trước nhỏ hơn số đứng sau thì giữ nguyên, ví dụ: 34; nếu 1 số có số đứng trước lớn hơn số đứng sau thì đổi vị trí lại, ví dụ 83 thành 38; trường hợp 2 số trước và sau đều giống nhau thì cũng giữ nguyên, ví dụ 66) thì dùng hàm if kết hợp với hàm nào khác? hoặc là có hàm nào phù hợp không? Mong các bạn giúp đỡ. Cám ơn các bạn.

Giả sử các số của bạn ở cột A (A1 đến A6) thì ở B1 bạn nhập công thức sau:
=IF(QUOTIENT(A1;10)<=MOD(A1;10);A1;MOD(A1;10)*10+QUOTIENT(A1;10))
Nếu máy bạn chưa có hàm QUOTIENT() thì dùng công thức:
=IF((A1-MOD(A1;10))/10<=MOD(A1;10);A1;MOD(A1;10)*10+(A1-MOD(A1;10))/10)
 
Lần chỉnh sửa cuối:
Bạn nói rõ thêm, chuỗi của bạn chỉ có 6 cặp số cách nhau bởi dấu " " (space) hay là các cặp số trong chuỗi là không xác định?

6 cặp số của mình lần nằm trong các ô từ a1 đến a6. Mình đã sử dụng công thức thứ 2 của bạn gaunuicr và đã thành công. nếu bạn có công thức nào khác thì chia sẽ với mình nhé. cám ơn bạn nhiều!
 
Giả sử các số của bạn ở cột A (A1 đến A6) thì ở B1 bạn nhập công thức sau:
=IF(QUOTIENT(A1;10)<=MOD(A1;10);A1;MOD(A1;10)*10+QUOTIENT(A1;10))
Nếu máy bạn chưa có hàm QOUTIENT() thì dùng công thức:
=IF((A1-MOD(A1;10))/10<=MOD(A1;10);A1;MOD(A1;10)*10+(A1-MOD(A1;10))/10)

Cám ơn bạn, mình đã áp dụng công thức thứ 2 của bạn và đã thành công. nhưng có 1 vấn đề phát sinh là nếu số của mình là những số kết thúc = số 0, ví dụ: 10, 20, 30..., 90 thì công thức sẽ trả về chỉ là 1 số: 1, 2, 3,...,9, nhưng điều mình mong muốn là sẽ trả về: 01, 02, 03, ...., 09. Nếu bạn giúp mình được vấn đề này nữa thì tốt quá. Cám ơn bạn nhiều.
 
Cám ơn bạn, mình đã áp dụng công thức thứ 2 của bạn và đã thành công. nhưng có 1 vấn đề phát sinh là nếu số của mình là những số kết thúc = số 0, ví dụ: 10, 20, 30..., 90 thì công thức sẽ trả về chỉ là 1 số: 1, 2, 3,...,9, nhưng điều mình mong muốn là sẽ trả về: 01, 02, 03, ...., 09. Nếu bạn giúp mình được vấn đề này nữa thì tốt quá. Cám ơn bạn nhiều.

Dùng công thức sau cho ô B1
=IF(LEFT(A1,1)<=RIGHT(A1,1),A1,IF(RIGHT(A1,1)="0",RIGHT(A1,1)&LEFT(A1,1),(RIGHT(A1,1)&LEFT(A1,1))*1))
Copy xuống dưới
Lưu ý với trương hợp cả hai chữ số khác 0 thì công thức trả về giá trị số, ngược lại sẽ trả về giá trị TEXT(VD : 01,02,03...là TEXT)
 
Thêm 1 bài tập nữa mong các bạn giúp đỡ. mình có các số 2 chữ số như sau: 34 76 29 66 83 71. mình muốn sắp xếp lại như sau: 34 67 29 66 38 17 (tức là nếu một số có số đứng trước nhỏ hơn số đứng sau thì giữ nguyên, ví dụ: 34; nếu 1 số có số đứng trước lớn hơn số đứng sau thì đổi vị trí lại, ví dụ 83 thành 38; trường hợp 2 số trước và sau đều giống nhau thì cũng giữ nguyên, ví dụ 66) thì dùng hàm if kết hợp với hàm nào khác? hoặc là có hàm nào phù hợp không? Mong các bạn giúp đỡ. Cám ơn các bạn.

Xin góp một công thức khác. Nhập vào ô B1 (rồi copy xuống dưới):
=IF(LEFT(A1)>RIGHT(A1), RIGHT(A1)*10+LEFT(A1), A1)

Công thức này chỉ đúng với những con số từ 00-99.

Để kết quả luôn là một con số có 2 chữ số (01, 02...), chỉ cần định dạng cho cột B với dạng "00":
(chọn cột B, gọi FormatCells, chọn tab Number, chọn mục Custom trong Category, gõ 00 vào trong khung Type)
 
Cực ngắn
Mã:
=MIN(A1,--MID(A1&A1,2,2))
 
Ta thêm hàm định dạng thành văn bản Text(so,"00"), nhưng chỉ đúng khi số có 1 hoặc 2 chữ số.

Đồng thời, tôi cũng sửa lại một chút công thức của gaunuicr
=TEXT(IF(INT(A1/10)<MOD(A1,10),A1,MOD(A1,10)*10+INT(A1/10)),"00")

Gửi xong thấy bài của huuthang_bd, thấy hay, nên sửa lại là
=TEXT(MIN(A1,--MID(A1&A1,2,2)),"00")
 
Lần chỉnh sửa cuối:
Ta thêm hàm định dạng thành văn bản Text(so,"00"), nhưng chỉ đúng khi số có 1 hoặc 2 chữ số.

Đồng thời, tôi cũng sửa lại một chút công thức của gaunuicr
=TEXT(IF(INT(A1/10)<MOD(A1,10),A1,MOD(A1,10)*10+INT(A1/10)),"00")

Gửi xong thấy bài của huuthang_bd, thấy hay, nên sửa lại là
=TEXT(MIN(A1,--MID(A1&A1,2,2)),"00")
-----------

=MIN(A1,--MID(A1&A1,2,2)) -----đây là number
Tôi chẳng thấy có gì hay khi thay bằng
=TEXT(MIN(A1,--MID(A1&A1,2,2)),"00") ------ đây là text
Trong khi tác giả chỉ yêu cầu:
mình có các số 2 chữ số như sau: 34 76 29 66 83 71. mình muốn sắp xếp lại như sau: 34 67 29 66 38 17 (tức là nếu một số có số đứng trước nhỏ hơn số đứng sau thì giữ nguyên, ví dụ: 34; nếu 1 số có số đứng trước lớn hơn số đứng sau thì đổi vị trí lại, ví dụ 83 thành 38; trường hợp 2 số trước và sau đều giống nhau thì cũng giữ nguyên, ví dụ 66)
Chẳng lẽ khi muốn chuyển lại thành số thì:
=--TEXT(MIN(A1,--MID(A1&A1,2,2)),"00")
Tác giả không đặt ví dụ 20 có thành 02 hay không, nếu có chắc phải dùng format để thống nhất kiểu dữ liệu, chứ từ số trở thành text thì không hợp lý lắm.
 
Lần chỉnh sửa cuối:
Cám ơn bạn, mình đã áp dụng công thức thứ 2 của bạn và đã thành công. nhưng có 1 vấn đề phát sinh là nếu số của mình là những số kết thúc = số 0, ví dụ: 10, 20, 30..., 90 thì công thức sẽ trả về chỉ là 1 số: 1, 2, 3,...,9, nhưng điều mình mong muốn là sẽ trả về: 01, 02, 03, ...., 09. Nếu bạn giúp mình được vấn đề này nữa thì tốt quá. Cám ơn bạn nhiều.

Đơn giản thôi bạn à! Chỉ cần định dạng kiểu hiển thị của cột B thôi. Làm vầy nè: Bạn chọn vùng dữ liệu ở cột B, vào chức năng Format Cells... (Dùng chuột phải), chọn Custom. Quét chọn trong khung Type, nhập 00 rồi OK. Đảm bảo bạn sẽ hài lòng!
Thân!
 
Rất gọn. Cảm ơn bạn. Tuy nhiên để đúng theo yêu cầu của bạn congthanh6868 với các số như 20 chẳng hạn thì cũng phải định dạng lại dữ liệu cột B thôi.
Lống hàm TEXT vào công thức trên cũng được vậy bạn!
 
Các bạn cho mình hỏi cách sử dụng hàm if trong trường hợp này như thế nào nhé:

VD : ô A1 mình nhập 12
ô B1 mình nhập 24
ô D1 mình tính theo đơn giá 9000đ ra kết quả : 324.000
Trong trường hợp cũng những ô đó ở ô D1 mình tính theo đơn giá là 10.000 đ cho ra kết quả là 360.000
Như vậy mình dùng công thức như thế nào để excel có thể cho ra kết qủa ở ô E1 nếu ở D1 mình tính đơn giá 9000 thì ô E1 cho tra kết quả là 90, hoặc D1 mình tính đơn giá 10.000 thì ô E1 cho ra kết quả là 10.
Mong các bạn chỉ giúp.Thanksssssss.....
 
Các bạn cho mình hỏi cách sử dụng hàm if trong trường hợp này như thế nào nhé:

VD : ô A1 mình nhập 12
ô B1 mình nhập 24
ô D1 mình tính theo đơn giá 9000đ ra kết quả : 324.000
Trong trường hợp cũng những ô đó ở ô D1 mình tính theo đơn giá là 10.000 đ cho ra kết quả là 360.000
Như vậy mình dùng công thức như thế nào để excel có thể cho ra kết qủa ở ô E1 nếu ở D1 mình tính đơn giá 9000 thì ô E1 cho tra kết quả là 90, hoặc D1 mình tính đơn giá 10.000 thì ô E1 cho ra kết quả là 10.
Mong các bạn chỉ giúp.Thanksssssss.....

Thì E1=IF(D1/100=100,D1/1000,D1/100)
Chưa hiểu bạn hỏi với mục đích gì & sao phải làm thế ?
Vui thật ???
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom