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

Liên hệ QC
Status
Không mở trả lời sau này.
Quả nhiên là bạn nói đúng. Nhưng mình còn gà mờ quá nên chưa tìm được cách khắc phục. Ngoài dùng code ra ta còn có thể thay thế bằng công thức nào cho nhẹ file hơn không? Mong cao thủ ra tay trợ giúp!
File bạn để nhiều dòng quá, delete bớt đi, còn có mấy chục ký à
 

File đính kèm

  • do tuoi.xls
    42.5 KB · Đọc: 17
Quả nhiên là bạn nói đúng. Nhưng mình còn gà mờ quá nên chưa tìm được cách khắc phục. Ngoài dùng code ra ta còn có thể thay thế bằng công thức nào cho nhẹ file hơn không? Mong cao thủ ra tay trợ giúp!
Hôm nay rảnh tạo form bằng công thức cho bạn nhé. Thêm sheet, copy form sang rồi thay năm là ok! Làm công thức của bạn mà lọc danh sách khoảng 10 năm thì đặt công thức có khi ngón tay búp măng thành dùi đục mất.Hihi!
 

File đính kèm

  • do tuoi.xls
    41 KB · Đọc: 15
hỏi về hàm if

ở cột giảm giá đầu bài yêu cầu là nếu bán trước ngày 10/10/2010 thì giảm 5% của đơn giá còn lại để trống.vì thế mình làm là =IF(D13<"10/10/2010",E13*5%,0) nhưng kết quả ra không chính xác.dòng 13 bán ngày 12/10/2010 như vậy là lớn hơn 10/10/2010 thì kết quả phải là 0 thì mới đúng chứ.bạn nào sửa giúp xem mình sai ở đâu vậy.
 

File đính kèm

  • BaitapchuongV.xls
    17.5 KB · Đọc: 9
Thế này ah? Sao không hỏi luôn trong bài lúc nãy vậy bạn!
 

File đính kèm

  • BaitapchuongV.xls
    18.5 KB · Đọc: 15
Lần chỉnh sửa cuối:
mình hỏi sau ý kia nên bạn ko để ý
ko thấy bạn trả lời nên mình lập topic khác
híc thiếu mất hàm DAY
thank bạn nhìu
 
ở cột giảm giá đầu bài yêu cầu là nếu bán trước ngày 10/10/2010 thì giảm 5% của đơn giá còn lại để trống.vì thế mình làm là =IF(D13<"10/10/2010",E13*5%,0) nhưng kết quả ra không chính xác.dòng 13 bán ngày 12/10/2010 như vậy là lớn hơn 10/10/2010 thì kết quả phải là 0 thì mới đúng chứ.bạn nào sửa giúp xem mình sai ở đâu vậy.
bạn hoamattroicoi làm =IF(DAY(D13)>10;5/100;0)*E13 như vậy ra kết quả 20.6 đâu có chính xác. phải đổi dấu " > " thành dấu "< " mới được. Nhưng nếu ngày bán là 18/10/2009 thì liệu ra kết quả có chính xác vì ngày bán < 10/10/2010 nhưng cho kết quả = 0
 
Lần chỉnh sửa cuối:
bạn hoamattroicoi làm =IF(DAY(D13)>10;5/100;0)*E13 như vậy ra kết quả 20.6 đâu có chính xác. phải đổi dấu " > " thành dấu "< " mới được. Nhưng nếu ngày bán là 18/10/2009 thì liệu ra kết quả có chính xác vì ngày bán < 10/10/2010 nhưng cho kết quả = 0
Vậy thì sửa lại như thế này:
Mã:
 =IF(D13<DATE(2010,10,10),5%,0)*E13
 
Các bạn giúp mình xử lý tình huống này với:

Nếu B1<=0.46, thì =0.5
0.46<B1<=0.92, =1
0.92<B1<=1.82, =2
1.86<B1<= 2.88, =3.2
2.88<B1<=3.68, =4
3.68<B1<=4.6, =5
4.6<B1<=5.75, =6
5.75<B1<=7.36, 8
7.36<B1<=9.2, =10
9.2<B1<=11.5, =12
11.5<B1<=14.49, =16
14.49<B1<=18.4, =20
18.4<B1<=23, =25
23<B1<=28.75, =32
28.75<B1<=36.8, =40
36.8<B1<=46, =50
46<B1<=58.88, =64
58.88<B1<=80.5, =80

Cảm ơn các bạn nhiều
 
Các bạn giúp mình xử lý tình huống này với:

Nếu B1<=0.46, thì =0.5
0.46<B1<=0.92, =1
0.92<B1<=1.82, =2
1.86<B1<= 2.88, =3.2
2.88<B1<=3.68, =4
3.68<B1<=4.6, =5
4.6<B1<=5.75, =6
5.75<B1<=7.36, 8
7.36<B1<=9.2, =10
9.2<B1<=11.5, =12
11.5<B1<=14.49, =16
14.49<B1<=18.4, =20
18.4<B1<=23, =25
23<B1<=28.75, =32
28.75<B1<=36.8, =40
36.8<B1<=46, =50
46<B1<=58.88, =64
58.88<B1<=80.5, =80

