Công thức chọn thuê xe sao cho hiệu quả

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

Emyeuexcel

Thành viên thường trực
Tham gia
9/6/16
Bài viết
299
Được thích
30
Chào các anh chị GPE,

Mình có file kèm.

Ở sheet TruckData:
Dựa vào cột B, cột này là giả sử tổng số lượng theo Kg của đơn hàng cần đặt và dựa vào Bảng tham chiếu thuê xe.
Mình muốn tính toán làm sao để thuê xe cho hiệu quả, tức thỏa điều kiện số xe chở hết số lượng hàng đã đặt và chi phí thấp nhất.

Hiện nay mình đang làm thủ công, nhập tay các cột C, D - G, H cho phương án 1, và Q, R - U, V cho phương án 2 để dò tìm ra kết quả tối ưu.
Nhưng cách này chậm, và không hiệu quả, dễ sai sót.

Ở sheet Đơn hàng: - Nếu mình có đơn hàng cụ thể, có dòng tổng trọng lượng theo Kg.
Từ kết quả sheet truckdata, sẽ biết thuộc trường hợp nào và thuê bao nhiêu xe loại gì, tổng chi phí phải trả bao nhiêu.

Mong anh chị giúp mình công thức tổng quát dựa vào tổng trọng lượng hàng hóa sẽ biết cần thuê xe nào và tiền chi phí là bao nhiêu.
Chân thành cảm ơn các anh chị!
 

File đính kèm

  • Thuê xe tải sao cho hiệu quả.xlsx
    98.7 KB · Đọc: 16
Đây là bài toán knapsack/túi ba lô nhiều túi.
Chỉ có thể giải bằng solver.
 
Chào các anh chị GPE,

Mình có file kèm.

Ở sheet TruckData:
Dựa vào cột B, cột này là giả sử tổng số lượng theo Kg của đơn hàng cần đặt và dựa vào Bảng tham chiếu thuê xe.
Mình muốn tính toán làm sao để thuê xe cho hiệu quả, tức thỏa điều kiện số xe chở hết số lượng hàng đã đặt và chi phí thấp nhất.

Hiện nay mình đang làm thủ công, nhập tay các cột C, D - G, H cho phương án 1, và Q, R - U, V cho phương án 2 để dò tìm ra kết quả tối ưu.
Nhưng cách này chậm, và không hiệu quả, dễ sai sót.

Ở sheet Đơn hàng: - Nếu mình có đơn hàng cụ thể, có dòng tổng trọng lượng theo Kg.
Từ kết quả sheet truckdata, sẽ biết thuộc trường hợp nào và thuê bao nhiêu xe loại gì, tổng chi phí phải trả bao nhiêu.

Mong anh chị giúp mình công thức tổng quát dựa vào tổng trọng lượng hàng hóa sẽ biết cần thuê xe nào và tiền chi phí là bao nhiêu.
Chân thành cảm ơn các anh chị!

Xe chỉ có 3 loại hay nhiều loại?
 
Chào các anh chị GPE,

Mình có file kèm.

Ở sheet TruckData:
Dựa vào cột B, cột này là giả sử tổng số lượng theo Kg của đơn hàng cần đặt và dựa vào Bảng tham chiếu thuê xe.
Mình muốn tính toán làm sao để thuê xe cho hiệu quả, tức thỏa điều kiện số xe chở hết số lượng hàng đã đặt và chi phí thấp nhất.

Hiện nay mình đang làm thủ công, nhập tay các cột C, D - G, H cho phương án 1, và Q, R - U, V cho phương án 2 để dò tìm ra kết quả tối ưu.
Nhưng cách này chậm, và không hiệu quả, dễ sai sót.

Ở sheet Đơn hàng: - Nếu mình có đơn hàng cụ thể, có dòng tổng trọng lượng theo Kg.
Từ kết quả sheet truckdata, sẽ biết thuộc trường hợp nào và thuê bao nhiêu xe loại gì, tổng chi phí phải trả bao nhiêu.

