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

Liên hệ QC
Status
Không mở trả lời sau này.
Nhờ điều chỉnh công thức hàm IF

Yêu cầu thể hiên công thức trên cột H với các yêu cầu:
Mã:
[B]với B[/B]
Nếu B <> 0 và E <> 0 thì =(B/E)*(1-F/100)
Nếu B <> 0 và E ="" thì =B*(1-F/100)

[B]với C[/B]
Nếu C <> 0 và E <> 0 thì =C*E*(1-F/100)
Nếu C <> 0 và E ="" thì =C*(1-F/100)

[B]với D[/B]
Nếu D <> 0 và E <> 0 thì =(D/E)*(1-F/100)
Nếu D <> 0 và E ="" thì báo lỗi vì kg có trường hợp này

Em viết như sau:
Mã:
[FONT=Tahoma]=IF(B5<>0,IF(E5<>0,(B5/E5)*(1-F5/100),B5*(1-F5/100)),IF(C5<>0,IF(E5<>0,(C5*E5)*(1-F5/100),C5*(1-F5/100)),IF(D5<>0,IF(E5<>0,(D5*E5)*(1-F5/100),"Sai rồi"),0)))[/FONT]


á á, nhìn nhiều IF với dấu phẩy quá, mắt em hoa lên roài ạ.

Em cần công thức nhanh, chuẩn và dễ hiểu hơn. Bác nào giúp em với!!!
 
- Nghe có vẻ điều kiện chưa rõ ràng lắm, tuy nhiên nếu...thì phải if rồi, làm gọn hơn chút thôi
 
Bạn đưa vào file excel rồi gửi lên được không? Mọi người chẳng lẽ phải làm giúp bạn cả cái file ví dụ mẫu sao?
 
Em có cột B,C,D,E và F.
B,C,D - chỉ có 1 cột có số
E - có thể có số, có thể kg có số
-----------------------------------
Sau đó em cần làm 1 công thức xem xét xem cột nào trong số B,C,D có số và tùy theo biến E thì làm +, -, *, / khác nhau.


Cái file của em đây ạ.
 

File đính kèm

  • rutgoncongthuc.xls
    15 KB · Đọc: 58
Lần chỉnh sửa cuối:
Em có cột B,C,D,E và F.
B,C,D - chỉ có 1 cột có số
E - có thể có số, có thể kg có số
-----------------------------------
Sau đó em cần làm 1 công thức xem xét xem cột nào trong số B,C,D có số và tùy theo biến E thì làm +, -, *, / khác nhau.


Cái file của em đây ạ.
Tôi rút gọn hơn 1 tí thôi:
Mã:
=IF(AND($D2<>0,$E2=""),"Sai rồi",(1-$F2/100)*1/(($E2=0)+$E2)*IF($B2=0,$C2*(($E2=0)+$E2)^2,MAX($B2:$D2)))
Hoặc đặt name để rút gọn như file đính kèm này
=IF(DK,"Sai rồi",TS1*TS2*IF($B2="",$C2*1/TS2^2,MAX($B2:$D2)))
 

File đính kèm

  • RutgonCT_01.xls
    15 KB · Đọc: 41
Lần chỉnh sửa cuối:
1. Bác xem lại chứ em xóa B,C đi, để lại D,E,F thì công thức của bác báo bằng 0.
2. Nếu dùng Name như thế mà em dùng nhiều sheet thì làm sao ạ ?

Cám ơn bác phát hiện giùm em cái thừa số chung =(1-F/100)* IF(..... )

Đoạn này thì em mù tịt hẳn:
(1-$F2/100)*1/(($E2=0)+$E2)*IF($B2=0,$C2*(($E2=0)+$E2)^2,MAX($B2:$D2)))mấy cái này bác cắt nghĩa cho em với:
1. ($E2=0)+$E2)
2. C2*(($E2=0)+$E2)^2
 
Lần chỉnh sửa cuối:
Có lẽ tôi đã suy luận sai nên đã dùng hàm MAX trong file này! Vậy sửa lại nhé
 

File đính kèm

  • RutgonCT_02.xls
    15.5 KB · Đọc: 30
Rút gọn hoặc thay thế công thức "If"