Cảm ơn các bạn nhiều
1.83, 1.84, 1.85 bằng cái gì ta?
 
Lập một bảng dò bạn nhé, gồm 2 cột giá trị nhỏ và kết quả trả về, sau đó dùng match gần đúng để tìm giá trị. (File đính kèm)
 

File đính kèm

  • Book1.xls
    17.5 KB · Đọc: 17
Lập một bảng dò bạn nhé, gồm 2 cột giá trị nhỏ và kết quả trả về, sau đó dùng match gần đúng để tìm giá trị. (File đính kèm)
Nếu như file của anh thì chỉ cần 1 vlookup lấy giá trị gần đúng là đạt được yêu cầu

=VLOOKUP($B$1,$A$3:$B$20,2)

Đúng là bài này còn thiếu trong khoảng 1.82<...<=1.86 không biết bằng bao nhiêu?
 
Nếu như file của anh thì chỉ cần 1 vlookup lấy giá trị gần đúng là đạt được yêu cầu

=VLOOKUP($B$1,$A$3:$B$20,2)

Đúng là bài này còn thiếu trong khoảng 1.82<...<=1.86 không biết bằng bao nhiêu?
Thanks linhngoc, đúng là dùng VLOOKUP ngắn hơn thật.
Chắc tác giả nhầm nên cứ lấy giá trị 1.82 là được rồi.
 
=if(left(mã HD,1) & right(mã HD,2)="SM4"," Đĩa mền 1.4mb",if(left(mã HD,1) & right(mã HD,2)="SM2"," Đĩa mền 1.2mb",if(left(mã HD,1) & right(mã HD,2)="C74"," Đĩa 740Mb","Đĩa 3.2mb")))
bài này bạn nên lập ra bảng và dùng các hàm Vlookup, Hlookup và Index sau đó kết hợp với hàm Match thì hay hơn, chúc bạn làm tốt
 
Em có một thắc mắc về trường hợp này. Mọi người vui lòng xem file đính kèm ạ.
Thật ra với bài này thì hoàn toàn có thể dùng cách Thứ 2 để làm. Còn theo cách 1, tại sao với các giá trị là text thì excel lại đưa ra giá trị của ô B2?
Em thấy công thức này đúng là thiếu trường hợp cho text. Nhưng tại sao nó lại k đưa ra kq là #VALUE hay gif khác mà lại là giá trị ô B2 ạ? Mong mọi người trả lời giúp em! Em cảm ơn nhiều ạ!
 

File đính kèm

  • Tim han muc.xlsx
    9.4 KB · Đọc: 21
Bạn nhìn lại công thức bạn đặt trong cell B11 nhé!
IF(A11=0;"";IF(A11<$A$5;$B$6;IF(A11<$A$4;$B$5;IF(A11<$A$3;$B$4;IF(A11<$A$2;$B$3;$B$2)))))
Cái chỗ mình bôi màu đỏ đó, tất cả những gì không nằm trong phạm vi bạn liệt kê trong hàm if thì nó sẽ trả về kết quả $B$2 (vế cuối hàm if dịch là :"còn lại trả về $B$2")
 
Bạn nhìn lại công thức bạn đặt trong cell B11 nhé!
IF(A11=0;"";IF(A11<$A$5;$B$6;IF(A11<$A$4;$B$5;IF(A11<$A$3;$B$4;IF(A11<$A$2;$B$3;$B$2)))))
Cái chỗ mình bôi màu đỏ đó, tất cả những gì không nằm trong phạm vi bạn liệt kê trong hàm if thì nó sẽ trả về kết quả $B$2 (vế cuối hàm if dịch là :"còn lại trả về $B$2")
Nếu dịch đúng là: A11>=A2 (tức là >=50.000) trả về B2. Như vậy, khi phát hiện là text, tức là "h">=50.000, phải trả về ERROR chứ?
 
Xem lại công thức :
=IF(A11=0;"";IF(A11<$A$5;$B$6;IF(A11<$A$4;$B$5;IF(A 11<$A$3;$B$4;IF(A11<$A$2;$B$3;$B$2)))))
Dịch là :
Nếu A11 bằng 0 thì trả về giá trị rỗng, nếu A11 nhỏ hơn 25.000 trả về "không hạn mức", nếu A11 nhỏ hơn 30.000 thì trả về "Hạn mức 1", nếu A11 nhỏ hơn 40.000 thì trả về "hạn mức 2",nếu A11 nhỏ hơn 50.000 thì trả về "hạn mức 3", còn lại là thì trả về "hạn mức 4" Theo anh bebo nếu phát hiện giá trị là text chẳng hạn "h", hàm if sẽ đi so sánh "h" với 25.000, 30.000,40.000, 50.000 xem có thỏa mãn điều kiện hàm if đặt ra không bởi vì so sánh "h" với các giá trị của hàm if không thỏa mãn và trả về lỗi nên hàm if sẽ lấy giá trị $B$2("hạn mức 4")
 