Mong anh chị giúp mình công thức tổng quát dựa vào tổng trọng lượng hàng hóa sẽ biết cần thuê xe nào và tiền chi phí là bao nhiêu.
Chân thành cảm ơn các anh chị!
Mình viết code cho trường hợp có 3 xe như trong file. (Bạn xem có đúng nhu cầu chưa)
- Bước 1: Liệt kê tổ hợp tải trọng tăng dần theo tổ hợp các xe và chọn các xe để có giá tối ưu. (Trong file đang liệt kê đến tải trọng 3400 kg, tải trọng lớn hơn bạn liệt kê tiếp bên dưới)
- Bước 2: Dùng công thức =dvdDetailTruck(tải trọng,Vùng đã liệt kê ở bước 1) để lấy kết quả chọn xe.
- Bước 3: Dùng công thức =dvdCalculateRent(tải trọng,Vùng đã liệt kê ở bước 1) để lấy Chi phí theo kết quả chọn xe.
hinh anh.jpg
 

File đính kèm

  • Thuê xe tải sao cho hiệu quả.xlsm
    73.4 KB · Đọc: 17
Xe chỉ có 3 loại hay nhiều loại?
Chỉ có 3 loại thôi bạn. Mong bạn giúp mình với!
Bài đã được tự động gộp:

Mình viết code cho trường hợp có 3 xe như trong file. (Bạn xem có đúng nhu cầu chưa)
- Bước 1: Liệt kê tổ hợp tải trọng tăng dần theo tổ hợp các xe và chọn các xe để có giá tối ưu. (Trong file đang liệt kê đến tải trọng 3400 kg, tải trọng lớn hơn bạn liệt kê tiếp bên dưới)
- Bước 2: Dùng công thức =dvdDetailTruck(tải trọng,Vùng đã liệt kê ở bước 1) để lấy kết quả chọn xe.
- Bước 3: Dùng công thức =dvdCalculateRent(tải trọng,Vùng đã liệt kê ở bước 1) để lấy Chi phí theo kết quả chọn xe.
View attachment 302698
Chào bạn,
Cái mình cần nhất là tạo ra cái bảng ở sheet TruckData á.
Như mình miêu tả trong bài đăng thì mình đang làm thủ công để tạo tìm ra kết quả cho biết ở cột AA và AB.
Mình giả định đặt hàng tối đa 1 lần 30 tấn (30,000kg) và mình thử làm tay tới 3400kg.
Nên mình mong anh chị có cách nào làm công thức, không làm thủ công mà có được kết quả cột AA và AB sheet TruckData.
Còn khi có được kết quả 2 cột đó thì dùng cách của bạn. Hoặc vloopkup như mình.

Tại mình tham lam, mong muốn cao hơn là làm trực tiếp ra kết quả luôn ở sheet Đơn hàng, khi mình có số lượng đặt hàng thì nó cho kết quả luôn không cần qua trung gian bảng bên sheet TruckData.

Rất mong bạn xem giúp!
 
Lần chỉnh sửa cuối:
@Emyeuexcel
Chạy solver trong file đính kèm
Case No vẫn phải tra bên truck data
 

File đính kèm

  • Thuê xe tải sao cho hiệu quả_1.xlsx
    63.4 KB · Đọc: 12
Lần chỉnh sửa cuối:
@Emyeuexcel
Chạy solver trong file đính kèm
Case No vẫn phải tra bên truck data
Chào bạn,

Solver của bạn quá tuyệt vời! Nhưng vấn đề là làm sao xác định được 3 số ở côt N?
3 ô cột N trong Solver này là chọn mấy chiếc xe loại nào để cho solver cho ra kết quả. Nhưng nó không quan tâm tới trọng lượng hàng mình cần đặt mà mình phải chọn 3 số đó sao cho ô P4 (ô trọng lượng hàng) tiệm cận với trọng lượng hàng mình mong muốn.
Cách này cũng dò kết quả nhưng nhanh hơn mình làm rất nhiều!

Đó cũng chính là bài toán mình phải làm thủ công bên bảng sheet TruckData cho 8 cột C, D - G, H cho phương án 1, và Q, R - U, V cho phương án 2 để dò tìm ra kết quả tối ưu.

Có cách nào mà nó dựa vào tổng số lượng đơn hàng, và nó cho ra ngay cần mấy xe loại nào và chi phí bao nhiêu tiền thuê không nhỉ?

Cảm ơn bạn đã giúp mình!
 
