Những vấn đề về hàm IF

Liên hệ QC
Status
Không mở trả lời sau này.

handung107

Thành viên gắn bó
Thành viên danh dự
Tham gia
30/5/06
Bài viết
1,630
Được thích
17,436
Nghề nghiệp
Bác sĩ
Chúng ta ai cũng biết hàm IF trong Excel chỉ thể hiện được 7 vòng lặp. Vậy trong những trường hợp cần thiết khác, chúng ta sẽ làm gì ?

Td đơn giản nhất là :

Tại B1 :Nếu A1="A", B1=1, A1="B", B1=2, A1="C", B1=3, A1="D", B1=4, A1="E", B1=5, A1="F", B1=6, A1="G", B1=7, A1="H", B1=8, A1="I", B1=9, A1="J", B1=10, A1="K", B1=11, A1="L", B1=12, A1="M", B1=13....

Tôi xin giới thiệu với các bạn vài cách thức mà tôi sưu tầm được :

1/ Đặt tên cho từng đoạn công thức. Td : MotDenSau, MotDenMuoiBa

2/ Sử dụng hàm VLOOKUP, tạo một mảng gồm 2 cột, cột thứ nhất gồm những giá trị A, B, C..., cột thứ 2 gồm những giá trị 1, 2, 3...
B1=VLOOKUP(A1,DS,2,0)

3/ Sử dụng VBA

4/ Sử dụng hàm CONCATENATE() :

B1=CONCATENATE(IF(A1="A",1,""),IF(A1="B",2,""),IF( A1="C",3,""),....,IF(A1="M",13,"")). Hàm này sử dụng được 30 đối số

5/ Sử dụng phép kết hợp :

- Nếu kiểu dữ liệu là Text thì :
B1=IF(A1="A",1,"")&IF(A1="B",2,"")&IF(A1="C",3,"") &....&IF(A1="M",13,""). Phương pháp này giới hạn 30 "&"
-Nếu kiểu dữ liệu là Number thì :
B1=IF(A1="A",1,0)+IF(A1="B",2,0)+IF(A1="C",3,0)+.. ..+IF(A1="M",13,0).

6/Sử dụng Boolean Multiplication :

B1=(A1="A")*1+(A1="B")*2+(A1="C")*3+....+(A1="M")* 13
 
Lần chỉnh sửa cuối:
Hàm IF

Các bạn ơi hướng dẫn mình với mình có cái này nhưng không giải quyết được :
Hàm IF trong Excel chỉ cho phép 7 hàm lồng vào nhau nhưng mình muốn như sau :
Nếu a1<0.5 thì là không
Nếu a2<1.5 thì là một
Nếu a2<2.5 thì là hai
Nếu a2<3.5 thì là ba
Nếu a2<4.5 thì là bốn
Nếu a2<5.5 thì là năm
Nếu a2<6.5 thì là sáu
Nếu a2<7.5 thì là bảy
Nếu a2<8.5 thì là tám
Nếu a2<9.5 thì là chín
Còn lại là 10
Các bạn làm giúp mình với. Mình bí quá

Mong các bạn giúp mình với nhé
Cảm ơn nhiều
 
