trungtuanthanh
Thành viên mới

- Tham gia
- 23/12/08
- Bài viết
- 15
- Được thích
- 3
Bác Springrain836 chỉ ra đúng rồi. Nhưng em không biết bác làm như thế nào cả. Bác chỉ chi tiết cho em được không?
Ặc. Phần list thứ 2 em làm nó toàn báo lỗi bác ah. Làm bên file bác gửi thì ko sao nhưng mang sang file em cần làm thì nó báo lỗi: "A name range you specified cannot be found". Em không hiểu sao cả.
Bác Springrain836 chỉ ra đúng rồi. Nhưng em không biết bác làm như thế nào cả. Bác chỉ chi tiết cho em được không?
Có nhiều cách để kéo hàm IF ra nhưng không VÔ TẬN được đâu ---> Dù là thay bằng VLOOKUP thì cũng có giới hạn chứHàm IF lồng vào nhau không thể nào đến N số lần logic được đâu bạn ơi!
Tối đa chỉ có thể dùng được 8 lần Logic ứng với 9 đáp số và ứng với N = 8 thôi.
Vậy nếu muốn vô tận thì bạn phải dùng cách khác thôi!
Ví dụ: =(Logic 1)*KQ1+(Logic 2)*KQ2+....+(Logic N)*KQN
Vậy thì sẽ được đó.
Vì 1 Logic = True tức là thỏa thì sẽ cho ra kết quả là 1. Và 1 nhân với KQ của Logic đó sẽ ra đáp số của Logic cần tìm.
Vậy bạn cứ thử nghiệm với các logic của bạn xem rồi đối chiếu sẽ thấy cách này là cách hữu dụng nhất nhưng đôi khi cũng hơi khó dùng đó. Hiiii
Chúc vui.
Thân.
Cách của Po_Pikachu chỉ đúng khi KQ1, KQ2,..., KQn là kiểu số (number), còn nếu KQ1, KQ2,...,KQn không phải là kiểu số thì coi như xong!Hàm IF lồng vào nhau không thể nào đến N số lần logic được đâu bạn ơi!
Tối đa chỉ có thể dùng được 8 lần Logic ứng với 9 đáp số và ứng với N = 8 thôi.
Vậy nếu muốn vô tận thì bạn phải dùng cách khác thôi!
Ví dụ: =(Logic 1)*KQ1+(Logic 2)*KQ2+....+(Logic N)*KQN
Vậy thì sẽ được đó.
Vì 1 Logic = True tức là thỏa thì sẽ cho ra kết quả là 1. Và 1 nhân với KQ của Logic đó sẽ ra đáp số của Logic cần tìm.
Vậy bạn cứ thử nghiệm với các logic của bạn xem rồi đối chiếu sẽ thấy cách này là cách hữu dụng nhất nhưng đôi khi cũng hơi khó dùng đó. Hiiii
Chúc vui.
Thân.
=Choose(((Logic_1)+1,(Logic_2)+2,.....(Logic_n)+n),KQ1.KQ2,......,KQn)
Dĩ nhiên là được, mình vẫn hay dùng như cách Po_Kikachu vừa trình bày. Cho nên mình mới nói là "tùy từng bài toán cụ thể" mà tùy cơ ứng biến - Vô chiêu thắng hữu chiêu mà!Nhưng hàm Choose có thể bỏ bớt việc + n số liên tiếp được không? Vì nó là điều kiện lớn hơn hoặc bằng và là chuổi liên tiếp mà. Vậy nếu ví dụ có 4 hạng: "Yếu", "Trung Bình", "Khá", "Giỏi". Thì em sẽ biết như sau:
PHP:=CHOOSE((C6>=0)+(C6>=3)+(C6>=6)+(C6>=8),"Yếu","Trung Bình","Khá","Giỏi")
Bạn dùng công thức sau:Cho em hỏi đề bài yêu cầu là:"nếu ngày đến vào tháng 1 hoặc tháng 5 thì thành tiền= 20%*ngày ở *đơn giá ngày, còn nếu ngày đến vào tháng khác thì thành tiền= ngày ở*đơn giá ngày" công thức ở đây phải làm như thế nào ạ?
[Thành tiền] =[Đơn giá ngày]*Choose(Or(Month([NgàyĐến])=1,Month([NgàyĐến])=5))+1,[NgàyỞ],[NgàyỞ]*20%)
Dùng SUMPRODUCT bạn à! Bạn xem file đính kèm nhé!các bác làm hộ em bài này với
cảm ơn rất nhiều
![]()
Công thức trên dư một dấu đóng ngoặc đơn của hàm CHOOSE, trước chỗ +1:Ca_Dafi đã viết:Bạn dùng công thức sau:
[Thành tiền] =[Đơn giá ngày]*CHOOSE(OR(MONTH([NgàyĐến])=1,MONTH([NgàyĐến])=5))+1,[NgàyỞ],[NgàyỞ]*20%)
Hình như là 20%, chứ không phải 80% anh BNTT ơi!Hay là khỏi cần IF luôn:
[Thành tiền] =[Đơn giá ngày]*[NgàyỞ]*(1-(OR(MONTH([NgàyĐến])=1,MONTH([NgàyĐến])=5)*80%)
[Thành tiền] =[Đơn giá ngày]*[NgàyỞ]*(1-20%*SUM(--(MONTH([NgàyĐến])={1,5})))
[Thành tiền] =[Đơn giá ngày]*[NgàyỞ]*(1-20%*SUM(--(MONTH([NgàyĐến])={1,4,5,9})))
80% chứ sao lại 20%? Em không thấy anh lấy 1 trừ đi à?Hình như là 20%, chứ không phải 80% anh BNTT ơi!
Giảm 20% giá và bằng 20% giá là hai chuyện hoàn toàn khác nhau! Đọc lại đề bài nhé:Với công thức này, nếu ta có thêm vài điều kiện tháng nữa vào thì công thức chỉ dài thêm tối đa vài ký tự tương đương với số điều kiện thêm vào nữa thôi! Ví dụ bài toán trên, nếu điều kiện là: hoặc tháng của ngày đến là 1,4,5,9 thì được giảm 20%, ta chỉ cần thêm vào mảng điều kiện là xong:
Cho em hỏi đề bài yêu cầu là:
Nếu ngày đến vào tháng 1 hoặc tháng 5 thì thành tiền = 20%*ngày ở *đơn giá ngày
Nếu ngày đến vào tháng khác thì thành tiền = ngày ở*đơn giá ngày
Công thức ở đây phải làm như thế nào ạ?
Bạn dùng hàm dcounta xem, hàm này phải kẻ thêm bảng phụ, mình có làm trong file đính kèm đấy!các bác làm hộ em bài này với
cảm ơn rất nhiều
![]()
Chỉ cần gộp bài của bạn vào là được rồi.Các bạn cho mình hỏi:mình có 3 cột A,B,C và D
Nếu A>B thì giá trị cột D=(C-A)/A ,còn nếu A<B hoặc A là số âm thì D=(C-B)/B.Mình mới học excel nên chưa rành.Chân thành cảm ơn.
=if(A>B, (C-A)/A, if(or(A<0,A<B),(C-B)/B,"còn khi A=B")
Cho hỏi:Các bạn cho mình hỏi:mình có 3 cột A,B,C và D
Nếu A>B thì giá trị cột D=(C-A)/A ,còn nếu A<B hoặc A là số âm thì D=(C-B)/B.Mình mới học excel nên chưa rành.Chân thành cảm ơn.
Các bạn cho mình hỏi:mình có 3 cột A,B,C và D
Nếu A>B thì giá trị cột D=(C-A)/A ,còn nếu A<B hoặc A là số âm thì D=(C-B)/B.Mình mới học excel nên chưa rành.Chân thành cảm ơn.
D1 = IF((A1>B1)*(A1<>0),(C1-A1)/A1,IF(((A1<B1)+(A1<0))*(B1<>0),(C1-B1)/B1,0))
Các bạn cho mình hỏi:mình có 3 cột A,B,C và D
Nếu A>B thì giá trị cột D=(C-A)/A ,còn nếu A<B hoặc A là số âm thì D=(C-B)/B.Mình mới học excel nên chưa rành.Chân thành cảm ơn.
Đề bài bị thiếu điều kiện không chặt chẽ lắm
mình có 3 cột A,B,C và D
Nếu A>B thì giá trị cột D=(C-A)/A ,còn nếu A<B hoặc A là số âm thì D=(C-B)/B.
Nếu không thích cột phụ thì bạn BNTT có thể chuyển nó thành name ---> Cũng là 1 cáchGửi bạn thêm một cách nữa, chèn thêm cột phụ vào, và khi đó thì công thức tính tiền nó ngắn ngủn à, mà lại chả có cái IF nào hết trơn...
Nếu không thích cột phụ thì bạn BNTT có thể chuyển nó thành name ---> Cũng là 1 cách
Xin giới thiệu với bạn một cách.Anh nói rõ hơn về cách dùng name được không ạ.
Ta đặt 2 Name động bằng công thức: Dmuc để tính ra định mức sử dụng điện cho từng loại hộ, và GiaVuotDmuc để tính ra số tiền phải trả cho số điện vượt định mức.
- Đối với điện sinh hoạt thì 100kw đầu tính theo đơn giá còn từ 101kw thì giá 800
- Đối với điện dịch vụ thì 200kw đầu tính theo đơn giá còn từ 201kw thì tính giá 2000
- Đối với điện công nghiệp thì 1000kw đầu tính theo đơn giá còn từ 1001kw thì tính giá 1500
Thì lấy công thức ở cột phụ cho vào name... ở những cột khác, công thức nào có cộng trừ nhân chia với cột phụ thì bây giờ tính toán nó với nameAnh nói rõ hơn về cách dùng name được không ạ.
Đúng vậy, bạn à. Nếu dùng Name thay cho cột phụ, thì thao tác sẽ nhanh hơn nhiều, vì chỉ cần mỗi một công thức, chứ còn nếu chèn cột phụ thì phải làm công thức cho nguyên cả cái cột phụ đó.À em hiểu rồi, như vậy 2 cái Name cũng là 2 hàm đóng vai trò như 2 cột phụ mà anh thêm vào.
Trời! Ở bài số #6 trên kia, tôi đã giải thích cặn kẽ hàm MIN và hàm MAX rồi mà, Volga có coi không vậy ? DM và GVMD (của anh Ndu) thì cũng tương tự với Dmuc và GiaVuotDmuc của tôi thôi... Xem lại đi nha.Em không hiểu lập luận của công thức này suy nghỉ mãi mà không ra
Đúng là đập ba búa củng ngu
=MIN(D3;DM)*E3+MAX(D3-DM;0)*GVDM
Chử DM kia thì ok biết ,hiểu (name thì hiểu )
còn cái này :MIN(D3;DM) ?????
Này nữa :MAX(D3-DM;0)????????
Em có hàm Min & Max đây luôn mà củng không hiểu ?
Các anh giải thích hộ em !
Thanks!
Các anh chị nào có thể giúp dùm làm thế nào để có thể giải quyết dc bài toán trên không?
100 hay 200 đối số cũng có cách giải quyết! Tuy nhiên cụ thể là (những) đối số và bài toán yêu cầu của bạn là gì!? cần phải cụ thể thì mới có cách giải tối ưu được.Các anh chị nào có thể giúp dùm làm thế nào để có thể giải quyết dc bài toán trên không?
Nếu dùng IF thì bó tay: Hãy dùng Match:VD đơ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, ....
=MATCH(A1,{"A","B","C","D","E","F","G","H","I","J","K","L","M"},0)
Cái này không cần If đâu bạn,mọi người xem giúp e, ko bik vì sao khi e dùng hàm if ở cột ƯU TIÊN như thế này thì nó lại báo kết quả sai.
M3 = CHOOSE(--RIGHT(B3),2,1.5,1)
Cái này không cần If đâu bạn,
Ô M3 gõ công thức:
Sau đó fill công thức xuống dưới là xong.PHP:M3 = CHOOSE(--RIGHT(B3),2,1.5,1)
Bạn nhập sai công thức thôi, lý ra phải là:mọi người xem giúp e, ko bik vì sao khi e dùng hàm if ở cột ƯU TIÊN như thế này thì nó lại báo kết quả sai.
Nhưng cho e hỏi tại sao lại có -- trong đó? nó có nghĩa là gì?Cái này không cần If đâu bạn,
Ô M3 gõ công thức:
Sau đó fill công thức xuống dưới là xong.PHP:M3 = CHOOSE(--RIGHT(B3),2,1.5,1)
có thể giải thích cho e cái hàm choose ở trên ko? e đọc lý thuyết mà ko hiểu lắm. cái --right(b3) đó nó đâu có chỉ là thứ tự bao nhiêu đâu? với lại nếu như có thêm 1 SBD chẳng hạn như A111-4 thì sao? Hoặc là có nhiều số khác nữa thì sao? Hoặc là không có thứ tự 3 mà chỉ có 4?
=IF(Right(B3)="1",2,IF(Right(B3)="2",1.5,1))
Vậy điểm thi = 25 thì = 0 hay = cột điểm x 100Em đã thử search hàm IF trong diễn đàn, nhưng không ứng dụng được vào điều em cần nên em viết ra đây nhờ các anh chị em giúp em với:
VD:
Điểm thi Từ 20-25 Thì kết quả = 0
Điểm thi Từ 25-35 thì kết quả = cột điểm x 100
Điểm thi từ 35-45 thì kết quả = cột điểm x 150
Trên 45 thì kết quả = cột điểm x 200
Ở đây em có 3 cột: 1 Cột điểm, 2 Cột quy đổi, 3 là cột kết quả. Em đang muốn tính tỷ lệ quy đổi thưởng cho học sinh đạt điểm thi.
Đây là ví dụ em đưa ra, các anh chị giúp em. Em cảm ơn ạ.
...nếu SV đạt được mức điểm dưới 25 thì ko được thưởng
...Từ 25 đến dưới 35 điểm, thì mỗi điểm được thưởng 1500
...Từ 35 đến dưới 45 điểm, thì mỗi điểm được thưởng 1750
...Từ 45 đến dưới 55 điểm, thì mỗi điểm được thưởng 2000
Đến đây thì hết rồi, nên chỉ cần mỗi con số 3000 (5)...Từ 55 điểm trở lên, thì mỗi điểm được thưởng 3000
Để em mò cái công thức này thử...Có thể tham khảo công thức này:
=CHOOSE(MIN(MAX(INT((Điểm-25)/10)+2,1),5),0,1500,1750,2000,3000)
Thêm một cách dùng Choose nữa, dài hơn chút, nhưng có lẽ dễ hiểu hơn chút xíu, và nếu có thay đổi/thêm bớt các mức thưởng thì có thể thay/thêm trực tiếp giá trị vào công thức :Em cần tính ở cột thành tiền ạ, nếu các dữ liệu giống như ở bên dưới thì tính thế nào ạ?
Ở đây, nếu SV đạt được mức điểm dưới 25 thì ko được thưởng
Từ 25-35 điểm, thì mỗi điểm được thưởng 1500
Từ 35-45 điểm, thì mỗi điểm được thưởng 1750
45-55 điểm, thì mỗi điểm được thưởng 2000
Từ 55 điểm trở lên, thì mỗi điểm được thưởng 3000
=CHOOSE(((A1>=0)+(A1>=25)+(A1>=35)+(A1>=45)+(A1>=55)),0,1500,1750,2000,3000)
Chưa cần nói đến kết quả đúng hay sai... chỉ nói đến việc phân tích như trên là 1 hướng đi hoàn toàn đúng đắn ---> Với 1 công thức dài, ta phân ra từng đoạn ngắn để nghiên cứuĐể em mò cái công thức này thử...
INT((Điểm-25)/10)+2 : Có phải là lấy số điểm trừ đi 25, xong đem chia cho 10, rối lấy phần nguyên của phép chia này cộng thêm 2?
MAX(INT((Điểm-25)/10)+2, 1) : Cái này có phải đề phòng INT((Điểm-25)/10)+2 mà nhỏ hơn 1 thì lấy số 1? Nghĩa là tất cả những điểm nào mà nhỏ hơn 25 thì đều lấy số 1 hết?
MIN(MAX(INT((Điểm-25)/10)+2, 1), 5) : Cái này thì để nếu mà MAX(INT((Điểm-25)/10)+2, 1) lớn hơn 5 thì chỉ lấy số 5? Nghĩa là tất cả những điểm nào mà lớn hơn hay bằng 55 thì đều lấy số 5 hết?
Như vậy thì MIN(MAX(INT((Điểm-25)/10)+2, 1), 5) sẽ luôn luôn chỉ là... nếu điểm nhỏ hơn 25 thì lấy số 1, nếu điểm nhỏ hơn 35 thì lấy số 2, nếu điểm nhỏ hơn 45 thì lấy số 3, nếu điểm nhỏ hơn 55 thì lấy số 4, còn nếu lớn hơn hay bẳng 55 thì là số 5, và rồi năm con số này ứng với năm giá trị 0, 1500, 1750, 2000, 3000 của hàm CHOOSE?
Hay thiệt! Chưa bao giờ em lại có thể nghĩ ra được cái công thức này!
Cảm ơn anh ndu96081631.
...
Bài này, có thể làm bằng cách khác, kẻ một cái bảng rồi dùng hàm dò tìm chẳng hạn, công thức ngắn hơn nhiều. Tuy nhiên, vì bạn hỏi cách dùng hàm IF, nên tôi chỉ nói đến hàm IF thôi. Mong rằng bạn hiểu và tự làm được.
Cố lên nhé.
F10 = D10*CHOOSE(((B10>0)+(B10>20000)+(B10>40000)+(B10>70000)+(B10>151000)+(B10>300000)),0,1,3,7,15,27)
Nếu bạn không muốn dùng bảng phụ, thì có thể dùng công thức này:
F10 = D10*CHOOSE(((B10>0)+(B10>20000)+(B10>40000)+(B10>70000)+(B10>151000)+(B10>300000)),0,1,3,7,15,27)
Theo công thức này thì tổng điểm của em ko như thế, điểm của em lần lượt là: 1 3 9 20 42 58
Công thức của cột tổng điểm = INT(B10/D10)+E10.
Nhưng nếu trong trường hợp số tiền >300.000 thì công thức lại khác
Em cứ luẩn quẩn ở chỗ này mãi.
=INT(B10/D10)+CHOOSE(((B10>0)+(B10>20000)+(B10>40000)+(B10>70000)+(B10>151000)+(B10>300000)),0,1,3,7,15,27)
Theo mình hiểu thì bạn dùng công thức này (nếu chỉ rành về IF):
F10=IF(B10<20000;0;IF(B10<40000;1;IF(B10<70000;3;IF(B10<150000;7;IF(B10<300000;15;27)))))*$D$10+B10
Bạn sửa công thức lại một chút
Bạn sửa công thức lại một chút
Thế nếu số tiền là 500.000 thì kết quả nào mới đúng, bạn thử cho kết quả đó xem sao?Hè hè, em mừng quá nên vội vàng không check, trường hợp KH của em tiêu 500.000 thì công thức của bác lại không đúng.![]()
Thế nếu số tiền là 500.000 thì kết quả nào mới đúng, bạn thử cho kết quả đó xem sao?
Nếu số tiền là 500.000 thì tổng điểm sẽ là = INT(500000/11000)+27 = 72 điểm.
Đấy, ý em là công thức đó đúng, khi em nhập bất cứ số tiền tiêu nào vào. Số tiền là ngẫu nhiên.
=INT(B10/D10)+CHOOSE(((B10>0)+(B10>20000)+(B10>40000)+(B10> 70000)+(B10>150000)+(B10>300000)),0,1,3,7,15,27)
vậy công thức của mình nó cho ra giá trị bao nhiêu vậy bạn? Chẳng lẽ không phải là 72 sao?
...(B10>15[COLOR=Red]1[/COLOR]000)...
Lỗi chia cho số 0 đó bạn, xem lại cột D, chỗ có dòng có số tiền 500.000, bạn đã gõ số tiền 11.000 tương ứng ở cột D chưa!?Không nó báo cái lỗi thế này này:#DIV/0!
Mà em lại ko biết lỗi này là gì, hic hic.
#DIV/0!
Không phải vậy đâu cop_kh ơi! Ý snow82 khác mà!Bác sửa lại chỗ này tí:
Mã:...(B10>15[COLOR=Red]1[/COLOR]000)....
Không nó báo cái lỗi thế này này:#DIV/0!
Mà em lại ko biết lỗi này là gì, hic hic.
#DIV/0!
Không phải vậy đâu cop_kh ơi! Ý snow82 khác mà!
Mình nhầm! Đúng ra phải là 150.000 theo như ý của bạn cop_kh. Thanks Cop_kh!Phải lớn hơn 150000 chứ không phải là 151000 bác ạ. Theo em hiểu thế đúng không bạn snow82.
Chắc phải kêu trời một cái mới được@ Nốt lần cuối: Ở công thức của bác ca_dafi, nếu nhập số tiền bất kỳ ở cột tiêu tiền, tương ứng với dòng điều kiện lớn hơn 300.000 thì luôn cho ra số đúng, nhưng chỉ cần chuyển xuống dòng khác, kéo công thức từ cột trên xuống thì lại báo lỗi như trên.
=INT(B10/11000)+CHOOSE(((B10>0)+(B10>20000)+(B10>40000)+(B10> 70000)+(B10>150000)+(B10>300000)),0,1,3,7,15,27)