Tìm lỗi sai trong công thức (1 người xem)

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

hoidaica05

Thành viên mới
Tham gia
3/9/10
Bài viết
27
Được thích
1
Kính thưa các cụ,

Em có viết 1 hàm để giúp tính tiền cước vận tải hàng hóa đường bộ theo m3. Tức là trong đơn giá, khi hàng nằm trong khổ dài rộng cao nào sẽ tương ứng số tiền nhân với từng đó khối (cmb).

Hiện tại em gửi lên diễn đàn 1 file em viết, trước giờ vẫn tính chuẩn, nhưng không hiểu sao đợt này khi đưa list hàng dài rộng cao vào nó tự áp sai loại hàng (từ oversize nhảy xuống medium - tiền bị hụt đi).

Vậy em kính mong các cụ thẩm giúp em sai lỗi ở đâu với ạ! Những lỗi sai em đã highlight và ghi chú ra ạ. Bảng so sánh loại hàng cũng ở trong file luôn. Có gì các cụ giúp em với. Em xin cảm ơn nhiều ạ!)(&&@@)(&&@@
 

File đính kèm

Kính thưa các cụ,

Em có viết 1 hàm để giúp tính tiền cước vận tải hàng hóa đường bộ theo m3. Tức là trong đơn giá, khi hàng nằm trong khổ dài rộng cao nào sẽ tương ứng số tiền nhân với từng đó khối (cmb).

Hiện tại em gửi lên diễn đàn 1 file em viết, trước giờ vẫn tính chuẩn, nhưng không hiểu sao đợt này khi đưa list hàng dài rộng cao vào nó tự áp sai loại hàng (từ oversize nhảy xuống medium - tiền bị hụt đi).

Vậy em kính mong các cụ thẩm giúp em sai lỗi ở đâu với ạ! Những lỗi sai em đã highlight và ghi chú ra ạ. Bảng so sánh loại hàng cũng ở trong file luôn. Có gì các cụ giúp em với. Em xin cảm ơn nhiều ạ!)(&&@@)(&&@@
Bạn dùng hàm Or mà nên đương nhiên nó đã thoả mãn điều kiện này rồi
thì kết quả ra Medium Size là đúng mà. b thử gửi lên quy ước các size của b xem nào
 
Kính thưa các cụ,

Em có viết 1 hàm để giúp tính tiền cước vận tải hàng hóa đường bộ theo m3. Tức là trong đơn giá, khi hàng nằm trong khổ dài rộng cao nào sẽ tương ứng số tiền nhân với từng đó khối (cmb).

Hiện tại em gửi lên diễn đàn 1 file em viết, trước giờ vẫn tính chuẩn, nhưng không hiểu sao đợt này khi đưa list hàng dài rộng cao vào nó tự áp sai loại hàng (từ oversize nhảy xuống medium - tiền bị hụt đi).

Vậy em kính mong các cụ thẩm giúp em sai lỗi ở đâu với ạ! Những lỗi sai em đã highlight và ghi chú ra ạ. Bảng so sánh loại hàng cũng ở trong file luôn. Có gì các cụ giúp em với. Em xin cảm ơn nhiều ạ!)(&&@@)(&&@@

Nhìn vào công thức và lỗi sai trong bảng tính mà bạn muốn sửa, mình thấy rằng chỉ cần 1 trong 4 yếu tố: trọng lượng, L, W, H vượt khung cho phép thì "Loại hang" lập tức cũng vượt khung.
Ví dụ: 1 lô hàng có các yếu tố trọng lượng, W, H ở mức Medium size nhưng chỉ lần L lọt qua khung Oversize thì lô hàng đó có loại là Oversize.

Không biết mình hiểu như vậy có đúng không? Nếu đúng thì mình góp cho bạn 1 cách khác để làm bài toán này với công thức đơn giản hơn, bạn xem trong file nhé.
 

File đính kèm

Nhìn vào công thức và lỗi sai trong bảng tính mà bạn muốn sửa, mình thấy rằng chỉ cần 1 trong 4 yếu tố: trọng lượng, L, W, H vượt khung cho phép thì "Loại hang" lập tức cũng vượt khung.
Ví dụ: 1 lô hàng có các yếu tố trọng lượng, W, H ở mức Medium size nhưng chỉ lần L lọt qua khung Oversize thì lô hàng đó có loại là Oversize.

Không biết mình hiểu như vậy có đúng không? Nếu đúng thì mình góp cho bạn 1 cách khác để làm bài toán này với công thức đơn giản hơn, bạn xem trong file nhé.

Vâng như em tính là chuẩn bác ạ. Chỉ cần 1 trong các yêu tố L W H vượt khung là nó sẽ ở khung khác! Thế nên em mới băn khoăn không hiểu mình viết sai công thức ở đâu ạ! :(
 
Quy ước các size em đã gửi ở bảng bên cạnh rồi mà bác ui! :(
 
Nếu chiếu theo bảng mô tả thì chỉ có 3 dòng đầu tiên là nằm trong phạm vi mô tả, các dòng còn lại thì ngoài phạm vi xếp loại.
Ví dụ như dòng 11 thì H>20 là Oversize nhưng W<5m nên nó xếp vào Medium là đúng.

Tóm lại bạn cần định nghĩa lại quy cách xếp loại.
Ngoài ra bạn nên thay hàm OR hay AND đọc rất khó hiểu bằng phép * hoặc + thì dễ đọc hơn nhiều.
Ví dụ AND(DK1, DK2, DK3)=(DK1*DK2*DK3)
OR(DK1, DK2)=DK1+DK2
 
Chào bạn,
Bạn diễn giải điều kiện bằng lời xem có cách nào tóm gọn công thức, chức đọc của bạn đuối luôn á.
Trân trọng
 
Theo ý của bạn chỉ cần 1 trong các yếu tố vượt khung thì chuyển sang size kế tiếp, mình sửa công thức lại như vậy hy vọng đúng ý bạn

=IF((D21>30000)*((F21>20000)+(G21>7500)+(H21>4000));"Super Oversize";IF((D21<30000)*((F21>20000)+(G21>7500)+(H21>4000));"Oversize";IF((D21<=30000)*((F21>12000)+(G21>2500)+(H21>=2400));"Medium size";IF((D21<=30000)*((F21<=12000)+(G21<=2500)+(H21<=2400));"Normal size";"N/A"))))

Xem file đính kèm nhé.
 

File đính kèm

Theo ý của bạn chỉ cần 1 trong các yếu tố vượt khung thì chuyển sang size kế tiếp, mình sửa công thức lại như vậy hy vọng đúng ý bạn

=IF((D21>30000)*((F21>20000)+(G21>7500)+(H21>4000));"Super Oversize";IF((D21<30000)*((F21>20000)+(G21>7500)+(H21>4000));"Oversize";IF((D21<=30000)*((F21>12000)+(G21>2500)+(H21>=2400));"Medium size";IF((D21<=30000)*((F21<=12000)+(G21<=2500)+(H21<=2400));"Normal size";"N/A"))))

Xem file đính kèm nhé.

Dạ em cảm ơn bác, nhưng công thức này vẫn chưa hoàn chỉnh với các thông số khi thay đổi ạ! :) Em thay bất kì thông số nào trong file của em đều nhảy theo ý em, mỗi 4 dòng bị lỗi em đang không hiểu sao lại nhảy như vậy ạ! :(
 
Nhìn vào công thức và lỗi sai trong bảng tính mà bạn muốn sửa, mình thấy rằng chỉ cần 1 trong 4 yếu tố: trọng lượng, L, W, H vượt khung cho phép thì "Loại hang" lập tức cũng vượt khung.
Ví dụ: 1 lô hàng có các yếu tố trọng lượng, W, H ở mức Medium size nhưng chỉ lần L lọt qua khung Oversize thì lô hàng đó có loại là Oversize.

Không biết mình hiểu như vậy có đúng không? Nếu đúng thì mình góp cho bạn 1 cách khác để làm bài toán này với công thức đơn giản hơn, bạn xem trong file nhé.

Dạ công thức của bác em kiểm tra lại là chuẩn như lê duẩn luôn. Nhưng em vẫn chưa hiểu công thức của em sai ở đâu ạ, khi em thay bất kì giá trị nào vượt ngưỡng nó đều nhảy ra theo ngưỡng em đã đặt trong công thức. Chỉ duy nhất 4 dòng bị lỗi là không nhảy chuẩn ạ! :(
 
Dạ em cảm ơn bác, nhưng công thức này vẫn chưa hoàn chỉnh với các thông số khi thay đổi ạ! :) Em thay bất kì thông số nào trong file của em đều nhảy theo ý em, mỗi 4 dòng bị lỗi em đang không hiểu sao lại nhảy như vậy ạ! :(
Bạn có thể cho 1 ví dụ mà công thức mình trả về kết quả sai được không?
 
Em đã viết lại hàm dò giá trị từ super oversize xuống normal size thì chuẩn xác hơn. Nhưng lý do thực sự và còn bị sai hay không thì chưa kiểm chứng được. Em rất mong các bác cao thủ giúp đỡ em ạ! :(
 

File đính kèm

Dạ trong bảng công thức của bác, bác thay 1 giá trị bất kì lên đến ngưỡng Super Oversize sẽ thấy giá trị không thay đổi! :)
Oversize và Super Oversize nó chỉ khác nhau cái trọng lượng 30T thôi. Trên máy mình công thức hoạt động bình thường, chỉ cần thay TL>30T thì nó lên Super oversize ngay. Bạn xem ảnh nhé.
 

File đính kèm

  • phanloai.jpg
    phanloai.jpg
    26.1 KB · Đọc: 21
Oversize và Super Oversize nó chỉ khác nhau cái trọng lượng 30T thôi. Trên máy mình công thức hoạt động bình thường, chỉ cần thay TL>30T thì nó lên Super oversize ngay. Bạn xem ảnh nhé.

Khi hàng vượt quá ngưỡng dài trên 32m, ngang trên 7,5m, cao trên 5m thì sẽ là super oversize. Nhưng công thức của bác không thể hiện điều đó ạ -=.,,-=.,,
 
Khi hàng vượt quá ngưỡng dài trên 32m, ngang trên 7,5m, cao trên 5m thì sẽ là super oversize. Nhưng công thức của bác không thể hiện điều đó ạ -=.,,-=.,,
Vậy thì lỗi ở bảng mô tả bạn đã không đề cập điều đó. Trong bảng mô tả của bạn Super oversize và Oversize kích thước hoàn toàn giống nhau, chỉ khác nhau trọng lượng. Bạn nên cho một bảng mô tả đúng mới có kết quả đúng được. Còn theo bảng mô ta của bạn thì công thức của mình không sai chút nào.
 
Dạ công thức của bác em kiểm tra lại là chuẩn như lê duẩn luôn. Nhưng em vẫn chưa hiểu công thức của em sai ở đâu ạ, khi em thay bất kì giá trị nào vượt ngưỡng nó đều nhảy ra theo ngưỡng em đã đặt trong công thức. Chỉ duy nhất 4 dòng bị lỗi là không nhảy chuẩn ạ! :(
đây, để mình chỉ chỗ sai cho:

[TABLE="width: 796"]
[TR]
[TD]89.51[/TD]
[TD]21700[/TD]
[TD]2750[/TD]
[TD]1500[/TD]
[TD]Medium Size[/TD]
[TD="align: right"]6,176,363[/TD]
[TD]SAI - ĐÚNG PHẢI LÀ OVERSIZE - Hàng vượt 20m)[/TD]
[/TR]
[/TABLE]

Công thức tương ứng với hàng này là:

=IFERROR(IF(AND(F11<=12000,G11<=2500,H11<=2400,D11<=30000),"Normal Size",IF(AND(OR(AND(F11>12000,F11<20000),AND(G11>2500,G11<=5000),AND(H11>=2400,H11<=4000)),D11<=30000),"Medium Size",IF(AND(OR(AND(F11>=20000,F11<=32000),AND(G11>5000,G11<=7500),AND(H11>4000,H11<=5000)),D11<=30000),"Over Size",IF(AND(OR(AND(F11>20000,F11<=32000),AND(G11>5000,G11<=7500),AND(H11>4000,H11<=5000)),AND(D11>30000,D11<=65000)),"Super Oversize","Super Oversize")))),"")

Vấn đề sai nằm ở cái hàm AND tô màu đỏ ý, dịch ra như sau:

Và ( hoặc (L ..., W..., H...), trỌng lượng ...) có nghĩ là 1 trong ba cái L W H vượt khung trọng lượng vượt khung thì tất cả mới vượt khung

để chỉnh lại thì chỉ cần 1 trong 4 "chú đó" vượt khung thì tất cả vượt khung

 
Lần chỉnh sửa cuối:
đây, để mình chỉ chỗ sai cho:

[TABLE="width: 796"]
[TR]
[TD]89.51[/TD]
[TD]21700[/TD]
[TD]2750[/TD]
[TD]1500[/TD]
[TD]Medium Size[/TD]
[TD="align: right"]6,176,363[/TD]
[TD]SAI - ĐÚNG PHẢI LÀ OVERSIZE - Hàng vượt 20m)[/TD]
[/TR]
[/TABLE]

Công thức tương ứng với hàng này là:

=IFERROR(IF(AND(F11<=12000,G11<=2500,H11<=2400,D11<=30000),"Normal Size",IF(AND(OR(AND(F11>12000,F11<20000),AND(G11>2500,G11<=5000),AND(H11>=2400,H11<=4000)),D11<=30000),"Medium Size",IF(AND(OR(AND(F11>=20000,F11<=32000),AND(G11>5000,G11<=7500),AND(H11>4000,H11<=5000)),D11<=30000),"Over Size",IF(AND(OR(AND(F11>20000,F11<=32000),AND(G11>5000,G11<=7500),AND(H11>4000,H11<=5000)),AND(D11>30000,D11<=65000)),"Super Oversize","Super Oversize")))),"")

Vấn đề sai nằm ở cái hàm AND tô màu đỏ ý, dịch ra như sau:

Và ( hoặc (L ..., W..., H...), trỌng lượng ...) có nghĩ là 1 trong ba cái L W H vượt khung trọng lượng vượt khung thì tất cả mới vượt khung

để chỉnh lại thì chỉ cần 1 trong 4 "chú đó" vượt khung thì tất cả vượt khung


Theo ngu ý của em thì không phải thế đâu bác ạ. Vì theo như bảng phân mức tiền cước, với 1 trong 3 giá trị về D - R - C vượt khung VÀ trọng lượng dưới 30T thì sẽ lần lượt là hàng normal - medium - oversize. Chỉ đến khi hàng vượt qua ngưỡng 30T thì sẽ thành super oversize.

Em đã viết công thức ngược lại thì hàm dò rất chính xác. Qua đó em nghĩ có khả năng khi hàm dò thỏa mãn điều kiện nào đó thì mặc định nó sẽ không dò các hàm tiếp theo. Ví dụ khi dò được 1 giá trị thỏa mãn medium mặc định nó sẽ không dò tiếp xem hàm có dò xem kiện hàngthỏa mãn oversize hoặc super oversize hay không.

=IFERROR(IF(AND(OR(AND(F6>20000,F6<=32000),AND(G6>5000,G6<=7500),AND(H6>4000,H6<=5000)),AND(D6>30000,D6<=65000)),"Super Oversize",IF(AND(OR(AND(F6>=20000,F6<=32000),AND(G6>5000,G6<=7500),AND(H6>4000,H6<=5000)),D6<=30000),"Oversize",IF(AND(OR(AND(F6>12000,F6<20000),AND(G6>2500,G6<=5000),AND(H6>=2400,H6<=4000)),D6<=30000),"Medium",IF(AND(F6<=12000,G6<=2500,H6<=2400,D6<=30000),"Normal","Super Oversize")))),"")
 
=IF(AND(H4=3,I4=8)*OR(H4=7,I4=8),"Y","N")
Công thức trên em không biết sai chổ nào các bác giúp em với
ô H4 là 3 hoặc 7 còn ô I4=8 nếu thỏa sẽ là Y còn không thỏa là N
 
Em Đánh trực tiếp h4=3,I4=8 thì nó ra Y
còn em gán công thức ô H4 là =MID(C4,5,1) và ô I4 là =MID(C4,6,1) số ô ở H4=3 và I4=8 nhưng nó vẩn N ,bác giúp em tìm ra sai chổ nào với ạ
 
Em đã giải quyết được vấn đề rồi. Thanks các bác nhiệt tình giúp đỡ! :)}}}}}}}}}}
 
