Dec-O đã viết:
Tớ làm theo thủ công cũng ra lạ nhỉ.
. Ai rút gọn hộ tớ đc k
E3=IF(D3<=100;VLOOKUP($C3;$B$14:$C$18;2;0);VLOOKUP($C3;$B$14:$C$18;2;0)*9/10)
Và giải thích hộ tớ lệnh bạn trên đã đùng, khá hay nhưng tớ k hỉu
Công thức của bạn, tôi tạm gọi đặt A = VLOOKUP($C3;$B$14:$C$18;2;0), và rút gọn lại như sau:
Nếu như D3<=100, thì E3 = A, còn không (tức là D3>100), thì E3 = A*9/10
Tôi viết lại cái thứ hai (E3 = A*9/10) nhé:
E3 = A*9/10 = A(1-0.1) = A-A*0.1
Vậy, theo điều kiện D3<=100, thì cái việc trừ bớt đi A*0.1 chỉ xảy ra khi D3>100, có đúng không ? Hay là:
Nếu D3 không lớn hơn 100, nghĩa là D3<=100, thì E3 = A - 0*A*0.1 = A*(1-0*0.1)
Nếu D3 có lớn hơn 100, nghĩa là D3>100, thì E3 = A- 1*A*0.1 = A*(1-1*0.1)
Bạn hiểu chứ ?
Để ý mấy cái tôi bôi màu đỏ ở trên: Không = 0, và Có = 1
Mà theo kiểu của Excel, thì Không = FALSE = 0, và Có = TRUE = 1
Chắc bạn đang thắc mắc tôi lôi mấy cái TRUE, FALSE vào đây làm gì. Hì hì... Bạn có nghe nói tới biểu thức logic chưa? Không phải là công thức nghe. Biểu thức logic là loại biểu thức mà chỉ có Đúng (TRUE, =1) hoăc Sai (FALSE, =0) mà thôi.
Để thử, bạn gõ vào trong ô A1 số 1, ô B1 số 1, rồi qua ô C1, bạn gõ: =A1=B1 (có 2 dấu bằng, để dể phân biệt hơn thì gõ: =(A1=B1) cũng được), xem nó ra cái gì.
Cái (A1=B1) là biểu thức đó bạn. Khi A1=1, B1=1, nghĩa là A1=B1, thì trong ô C1 sẽ ra kết quả là TRUE.
Ngươc lại, bạn gõ vào B1 số gì đó khác 1 đi, khi đó A1 sẽ không bằng B1 nữa, và C1 sẽ trả về kết quả là FALSE.
Tôi sẽ lợi dụng chuyện này cho cái (D3>100), nghĩa là, nếu D3>100, thì Excel sẽ cho nó là TRUE, và gán cho nó giá trị là
1, còn nếu D3<=100, thì Excel sẽ cho nó là FALSE, và gán cho nó giá trị là
0. Rồi đem áp dụng vào công thức trên kia:
E3 = A*(1-(D3>100)*0.1)
hay là:
E3 = VLOOKUP($C3;$B$14:$C$18;2;0)*(1-(D3>100)*0.1)
Ngắn hơn công thức ban đầu của bạn nhiều, phải không bạn?