Có cách nào mà nó dựa vào tổng số lượng đơn hàng, và nó cho ra ngay cần mấy xe loại nào và chi phí bao nhiêu tiền thuê không nhỉ?

Cảm ơn bạn đã giúp mình!
Chào bạn,

Bài này khá khó, để đơn giản hoá vấn đề, trong file này chia công thức thành nhiều cột:

1. Tính xe 2 tấn

2. Tính xe 1.5 tấn

3. Tính xe 1 tấn

4. Nối câc xe bằng TEXTJOIN

5. Tính tổng tiền.

Bạn nhập trọng lượng vào cột J, từ J7 trở xuống, xem kết quả số xe trong cột N và số tiền trong cột O.

Bạn kiểm tra kết quả trong file giùm.
 

File đính kèm

  • Thuê xe tải sao cho hiệu quả_1.xlsx
    69.2 KB · Đọc: 8
Chào bạn,

Solver của bạn quá tuyệt vời! Nhưng vấn đề là làm sao xác định được 3 số ở côt N?
...
Không rõ là bạn đã sử dụng solver hay chưa. Bạn làm như dưới đây
1 - Tại N4:N6 nhập tất cả bằng 1
2 - Vào menu data --> tìm & nhấn chọn solver --> nhấn solve --> chờ kết quả & ok
Tại bước 2, nếu không thấy biểu tượng solver, bạn tìm trên diễn đàn hướng dẫn cách cài đặt

---
Khi mở solver lên, bạn sẽ thấy cách cài đặt các ràng buộc đúng như yêu cầu của bạn. Nó sẽ tự tìm giá trị phù hợp cho bạn
 
Chỉ có 3 loại thôi bạn. Mong bạn giúp mình với!
Bài đã được tự động gộp:


Chào bạn,
Cái mình cần nhất là tạo ra cái bảng ở sheet TruckData á.
Như mình miêu tả trong bài đăng thì mình đang làm thủ công để tạo tìm ra kết quả cho biết ở cột AA và AB.
Mình giả định đặt hàng tối đa 1 lần 30 tấn (30,000kg) và mình thử làm tay tới 3400kg.
Nên mình mong anh chị có cách nào làm công thức, không làm thủ công mà có được kết quả cột AA và AB sheet TruckData.
Còn khi có được kết quả 2 cột đó thì dùng cách của bạn. Hoặc vloopkup như mình.

Tại mình tham lam, mong muốn cao hơn là làm trực tiếp ra kết quả luôn ở sheet Đơn hàng, khi mình có số lượng đặt hàng thì nó cho kết quả luôn không cần qua trung gian bảng bên sheet TruckData.

Rất mong bạn xem giúp!
Nếu bạn muốn dùng hàm ra kết quả luôn thì dùng file sau xem nhé.
Lưu ý: Mình đang giả thiết số lượng mỗi loại xe là 20 chiếc, nếu thực tế khác thì bạn có thể điều chỉnh lại (code mình có ghi chú). Nhớ thử và so sánh trước khi áp dụng.

1722257963044.png
 

File đính kèm

  • Thuê xe tải sao cho hiệu quả.xlsm
    75 KB · Đọc: 15
Nếu bạn muốn dùng hàm ra kết quả luôn thì dùng file sau xem nhé.
Lưu ý: Mình đang giả thiết số lượng mỗi loại xe là 20 chiếc, nếu thực tế khác thì bạn có thể điều chỉnh lại (code mình có ghi chú). Nhớ thử và so sánh trước khi áp dụng.

View attachment 302772
cách của bác hay quá, code ngắn gọn mà giải quyết vấn đề gọn gàng
 
Không rõ là bạn đã sử dụng solver hay chưa. Bạn làm như dưới đây
1 - Tại N4:N6 nhập tất cả bằng 1
2 - Vào menu data --> tìm & nhấn chọn solver --> nhấn solve --> chờ kết quả & ok
Tại bước 2, nếu không thấy biểu tượng solver, bạn tìm trên diễn đàn hướng dẫn cách cài đặt

---
Khi mở solver lên, bạn sẽ thấy cách cài đặt các ràng buộc đúng như yêu cầu của bạn. Nó sẽ tự tìm giá trị phù hợp cho bạn
Ôi, cách của bạn quá tuyệt diệu!
Thì ra mình chưa dùng solver bao giờ! Mình xin lỗi vì hồ đồ quá!
Biết ơn bạn!
Thân mến!
Bài đã được tự động gộp:

Nếu bạn muốn dùng hàm ra kết quả luôn thì dùng file sau xem nhé.
Lưu ý: Mình đang giả thiết số lượng mỗi loại xe là 20 chiếc, nếu thực tế khác thì bạn có thể điều chỉnh lại (code mình có ghi chú). Nhớ thử và so sánh trước khi áp dụng.

View attachment 302772
Chào bạn,

Code của bạn quá hay! Đúng yêu cầu nhanh gọn lẹ của mình!
Có 1 điều mình chưa hiểu lắm giả thuyết bạn nói: số lượng mỗi loại xe 20 chiếc là thế nào nhỉ? Nó có liên quan và ảnh hưởng như thế nào tới kết quả? Vì thực tế mình thuê xe bên nhà dịch vụ vận tải, mình không biết số lượng xe mội loại của bên đó.
Mong bạn giải thích rõ hơn giúp mình để có gì mình áp dụng code chạy trơn tru nhất!
Chân thành cảm ơn bạn rất rất nhiều!
 
Lần chỉnh sửa cuối:
Ôi, cách của bạn quá tuyệt diệu!
Thì ra mình chưa dùng solver bao giờ! Mình xin lỗi vì hồ đồ quá!
Biết ơn bạn!
Thân mến!
Bài đã được tự động gộp:


Chào bạn,

Code của bạn quá hay! Đúng yêu cầu nhanh gọn lẹ của mình!
Có 1 điều mình chưa hiểu lắm giả thuyết bạn nói: số lượng mỗi loại xe 20 chiếc là thế nào nhỉ? Nó có liên quan và ảnh hưởng như thế nào tới kết quả? Vì thực tế mình thuê xe bên nhà dịch vụ vận tải, mình không biết số lượng xe mội loại của bên đó.
Mong bạn giải thích rõ hơn giúp mình để có gì mình áp dụng code chạy trơn tru nhất!
Chân thành cảm ơn bạn rất rất nhiều!
Số lượng giả thuyết 20 chiếc xe mỗi loại. Tức là khi bạn cần chở hàng nhiều, theo lý thuyết thì 25 xe 3; 2 xe 2 là tồi ưu. Nhưng vì bên vận tải chỉ có 20 xe 3 nên phải chọn các xe khác để tối ưu theo thực tế chứ không phải là giá trị lý thuyết. Lý thuyết là số lượng xe mỗi loại không giới hạn
 
Chào bạn,

Bài này khá khó, để đơn giản hoá vấn đề, trong file này chia công thức thành nhiều cột:

1. Tính xe 2 tấn

2. Tính xe 1.5 tấn

3. Tính xe 1 tấn

4. Nối câc xe bằng TEXTJOIN

5. Tính tổng tiền.

Bạn nhập trọng lượng vào cột J, từ J7 trở xuống, xem kết quả số xe trong cột N và số tiền trong cột O.

Bạn kiểm tra kết quả trong file giùm.
Chào bạn,

File bạn làm cũng hay. Nhưng sao mình thử xem 1 trường hợp nếu 3500kg thì dùng 3 xe 1,5 tấn chỉ có 7,200,000 vnd, sẽ lợi hơn phương án của bạn là 7,600,000 đ.
Cảm ơn bạn xem giúp!
Bài đã được tự động gộp:

Số lượng giả thuyết 20 chiếc xe mỗi loại. Tức là khi bạn cần chở hàng nhiều, theo lý thuyết thì 25 xe 3; 2 xe 2 là tồi ưu. Nhưng vì bên vận tải chỉ có 20 xe 3 nên phải chọn các xe khác để tối ưu theo thực tế chứ không phải là giá trị lý thuyết. Lý thuyết là số lượng xe mỗi loại không giới hạn
OK, mình hiểu rồi!
Cảm ơn bạn nhiều!
Về logic toán học để giải quyết vấn đề thì bạn làm rất bao quát.
Hi vọng thực tế không đặt hàng nhiều tới mức cần hơn 20 xe cho 1 loại xe nào đó.
 
Chào bạn,