=IF(AND(--MID(C4,6,1)=8,--MID(C4,3,1)<>9,OR(--MID(C4,5,1)=7,--MID(C4,5,1)=3)),"TRUE","FALSE")
cột C4 chử số thứ 6 luôn là 8 (đúng)
cột C4 chử số thứ 5 hoặc là 3 hay 7(đúng)
cột C4 chử số thứ 3 khác 9 (không thỏa không biết em lập công thức này sai chổ nào ,các anh vào giúp em với
 
=IF(AND(--MID(C4,6,1)=8,--MID(C4,3,1)<>9,OR(--MID(C4,5,1)=7,--MID(C4,5,1)=3)),"TRUE","FALSE")
cột C4 chử số thứ 6 luôn là 8 (đúng)
cột C4 chử số thứ 5 hoặc là 3 hay 7(đúng)
cột C4 chử số thứ 3 khác 9 (không thỏa không biết em lập công thức này sai chổ nào ,các anh vào giúp em với
Công thức bạn đúng rồi, không sai chỗ nào cả, mình copy y sì và thử rồi
 
oke anh em lộn ạem phải set cột C4 chử số thứ 4 mới đúng ạ
 

File đính kèm

Lần chỉnh sửa cuối:
oke anh em lộn ạem phải set cột C4 chử số thứ 4 mới đúng ạ
Tôi ko thấy công thức bạn sai chỗ nào cả. Các dòng bôi màu vàng vẫn đúng mà
Mà hôm qua tôi đã chỉnh cho bạn chỗ này rồi sao vẫn để thế
=IF(AND(--MID(C4,6,1)=8,--MID(C4,3,1)<>9,OR(--MID(C4,5,1)=7,--MID(C4,5,1)=3)),"TRUE","FALSE")
 

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

Back
Top Bottom