Mình có 1 bảng tính đơn giá dựa theo kích thước của thùng vận chuyển, nếu lập c.thức If thì được rồi, nhưng quá dài và quá rối, nhờ các bạn lập dùm mình 1 công thức ngắn gọn nhe (mình làm hàm if nhưng rối quá)

Mình gởi file đính kèm, và có ghi rõ các yêu cầu .
 

File đính kèm

  • BANG KE TINH HINH KINH DOANH (1).xls
    48 KB · Đọc: 92
Dùng Index và If cho dễ hiểu:
K8 = INDEX($W$5:$AB$7;IF(G8<=300;1;IF(G8<=400;2;3));IF(E8<=1200;1;2)+IF(F8<=300;0;IF(F8<=400;2;4)))

Đó là tra trong bảng, còn MAX: 12M X 2.4 M X 2.4 M tôi không hiểu?
 
với D
Nếu D <> 0 và E ="" thì báo lỗi vì kg có trường hợp này
Nếu biết trước không có trường hợp này thì cần gì phải IF để ra thông báo

Em viết như sau:
=IF(B5<>0,IF(E5<>0,(B5/E5)*(1-F5/100),B5*(1-F5/100)),IF(C5<>0,IF(E5<>0,(C5*E5)*(1-F5/100),C5*(1-F5/100)),IF(D5<>0,IF(E5<>0,(D5*E5)*(1-F5/100),"Sai rồi"),0)))
Không đúng như yêu cầu
với D
Nếu D <> 0 và E <> 0 thì =(D/E)*(1-F/100)

Với phân tích như trên thì boyxin đề xuất phương án như sau
PHP:
=IF(B5<>0,B5/IF(E5<>0,E5,1),IF(C5<>0,C5*IF(E5<>0,E5,1),IF(D5<>0,D5/IF(E5<>0,E5,1),0)))*(1-F5/100)
Đã test <=> chỉ khác duy nhất chỗ báo lỗi "Sai rồi" còn lại các kết quả y hệt

Nếu vẫn muốn có thông báo lỗi thì
PHP:
=IF((COUNT(B5:E5)=1)*(D5<>0),"Sai rồi",IF(B5<>0,B5/IF(E5<>0,E5,1),IF(C5<>0,C5*IF(E5<>0,E5,1),IF(D5<>0,D5/IF(E5<>0,E5,1),0)))*(1-F5/100))
 

File đính kèm

  • boyxin RutgonCT.rar
    4.6 KB · Đọc: 31
Lần chỉnh sửa cuối:
mình cũng đang bị rối giống như bạn
 
Cám ơn bạn PTM0412 nhe, áp dụng được c.thức của bạn rồi, rất gọn và chính xác.
 
Mình mới tham gia diễn đàn này nhưng cũng xin góp ý kiến về vấn đề này. Giải pháp của mình như sau:
Mã:
=IF(AND(B5=0,C5=0,D5=0),"sai roi",(1-F5%)/((E5=0)+E5)*IF(B5<>0,B5,IF(C5<>0,C5,D5)))
Xin mọi người cho ý kiến.
 
Mình mới tham gia diễn đàn này nhưng cũng xin góp ý kiến về vấn đề này. Giải pháp của mình như sau:
Mã:
=IF(AND(B5=0,C5=0,D5=0),"sai roi",(1-F5%)/((E5=0)+E5)*IF(B5<>0,B5,IF(C5<>0,C5,D5)))
Xin mọi người cho ý kiến.


| A | B | C | D | E | F | G | H -Công thức cũ|Công thức của bạn
1 | |2||5| | | |10|0.4

2| |2|1|5| | | | 10|0.4
3| |2|1|5| | | |10|0.4
4| | |1| | | | |Sai rồi|1​


5| | |1| | |100| |Sai rồi|0
 
Lần chỉnh sửa cuối:
Theo như hình bạn post lên diễn đàn thì bạn hiểu sai đề bài rồi. Trong ví dụ của bạn, ở row4 và row5 cột C có số liệu thì không thể ra kết quả "Sai rồi" được.
Em có cột B,C,D,E và F.
B,C,D - chỉ có 1 cột có số
E - có thể có số, có thể kg có số
-----------------------------------
Sau đó em cần làm 1 công thức xem xét xem cột nào trong số B,C,D có số và tùy theo biến E thì làm +, -, *, / khác nhau.