File bạn làm cũng hay. Nhưng sao mình thử xem 1 trường hợp nếu 3500kg thì dùng 3 xe 1,5 tấn chỉ có 7,200,000 vnd, sẽ lợi hơn phương án của bạn là 7,600,000 đ.
Cảm ơn bạn xem giúp!
Bài đã được tự động gộp:


OK, mình hiểu rồi!
Cảm ơn bạn nhiều!
Về logic toán học để giải quyết vấn đề thì bạn làm rất bao quát.
Hi vọng thực tế không đặt hàng nhiều tới mức cần hơn 20 xe cho 1 loại xe nào đó.
Nếu thực tế cần nhiều hơn thì bạn có thể sửa số xe tương ứng cho 3 loại ở vị trí như hình là được. Nếu số lượng xe không giới hạn thì bạn nên sửa số lượng xe trong code lớn hơn số xe bạn cần đặt là được, nhưng không nên quá lớn sẽ làm code chạy chậm. Code trong file có thể điều chỉnh để áp dụng cho trường hợp tổng quát với số lượng loại xe bất kỳ (khác 3 loại như đề bài), khi đó cần khai báo "Bảng tham chiếu thuê xe" để tùy biến cho mọi trường hợp.
1722333143956.png

1722333198123.png
 

File đính kèm

  • 1722333130618.png
    1722333130618.png
    99.3 KB · Đọc: 4
Nếu thực tế cần nhiều hơn thì bạn có thể sửa số xe tương ứng cho 3 loại ở vị trí như hình là được. Nếu số lượng xe không giới hạn thì bạn nên sửa số lượng xe trong code lớn hơn số xe bạn cần đặt là được, nhưng không nên quá lớn sẽ làm code chạy chậm. Code trong file có thể điều chỉnh để áp dụng cho trường hợp tổng quát với số lượng loại xe bất kỳ (khác 3 loại như đề bài), khi đó cần khai báo "Bảng tham chiếu thuê xe" để tùy biến cho mọi trường hợp.
View attachment 302793

View attachment 302794
ok, cảm ơn bạn ghi chi tiết nè!
 
Thật ra sau 2 tấn thì hình như ko còn dùng đến xe 1 tấn nữa, còn cần bao nhiêu xe thì bạn cứ xem thử tối đa đang cần vận chuyển bao nhiêu tấn thì cũng suy ra là cần tối đa bao nhiêu xe mà sửa lại code thôi
 
Phương án dùng công thức. Chi tiết xem file.
Mã:
=LET(n;SEQUENCE(999);a;MID(TEXT(n;"000");{1\2\3};1);c;MMULT(a*{27\24\22};{1;1;1});w;MMULT(a*{17\13\7};{1;1;1})*100;TEXT(MOD(MIN(FILTER(c+n/1000;w>=E6));1)*1000;"000"))
 

File đính kèm

  • Thuê xe tải sao cho hiệu quả.xlsx
    12.3 KB · Đọc: 20
Thật ra sau 2 tấn thì hình như ko còn dùng đến xe 1 tấn nữa, còn cần bao nhiêu xe thì bạn cứ xem thử tối đa đang cần vận chuyển bao nhiêu tấn thì cũng suy ra là cần tối đa bao nhiêu xe mà sửa lại code thôi
OK, cảm ơn bạn đã tư vấn thêm!
Bài đã được tự động gộp:

Phương án dùng công thức. Chi tiết xem file.
Mã:
=LET(n;SEQUENCE(999);a;MID(TEXT(n;"000");{1\2\3};1);c;MMULT(a*{27\24\22};{1;1;1});w;MMULT(a*{17\13\7};{1;1;1})*100;TEXT(MOD(MIN(FILTER(c+n/1000;w>=E6));1)*1000;"000"))
Chào bạn,

Công thức của bạn thật tuyệt diệu!
Dù cột Case No. thì mình không hiểu kết quả của bạn là gì? vì nếu số đó là trường hợp số mấy như sheet truckdata mình qui định thì thấy không đúng. Tuy nhiên Case No. này là 1 chi tiết không quan trọng lắm.
Còn 2 kết quả xe và chi phí thì thấy đúng rồi!
Một lần nữa cảm ơn bạn nhiều! Đã cho mình biết thêm 1 cách hay và nhanh!
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom