nguyenmauduyen
Thành viên mới

- Tham gia
- 2/6/24
- Bài viết
- 1
- Được thích
- 0
Sai ở chỗ là chỉ gửi ảnh lên thì ai đó muốn giúp cũng không vẽ công thức lên ảnh được.Em không biết sai ở đâu nữa
Đơn giá được lập cho 3 phạm vi --> khối lượng tại D3 cũng phải tách ra làm 3 cho khớp với 3 phạm vi đó --> phạm vi nào * đơn giá đóEm có một bài tập là tính tiền điện nước. Tiền điện nước =tiêu thụ*đơn giá trong đó đơn giá được tính theo phương pháp lũy tiến:
0-40 thì đơn giá 4800
41-60 thì 9200
Trên 60 thì 11000
Em không biết sai ở đâu nữa
View attachment 301323
Tại thớt không chịu theo đúng cái lô gic mà chính mình đã nêu ra ở trên.Cái If ngoài cùng vô nghĩa: chẳng có điều kiện gì mà nhảy vào tính toán (dù tính bằng 2 If khác) rồi hết luôn. Lỗi thiếu tham số
...
Sai ở chỗ người ra đề bài:Em có một bài tập là tính tiền điện nước. Tiền điện nước =tiêu thụ*đơn giá trong đó đơn giá được tính theo phương pháp lũy tiến:
0-40 thì đơn giá 4800
41-60 thì 9200
Trên 60 thì 11000
Em không biết sai ở đâu nữa
Đang giả định là chỉ số để tính tiền không có thập phân. Mà thực tế là vậy mà?Nếu chỉ số điện nước (???) lớn hơn 40 & nhỏ hơn 41 thì khỏi trả tiền!!!
Ý tôi là như vầy:Tại thớt không chịu theo đúng cái lô gic mà chính mình đã nêu ra ở trên.
Hai Min, hai Max, đã thế Min lại còn lồng trong Max, cả Min cả Max lồng trong Choose. Hoa hết cả mắt anh ơi.Công thức chảnh (hù người ra bài) là thế này:
=SUMPRODUCT({4800,9200,11000}*CHOOSE({1,2,3}, MIN(A1, 40), MAX(MIN(A1-40, 20), 0), MAX(A1-60, 0)))
Đương nhiên đồ hoa hòe thì kém hiệu quả.
Đã là công thức chảnh để hù Thầy/Cô thì nó phải rõ là chảnh.Hai Min, hai Max, đã thế Min lại còn lồng trong Max, cả Min cả Max lồng trong Choose. Hoa hết cả mắt anh ơi.
Hàm này em mà lọ mọ thì chắc mấy cái IF dễ lộn tùng phèo lắm.Đã là công thức chảnh để hù Thầy/Cô thì nó phải rõ là chảnh.
Min đầu giới hạn trong vòng 40, Tương đương với IF > 40 thì chỉ lấy tới 40.
Min thứ 2 giới hạn phần nằm giữa 40 và 60 ở vòng 20 (tức 60-40)
Hai cái Max bảo đảm nếu âm thì trả về 0
Choose để chuyển các biểu thức vào Array để cho Sumproduct nhai. Để ý {1,2,3} tương ứng với {4800,9200,11000}
Em góp vui 1 công thức:Hàm chảnh hơn nữa nè:
=CHOOSE(MATCH(A1, {0,40,60}, 1), A1*4800, (A1-40)*9200+40*4800, (A1-60)*11000+20*9200+40*4800)
(những con toán chỉ thuần hằng số, bạn có thể tính trước rồi cho vào. Lười tính trước, hay sợ sai thì cũng có thể gõ hết rồi lợi dụng F9 để tính)
Định nghĩa hàm chảnh:
Hàm né mấy cái IF's lồng nhau cho nên trông có vẻ hiểu biết rộng, nhưng thực tế là rất kém hiệu quả so với dùng hàm IF.
Điển hình: Choose phải tính tất cả các biểu thức trong dãy tham số của nó, IF chỉ tính đến lúc gặp cái True đầu tiên.
Hổng cho chơi mảng!?(sao buồn vậy!Hàm chảnh hơn nữa nè:
=CHOOSE(MATCH(A1, {0,40,60}, 1), A1*4800, (A1-40)*9200+40*4800, (A1-60)*11000+20*9200+40*4800)
(những con toán chỉ thuần hằng số, bạn có thể tính trước rồi cho vào. Lười tính trước, hay sợ sai thì cũng có thể gõ hết rồi lợi dụng F9 để tính)
Định nghĩa hàm chảnh:
Hàm né mấy cái IF's lồng nhau cho nên trông có vẻ hiểu biết rộng, nhưng thực tế là rất kém hiệu quả so với dùng hàm IF.
Điển hình: Choose phải tính tất cả các biểu thức trong dãy tham số của nó, IF chỉ tính đến lúc gặp cái True đầu tiên.
Được, nhưng nó chưa đủ tuổi để "chảnh" vì:Hổng cho chơi mảng!?(sao buồn vậy!) vậy chơi vầy được không anh!?
=A1*4800+MAX(A1-40,)*4400+MAX(A1-60,)*1800
Nếu tôi có nói vậy thì chắc tại ngày xưa tôi lầm. Chưa tét kỹ....
Em có nhớ đợt nào bác nói: choose cũng như If, không có tính hết các tham số của nó, chỉ tính theo giá trị của tham số đâu (biểu thức điều kiện đối với if và biểu thức giá trị đối với choose.)
Dạ bác.Được, nhưng nó chưa đủ tuổi để "chảnh" vì:
1. ngắn quá, cho nên có thể cạnh tranh tốc độ vói IF
2. sử dụng một số hằng phải tính bằng tay trước. (các con số 4400 và 1800 nên cho vào Names để giải thích xuất xứ của chúng.
Ai hổng cho chơi mảng vây? Sumproduct không phải hàm mảng sao?
Điều hổng cho chơi là dùng mấy cái lô gic rõ rệt quá. Ẩn ẩn hiện hiện nó mới vui.
Nếu tôi có nói vậy thì chắc tại ngày xưa tôi lầm. Chưa tét kỹ.
Trừ hàm IF ra, tất cả các hàm khác của Excel đều đòi hỏi tính tất cả tham số. Nếu tham số là range thì chúng nạp theo kiểu ByRef cho nên chỉ cần tính địa chỉ.
Điều kiện này có áp dụng cho 365 - đặc biệt là Lambda - hay không thì hiện tại tôi chưa tìm ra tài liệu cho nên chưa rõ.
3 | =CHOOSE(1,1+2,1/0) | |
5 | =IF(1,2+3,1/0) | |
5 | =IFERROR(2+3,1/0) | |
#DIV/0! | =OR(1<>1,1/0) | |
1 | =IFERROR(1/0,1) | |
1 | =IFNA(1,1/0) | |
3 | =CHOOSE(2,1/0,1+2,1/0) |
Vậy, chơi ghép mảng và tránh If() lồng nè anh:Định nghĩa hàm chảnh:
Hàm né mấy cái IF's lồng nhau cho nên trông có vẻ hiểu biết rộng, nhưng thực tế là rất kém hiệu quả so với dùng hàm IF.
Điển hình: Choose phải tính tất cả các biểu thức trong dãy tham số của nó, IF chỉ tính đến lúc gặp cái True đầu tiên.
Bạn đúng rồi. Có lẽ ngày xưa tôi test trên Mac cho nên có những điều bên trong hơi khác nhau. Lâu quá quên mất rồi.Dạ bác.
Em thì thử bằng chức năng evaluate formula của excel. Em thấy hàm if, choose, iferror, ifna đều là lệnh rẽ nhánh hết ạ.
3=CHOOSE(1,1+2,1/0) 5=IF(1,2+3,1/0) 5=IFERROR(2+3,1/0) #DIV/0!=OR(1<>1,1/0) 1=IFERROR(1/0,1) 1=IFNA(1,1/0) 3=CHOOSE(2,1/0,1+2,1/0)