Cái file của em đây ạ.
Đây là file ví dụ của mình.
 

File đính kèm

  • huuthang RutgonCT.xls
    20.5 KB · Đọc: 20
Theo như hình bạn post lên diễn đàn thì bạn hiểu sai đề bài rồi. Trong ví dụ của bạn, ở row4 và row5 cột C có số liệu thì không thể ra kết quả "Sai rồi" được.

Đây là file ví dụ của mình.
he he he, để mình nói câu này nhé
  1. Theo bạn rút gọn công thức là gì?
  2. Theo mình: muốn rút gọn kiểu gì cũng được, nhưng kết quả của công thức cũ (chưa gọn) và kết quả của công thức đã rút gọn (công thức mới) là phải như nhau (cùng cho 1 kết quả nếu các điều kiện, dữ liệu đầu vào giống nhau) và lẽ đương nhiên là phải gọn hơn, nhìn vào dễ hiểu hơn ...
  3. Từ file đính kèm của bạn, hãy nhập công thức nguyên thủy của tác giả vào rồi so sánh kết quả sẽ thấy
  4. Công thức nguyên thủy của tác giả đây nè
PHP:
=IF(B5<>0,IF(E5<>0,(B5/E5)*(1-F5/100),B5*(1-F5/100)),IF(C5<>0,IF(E5<>0,(C5*E5)*(1-F5/100),C5*(1-F5/100)),IF(D5<>0,IF(E5<>0,(D5*E5)*(1-F5/100),"Sai rồi"),0)))
 
Tác giả yêu cầu điều chỉnh công thức chứ ko chỉ là rút gọn. Nếu công thức của tác giả ko đúng với yêu cầu của đề bài liệu ta có nên rút gọn theo công thức đó ko???
Trong trường hợp này nếu vẫn muốn rút gọn theo công thức của tác giả thì phương án của bạn vẫn chưa phải là tối ưu.
1. Nếu dữ liệu ở các ô B5, C5 ko phải là ô trống mà 0 thì hàm Count của bạn hoàn toàn ko có tác dụng và kết quả đương nhiêu là ko đúng với yêu cầu của tác giả. Bạn xem file đính kèm sẽ thấy rõ hơn.
2. Công thức của bạn vẫn còn khá dài.
Nếu muốn rút gọn công thức cũ của tác giả thì mình có phương án này gọn hơn, chuẩn hơn.
Mã:
=IF((SUM(B5:E5)=D5)*(D5<>0),"sai roi",(1-F5%)/((E5=0)+E5)*IF(B5<>0,B5,IF(C5<>0,C5*((E5=0)+E5)^2,D5)))
Thân!
 

File đính kèm

  • huuthang RGCT.xls
    23.5 KB · Đọc: 21
nói rõ hơn dc không? tôi không hiểu. Thank trước nhá.
 
nói rõ hơn dc không? tôi không hiểu. Thank trước nhá.
Bạn không hiểu đoạn nào? Đoạn này hả?
Để tổng quát cho trường hợp các giá trị cột C là sp001; sp002; ...; sp1000 ... thì nên dùng =MID($C2;3;10)*1 thay cho Right.
Đoạn này có nghĩa là trong trường hợp MHS là sp1000 nếu dùng hàm Right() thì chuỗi 3 ký tự cuối là 000 lúc đó sp1000 sẽ nhỏ hơn sp001, công thức sẽ sai. Còn nếu dùng hàm Mid thì sẽ lấy từ ký tự thứ tư trở đi, kết quả là chuỗi ký tự 1000, so với 001 của MHS sp001 thì vẫn lớn hơn.

To duongsatdn.
Mình nghĩ người ta đã thiết kế MHS là sp001 tức là người ta đã biết trước không quá 1000 MHS. Nếu biết trước có hơn 1000 MHS thì sẽ đặt MHS là sp0001 hoặc sp1 chứ không đặt là sp001 đâu.
 
Status
Không mở trả lời sau này.
Web KT

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

Back
Top Bottom