daitathan đã viết:
Các bạn ơi hướng dẫn mình với mình có cái này nhưng không giải quyết được :
Hàm IF trong Excel chỉ cho phép 7 hàm lồng vào nhau nhưng mình muốn như sau :
Nếu a1<0.5 thì là không
Nếu a2<1.5 thì là một
Nếu a2<2.5 thì là hai
Nếu a2<3.5 thì là ba
Nếu a2<4.5 thì là bốn
Nếu a2<5.5 thì là năm
Nếu a2<6.5 thì là sáu
Nếu a2<7.5 thì là bảy
Nếu a2<8.5 thì là tám
Nếu a2<9.5 thì là chín
Còn lại là 10
=choose(max(roundup(a2/0,5;1);
Các bạn làm giúp mình với. Mình bí quá

Mong các bạn giúp mình với nhé
Cảm ơn nhiều
Bạn thử nhé :
=CHOOSE(MIN(ROUNDUP(A2+0,5;0);11);0;1;2;3;4;5;6;7;8;9;10)
Thân!
 
Xin giúp về hàm IF

Công ty tôi có 15nv bán hàng. Cuối tháng xếp hạng nếu bán nhiều nhất thì được 15 điểm thi đua, bán nhiều nhì thì 14 điểm... người bán ít nhất được 1 điểm. Cuối năm cộng điểm ai cao nhất xếp loại A,rồi đếnB,C......
Tối đã dùng hàm IF và Rank, nhưng vì hàm IF chỉ cho tối đa 7 lần If nên không biết làm thế nào? Nhờ các Bác cao thủ chỉ giáo giúp (tôi cũng là dân mới học excel). Xin cám ơn nhiều.-\\/.
 
Bạn tham khảo các bài sau nhé:

- Bạn làm gì khi hàm If chỉ có 7 vòng lặp ?

- Hàm SUMPRODUCT và cách tính giá xuất theo phương pháp bình quân gia quyền liên hòan

Hiện nay, hầu hết các box của diễn đàn đều có mục mục lục (index) để tìm bài cho nhanh các bạn có thể vào đó (giống như khi đọc một quyển sách mình thường đọc mục mục lục trước để xem tổng quát vậy!). Ngoài ra chị handung107 cũng có một mục Index tổng hợp các bài viết hay của diễn đàn tại đây mà rất ít bạn chú ý đến!.
 
/)/goài ra, bạn xài hàm:
=CHOOSE(nUM,Num1,Num2. . . . . .Num30)
(hãy tìm trong excel hay trên diễn đàn!)
Nếu trên 30 đối số bạn xài hàm:
=UDFSWITCH([C1],[n1],. . . . . . . .[N100])
Hàm sau không câu nệ chuỗi hay số! (hãy tìm trên diễn đàn với từ khóa SWITCH!)
 
Lần chỉnh sửa cuối:
locthokhongvui đã viết:
Công ty tôi có 15nv bán hàng. Cuối tháng xếp hạng nếu bán nhiều nhất thì được 15 điểm thi đua, bán nhiều nhì thì 14 điểm... người bán ít nhất được 1 điểm. Cuối năm cộng điểm ai cao nhất xếp loại A,rồi đếnB,C......
Tối đã dùng hàm IF và Rank, nhưng vì hàm IF chỉ cho tối đa 7 lần If nên không biết làm thế nào? Nhờ các Bác cao thủ chỉ giáo giúp (tôi cũng là dân mới học excel). Xin cám ơn nhiều.-\\/.

Ban có thể ghi vài dòng của bảng tính hoặc có thể gởi file cho mình xem thử, vì có thể không cần dùng đến lệnh IF cũng có thể giải quyết được. Mail: trucle2002@yahoo.com
 
locthokhongvui đã viết:
Công ty tôi có 15nv bán hàng. Cuối tháng xếp hạng nếu bán nhiều nhất thì được 15 điểm thi đua, bán nhiều nhì thì 14 điểm... người bán ít nhất được 1 điểm. Cuối năm cộng điểm ai cao nhất xếp loại A,rồi đếnB,C......
Tối đã dùng hàm IF và Rank, nhưng vì hàm IF chỉ cho tối đa 7 lần If nên không biết làm thế nào? Nhờ các Bác cao thủ chỉ giáo giúp (tôi cũng là dân mới học excel). Xin cám ơn nhiều.-\\/.
Bạn thử nhé :
VD : Vùng dữ liệu : A1:A15

B1= choose(rank(A1;$A$1:$A$15;1);1;2;3;4;5;6;7;8;9;10;11;12;13;14;15)

Thân!
 
Dear all,
--------
Đối với các bài toán có nhiều điều kiện, tốt nhất chúng ta lập một bảng danh mục, mỗi một giá trị gắn với một ID của bảng rồi sử dụng VLOOKUP để tìm theo ID lấy ra giá trị tương ứng.
Bằng cách này chúng ta cũng có thể lấy ra giá trị của một khoảng với tham số range_lookup của hàm là 1.
 
tÔI có bài toán sau, mong các cao huynh chỉ giúp, nếu in từ 1 đến 99 cái nhãn, một size thì cộng thêm 15 cái, trên 2 sixe thì cộng thêm 10 cái ; tương tự in từ 100 đến 300 cái , nếu 1 size thì cộng thêm 20 cái, trên 1 size thì cộng 15 cái ; in từ 300 đến 700 cái nếu 1 size thì cộng 30 cái trên 1 size cộng thêm 25 cái, nếu trên 1000 cái thì cộng thêm 3% cho các size, mong các cao huynh hướng dẫn
 
Bạn ơi... Tôi ko biết bài toán này có cần dùng đến CHOOSE ko nhỉ? Tôi thấy chỉ cần: "=MIN(ROUNDUP(A2+0.5,0),11)-1" là dc rồi mà...
Mến...
ANH TUẤN
 
anhtuan1066 đã viết:
Bạn ơi... Tôi ko biết bài toán này có cần dùng đến CHOOSE ko nhỉ? Tôi thấy chỉ cần: "=MIN(ROUNDUP(A2+0.5,0),11)-1" là dc rồi mà...
Mến...
ANH TUẤN

Đúng đấy, nhiều khi nghĩ to tát quá đâm ra luẩn quẩn. Thanks
 
Cũng may mắn là điều kiện mà bạn daitathan đưa ra tuân theo quy luật nhất định (Số sau hơn số trước 1 đơn vị)... Nếu gặp trường hợp điều kiên tương đối lộn xộn thì phải làm thế nào nhỉ? Chẳng hạn như: Dưới 5 điểm xếp loại "Kém", từ 5 đến 6.4 xếp loại TB, từ 6.5 đến 7.9 xếp loại "Khá", và từ 8 trở lên xếp loại "Giõi"...
Ý tôi muốn hỏi là nếu sử sụng cách của bạn thì giãi quyết bài toán này thế nào?
 
Gặp các điều kiện tương đối lộn xộn và nhiều, thì có thể giải quyết bằng cách sau đây:
-Ta nhập hàm IF lồng vào nhau bình thường ( EXCEL cho phép đến 8 điều kiện).
-Điều kiện thứ 9 ta tham chiếu đến 1 ô khác. Ở ô này ta tiếp tục nhập tiếp được 8 điều kiện nữa. Và ta lại tham chiếu đến 1 ô nữa...Cứ như thế dù có bao nhiêu điều kiện ta cũng giải quyết được.
 
Thật ra ý tôi ko phải vậy... Hàm IF tất nhiên là cái mình nghĩ đầu tiên rồi, điều đó khỏi cần bàn tới... Tôi muốn hỏi là nếu dùng cách tương tự như bạn Mr Okebab thì có làm dc ko?
Mến
ANH TUẤN
 
Hàm IF sao lại ra 3 kết quả?

Hàm IF thì ai mới học Excel cũng đều biết sử dụng. Thông thường hàm này sẽ cho ra 2 kết quả tùy theo điều kiện đúng hay sai... IF(Logical_Test, [Value_if_true], [Value_If_false])
Thế nhưng vừa rồi em lại phát hiện ra 1 hiện tượng hơi kỳ lạ. Nó cho ra 3 kết quả khác nhau. Giã sử A1 có giá trị là 8, B1 có giá trị là 5. C1 em đặt công thức như sau:
C1= IF(A1=8,B1=5,-1)
Bây giờ lần lượt thay vào A1 và B1 những giá trị khác nhau thì C1 cũng sẽ lần lượt cho ra 3 kết quả là: TRUE, FALSE và -1
Em cũng hiểu hiểu là tại sao lại như vậy. Nhưng em đang nghĩ đến 1 chuyện khác, đó là vận dụng nó vào việc gì đây?
Các anh có thể cho em ý kiến dc ko? Hoặc các anh có thể nghĩ ra dc 1 bài tập nào đó có thể ứng dụng hàm IF 3 kết quả này ko?
Rất mong nhận dc ý kiến của tất cả mọi người, nhất là những ai có sáng kiến gì đó đễ ứng dụng dc hàm IF kiểu này
Miss TT
 
thanhtri đã viết:
C1= IF(A1=8,B1=5,-1)
Bây giờ lần lượt thay vào A1 và B1 những giá trị khác nhau thì C1 cũng sẽ lần lượt cho ra 3 kết quả là: TRUE, FALSE và -1
Không có gì đặc biệt ở đây đâu bạn ạ. Ở hàm trên bạn đặt tham số thứ 2 [Value if True] là 1 biểu thức (B1=5 là 1 biểu thức, nó trả về kết quả là TRUE nếu B1 đúng bằng 5 và FALSE nếu B1 khác 5). Do đó khi thay đổi cả A1 và B1 thì nó sẽ cho ra 3 kết quả trong đó có TRUE và FALSE, là kết quả của biểu thức B1=5

Thân.
 
Logical_test của hàm IF

Dear thanhtri,
-------------
Câu hỏi của bạn rất thú vị!
Tuy nhiên, đúng là suy luận của bạn làm thay đổi hẳn bản chất của hàm IF. Kết quả trả về của hàm này chỉ phụ thuộc vào Logical_Test. Việc thay đổi hai tham số còn lại đương nhiên làm thay đổi kết quả. Nói cách khác chúng ta đang sửa kết quả trả về của hàm. Cũng giống như là bạn sửa =SUM($A$1:$A$3) thành =SUM($A$1:$A$2) vậy!
Cũng phải nói thêm rằng, kết quả của hàm IF trả về một trong hai đối số: Value_if_true hoặc [Value_If_false]. Cặp dấu [] biểu diễn tham số trong ngoặc là tuỳ ý (phải có một hoặc cả hai tham số). Kết quả này, như bạn nói, nó tuỳ thuộc tham số điều kiện của hàm là TRUE hay FALSE. Vì vậy, nếu có trường hợp kết quả trả về không phải thuộc một trong đối số trên chỉ có thể là do điều kiện không phải là "Logical" nữa (tức không đúng cũng không sai).
Vậy những trường hợp "ỡm ờ" đó là gì?
Chúng ta đều biết rằng đối số Logical_test trong hàm IF là một biểu thức luận lý (so sánh). Biểu thức này trả về một trong hai giá trị: hoặc Đúng (TRUE) hoặc Sai (FALSE). Nhưng chắc ít ai biết rằng, trong Execel, Logical_test không nhất thiết cứ phải là TRUE or FALSE. Bản chất, giá trị lưu trong đối số này là kiểu số (Numberic) và số 0 đại diện cho giá trị FALSE, các số khác 0 đại diện cho giá trị TRUE. Ví dụ:
=IF(0;"Đúng";"Sai") >> Kết quả = "Sai"
=IF(a;"Đúng";"Sai") >> Kết quả = "Đúng" - trong đó a là một số bất kỳ <> 0
Như vậy có thể trả lời được cho câu hỏi của bạn rồi:
thanhtri đã viết:
các anh có thể nghĩ ra dc 1 bài tập nào đó có thể ứng dụng hàm IF 3 kết quả này ko?
Để có được kết quả thứ ba, không rơi vào một trong hai kết quả nêu trên (phải nói như vậy mới chính xác) chúng ta chỉ việc đi tìm giá trị của Logical_test sao cho:
AND(Logical_test=0;Logical_test<>0)=TRUE
Một con số vừa bằng 0, vừa khác 0.
Bài tập này dường như không có lời giải?
 
Lần chỉnh sửa cuối:
Hàm IF bị sao vậy cà?

Tôi có 1 bảng tính: HamIFbisaovay (post kèm theo).

Ở các cột có các hàm sau:
R = IF(OR(ISBLANK(K3); K3=" "; K3=0); " "; IF(K3>=1; IF(Q3<=14,5; K3+Q3; " "); " "))
S = IF(Q3>=14,5; "Đ"; IF(R3=" "; " "; IF(R3>=14,5; "đ-thêm"; " ")))
T = IF(Q3>=14,5; "Đ"; IF(R3>=14,5; "đ-thêm"; " "))

Phát biểu chung cho cột S (không có vấn đề gì) và cột T (có vấn đề) như sau:
"Nếu Tổng số điểm (Q3) lớn hơn hoặc bằng 14,5 thì "Đậu"; ngược lại nếu (Q3<14,5) thì nếu R3 (Tổng số điểm có cộng thêm điểm Ưu tiên)>=14,5 thì "đậu thêm"; ngược lại thì "trống" ".
Vậy mà, kết quả là hàng loạt loại "đậu thêm" thòi ra!? Lạ quá.
Các sư phụ giải thích dùm với, tôi bị sai chỗ nào?
Cảm ơn nhiều nhé!
 

File đính kèm

  • HamIfbisaovay.xls
    88.5 KB · Đọc: 350
Status
Không mở trả lời sau này.
Web KT
Back
Top Bottom