lỗi hàm quá nhiều (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

anhcuonghate

Thành viên mới
Tham gia
4/11/10
Bài viết
7
Được thích
0
cụ thể là vày, mình lập 1 lọt hàm if + and như hình:

2.jpg
khi mình viết tiếp giá trị "11" về 10 hoạt thấp hơn tiếp thì nó báo lỗi hàm quá nhiều ko viết dc nửa

1.jpg

cò cách nào rút gọn lại và nhanh hơn, pro giúp mình nhé. thank nhìu nhé.
 
Bạn đang dùng excel 2003 phải không? Excel 2003 cho phép tối đa 7 hàm IF lồng nhau. Nếu nâng cấp lên 2007+ sẽ được tối đa 64 IF lồng nhưng đơn giản nhất là hàm IFS của excel 2016+ và 365. Nếu bạn không thích nâng cấp excel thì có thể khắc phục tạm thời bằng cách tạo bảng dò hoặc chia các điều kiện thành 2 nhóm để giảm số IF lồng nhau:
Thay vì công thức =IF(dk1,gt1,IF(dk2,gt2,IF(dk3,gt3,IF(dk4,gt4,IF(dk5,gt5,IF(dk6,gt6,IF(dk7,gt7,IF(dk8,gt8,gt9))))))) trong đó dk là điều kiện, gt là giá trị, công tức đang có 8 IF lồng, bạn sửa thành
=IF(OR(dk1,dk2,dk3,dk4),IF(dk1,gt1,IF(dk2,gt2,IF(dk3,gt3,gt4))),IF(dk5,gt5,IF(dk6,gt6,IF(dk7,gt7,IF(dk8,gt8,gt9)))))
Số IF lồng trong đã giảm từ 8 còn 5
 
Bạn đang dùng excel 2003 phải không? Excel 2003 cho phép tối đa 7 hàm IF lồng nhau. Nếu nâng cấp lên 2007+ sẽ được tối đa 64 IF lồng nhưng đơn giản nhất là hàm IFS của excel 2016+ và 365. Nếu bạn không thích nâng cấp excel thì có thể khắc phục tạm thời bằng cách tạo bảng dò hoặc chia các điều kiện thành 2 nhóm để giảm số IF lồng nhau:
Thay vì công thức =IF(dk1,gt1,IF(dk2,gt2,IF(dk3,gt3,IF(dk4,gt4,IF(dk5,gt5,IF(dk6,gt6,IF(dk7,gt7,IF(dk8,gt8,gt9))))))) trong đó dk là điều kiện, gt là giá trị, công tức đang có 8 IF lồng, bạn sửa thành
=IF(OR(dk1,dk2,dk3,dk4),IF(dk1,gt1,IF(dk2,gt2,IF(dk3,gt3,gt4))),IF(dk5,gt5,IF(dk6,gt6,IF(dk7,gt7,IF(dk8,gt8,gt9)))))
Số IF lồng trong đã giảm từ 8 còn 5
mình đang xài Office 2007 pro ah`, hàm if thì ko báo lỗi, nó báo lỗi ở chổ:

3.jpg
khi mình viết típ nó không nhận giá trị ở hàm MID, mình nghĩ nó quá nhìu _)((*.
 
Nhìn câu thông báo kia giống như bạn đang dùng excel 2003 hoặc 2007+ nhưng mở file xls trong chế độ compatible mode, tốt nhất bạn gửi file lên và công thức muốn nhập dạng text xem sao.
 
File của bạn là định dạng xls, bạn lưu lại dưới dạng xlsx xem còn lỗi không?
 
Bạn đưa công thức lên xem lỗi gì nào?
 
nó không nhận giá trị ở " C6" và "F4"

4.jpg

khi enter nó báo lỗi gióng ở trên

viết tiếp.... nó vẫn vạy.:((
 
Bạn nên copy công thức, đừng chụp hình thế không thử được đâu.
 
Bạn nên copy công thức, đừng chụp hình thế không thử được đâu.

=IF(AND(MID(RIGHT(C6,2),1,2)="15",MID(RIGHT($F$4,7),1,2)<>"0"),1-(MID(RIGHT(C6,7),1,2)),IF(AND(MID(RIGHT(C6,2),1,2)="14",MID(RIGHT(C6,7),1,2)<>"0"),MID(RIGHT($F$4,7),1,2)+13-MID(RIGHT(C6,7),1,2),IF(AND(MID(RIGHT(C6,2),1,2)="13",MID(RIGHT(C6,7),1,2)<>"0"),MID(RIGHT($F$4,7),1,2)+25-MID(RIGHT(C6,7),1,2),IF(AND(MID(RIGHT(C6,2),1,2)="12",MID(RIGHT(C6,7),1,2)<>"0"),MID(RIGHT($F$4,7),1,2)+37-MID(RIGHT(C6,7),1,2),IF(AND(MID(RIGHT(C6,2),1,2)="11",MID(RIGHT(C6,7),1,2)<>"0"),MID(RIGHT($F$4,7),1,2)+49-MID(RIGHT(C6,7),1,2),IF(AND(MID(RIGHT(C6,2),1,2)="10",MID(RIGHT(C6,7),1,2)<>"0"),MID(RIGHT($F$4,7),1,2)+61-MID(RIGHT(C6,7),1,2),0))))))

nó nè anh :D
 
Mình chạy vẫn bình thường. Bạn chú ý khi save as 1 file xls đang mở ở chế độ compatible mode thành xlsx thì file mới sẽ thay thế file cũ, vẫn còn compatible mode. Bạn cần đóng file rồi mở lại file xlsx xem.
 
Mình chạy vẫn bình thường. Bạn chú ý khi save as 1 file xls đang mở ở chế độ compatible mode thành xlsx thì file mới sẽ thay thế file cũ, vẫn còn compatible mode. Bạn cần đóng file rồi mở lại file xlsx xem.
ok. chạy dc rồi. lỗi do định dạng file. thanks bạn. mà cho mình hỏi, vẫn tham chiếu như vạy ,bạn có cách nào làm gọn công thức hơn dc ko. mình tháy nó dài quá, nặng kinh khủng :(
 
Các phần so sánh MID(RIGHT(C6,7),1,2)="0" có thể bỏ đi vì vế trái có 2 ký tự không thể bằng vế phải. MID(RIGHT(C6,2),1,2) có thể rút gọn thành RIGHT(C6,2).
Nếu mình không nhầm thì bạn cần tính số tháng từ ngày ở ô C6 đến ngày ở ô F4, 2 ngày này đang định dạng text, như vậy thì hàm IF đầu tiên khi năm = 2015 khác với các năm còn lại, có thể bạn đang gõ nhầm. Công thức của bạn không quan tâm đến ngày nên có thể coi ngày = 1 và chuyển text ở C6 thành dạng date bằng công thức DATE(RIGHT(C6,4),MID(C6,4,2),1), tương tự với ô F4 (không nên dùng hàm DATEVALUE ở đây vì định dạng ngày tháng các máy khác nhau có thể sai kết quả). So sánh chênh lệch số tháng bằng DATEDIF. Phần công thức từ IF thứ 2 trở đi rút gọn thành
IFERROR(IF(AND(--RIGHT(C6,2)<15,--RIGHT(C6,2)>9),DATEDIF(DATE(RIGHT(C6,4),MID(C6,4,2),1),DATE(RIGHT($F$4,4),MID($F$4,4,2),1),"m"),0),0)
 
ok. chạy dc rồi. lỗi do định dạng file. Cảm ơn bạn. mà cho mình hỏi, vẫn tham chiếu như vạy ,bạn có cách nào làm gọn công thức hơn dc ko. mình tháy nó dài quá, nặng kinh khủng :(
có chứ, làm công thức khác. Nói cái đó làm cái gì đi chứ đọc công thức không hiểu. Tôi viết công thức khác cho
 
ok. chạy dc rồi. lỗi do định dạng file. Cảm ơn bạn. mà cho mình hỏi, vẫn tham chiếu như vạy ,bạn có cách nào làm gọn công thức hơn dc ko. mình tháy nó dài quá, nặng kinh khủng :(
=IF(AND(MID(RIGHT(C6,2),1,2)="15",MID(RIGHT($F$4,7),1,2)<>"0"),1-(MID(RIGHT(C6,7),1,2)),IF(AND(MID(RIGHT(C6,2),1,2)="14",MID(RIGHT(C6,7),1,2)<>"0"),MID(RIGHT($F$4,7),1,2)+13-MID(RIGHT(C6,7),1,2),IF(AND(MID(RIGHT(C6,2),1,2)="13",MID(RIGHT(C6,7),1,2)<>"0"),MID(RIGHT($F$4,7),1,2)+25-MID(RIGHT(C6,7),1,2),IF(AND(MID(RIGHT(C6,2),1,2)="12",MID(RIGHT(C6,7),1,2)<>"0"),MID(RIGHT($F$4,7),1,2)+37-MID(RIGHT(C6,7),1,2),IF(AND(MID(RIGHT(C6,2),1,2)="11",MID(RIGHT(C6,7),1,2)<>"0"),MID(RIGHT($F$4,7),1,2)+49-MID(RIGHT(C6,7),1,2),IF(AND(MID(RIGHT(C6,2),1,2)="10",MID(RIGHT(C6,7),1,2)<>"0"),MID(RIGHT($F$4,7),1,2)+61-MID(RIGHT(C6,7),1,2),0))))))
Thử:
Mã:
I6=DATEDIF(EOMONTH(C6,-1),F4,"m")
Enter
Nếu Excel <2003, dùng:
Mã:
I6=DATEDIF(DATE(YEAR(C6),MONTH(C6),0),F4,"m")
Enter

Thân
 
Web KT

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

Back
Top Bottom