Em có một thắc mắc về trường hợp này. Mọi người vui lòng xem file đính kèm ạ.
Thật ra với bài này thì hoàn toàn có thể dùng cách Thứ 2 để làm. Còn theo cách 1, tại sao với các giá trị là text thì excel lại đưa ra giá trị của ô B2?
Em thấy công thức này đúng là thiếu trường hợp cho text. Nhưng tại sao nó lại k đưa ra kq là #VALUE hay gif khác mà lại là giá trị ô B2 ạ? Mong mọi người trả lời giúp em! Em cảm ơn nhiều ạ!

Cho hỏi kỹ lại, nếu giá trị lớn hơn 50,000 thì tính là "Hạn mức 4" hay là "Không hạn mức"? bởi làm không khéo nó tính thành "Không hạn mức" đấy!


Với bài này, bạn longlongago nên cho khoảng xác định, ví dụ:

X > 40,000 à Hạn mức 4
40,000 ≤ X > 30,000
à Hạn mức 3
30,000 ≤ X > 25,000
à Hạn mức 2
X ≤ 25,000
à Hạn mức 1
Và X là text
à không hạn mức

Như vậy sẽ dễ tính hơn.

Với trường hợp VD trên, tại B10 công thức sẽ là:
PHP:
=IF(ISTEXT($A10),$B$6,IF($A10>$A$3,$B$2,IF(AND($A10<=$A$3,$A10>$A$4),$B$3,IF(AND($A10<=$A$4,$A10>$A$5),$B$4,IF($A10<=$A$5,$B$5)))))
 
Lần chỉnh sửa cuối:
Em cảm ơn ý kiến của mọi người nhiều ạ!

Cụ thể điều kiện là ntn ạ:
>50.000 => Hạn mức 4
40.000-50.000 => Hạn mức 3
30.000-40.000 => Hạn mức 2
25.000-30.000 => Hạn mức 1
0-25.000 => Không hạn mức
Text => Không hạn mức

Còn e thấy là nếu đã dùng if thì không cần phải tính khoảng trong công thức như của bác Learning excel đâu ạ. Giả sử trong công thức cũ của e là: đk thứ nhất của hàm là IF(A11=0;"";IF(A11<$A$5;$B$6;IF(A11<$A$4;$B$5;IF(A11<$A$3;$B$4;IF(A11<$A$2;$B$3;$B$2)))))
đk được bôi đậm đã được hiểu là nhỏ hơn A4 (nhỏ hơn 30.000) đồngt hời đk này vế còn lại của IF đầu tiên, tức là đồng thời lớn hơn A5 (lớn hơn 25.000) rồi ạ.

Cho hỏi kỹ lại, nếu giá trị lớn hơn 50,000 thì tính là "Hạn mức 4" hay là "Không hạn mức"? bởi làm không khéo nó tính thành "Không hạn mức" đấy!


Với bài này, bạn longlongago nên cho khoảng xác định, ví dụ:

X > 40,000 à Hạn mức 4
40,000 ≤ X > 30,000
à Hạn mức 3
30,000 ≤ X > 25,000
à Hạn mức 2
X ≤ 25,000
à Hạn mức 1
Và X là text
à không hạn mức

Như vậy sẽ dễ tính hơn.

Với trường hợp VD trên, tại B10 công thức sẽ là:
PHP:
=IF(ISTEXT($A10),$B$6,IF($A10>$A$3,$B$2,IF(AND($A10<=$A$3,$A10>$A$4),$B$3,IF(AND($A10<=$A$4,$A10>$A$5),$B$4,IF($A10<=$A$5,$B$5)))))
 
Lần chỉnh sửa cuối:
Em cảm ơn ý kiến của mọi người nhiều ạ!

Cụ thể điều kiện là ntn ạ:
>50.000 => Hạn mức 4
40.000-50.000 => Hạn mức 3
30.000-40.000 => Hạn mức 2
25.000-30.000 => Hạn mức 1
0-25.000 => Không hạn mức
Text => Không hạn mức

Còn e thấy là nếu đã dùng if thì không cần phải tính khoảng trong công thức như của bác Learning excel đâu ạ. Giả sử trong công thức cũ của e là: đk thứ nhất của hàm là IF(A11=0;"";IF(A11<$A$5;$B$6;IF(A11<$A$4;$B$5;IF(A11<$A$3;$B$4;IF(A11<$A$2;$B$3;$B$2)))))
đk được bôi đậm đã được hiểu là nhỏ hơn A4 (nhỏ hơn 30.000) đồngt hời đk này vế còn lại của IF đầu tiên, tức là đồng thời lớn hơn A5 (lớn hơn 25.000) rồi ạ.

Vậy thì tại B10, công thức sẽ như vầy:
PHP:
=IF(OR(ISTEXT(A10),A10<$A$5),$B$6,IF(A10>=$A$2,$B$2,IF(A10>=$A$3,$B$3,IF(A10>=$A$4,$B$4,IF(A10>=$A$5,$B$5)))))
 
Status
Không mở trả lời sau này.
Web KT

Bài viết mới nhất

Back
Top Bottom