Tối ưu cách cắt thanh nhôm để bỏ đầu thừa ít nhất (2 người xem)

Liên hệ QC

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

vitbau86

Thành viên chính thức
Tham gia
9/7/11
Bài viết
58
Được thích
5
Em có một bài toán như sau ( làm trên excel)
Biết một cây nhôm dài 6 mét, tính số cây nhôm cần thiết để cắt ra được các thanh nhôm có kích thước và số lượng như sau, yêu cầu mỗi đoạn nhôm thừa từ mỗi cây không được dài quá 20 phân.
Bảng:
Số thanh Kích thước(mm)
2 1200
2 750
6 650
3 2300
5 1400
1 2500
bác nào có thể viết một chương trình để có thể tính với bất kỳ bảng số liệu giúp em với!
 
Em có một bài toán như sau ( làm trên excel)
Biết một cây nhôm dài 6 mét, tính số cây nhôm cần thiết để cắt ra được các thanh nhôm có kích thước và số lượng như sau, yêu cầu mỗi đoạn nhôm thừa từ mỗi cây không được dài quá 20 phân.
Bảng:
Số thanh Kích thước(mm)
2 1200
2 750
6 650
3 2300
5 1400
1 2500
bác nào có thể viết một chương trình để có thể tính với bất kỳ bảng số liệu giúp em với!

Hôm qua hình như Bạn có đưa file lên một lần, do phạm quy nên bị xóa, đúng không?
Tuy nhiên mình đã kịp tải file và làm theo file đó cho bạn nhưng do bài của bạn bị xóa nên không trả lời được.
Để đạt yêu cầu của bạn rất phức tạp, dù muốn hay không cũng có thể có cây thừa trên 20cm. Muốn tối ưu nhất phải làm bằng thủ công thôi.
File này còn được áp dụng cho việc cắt thép, cắt ống nước trong việc thi công xây dựng.
(Đúng ra bài này phải nằm trong chuyên mục Excel và Kỹ thuật)
 

File đính kèm

Lần chỉnh sửa cuối:
Hôm qua hình như Bạn có đưa file lên một lần, do phạm quy nên bị xóa, đúng không?
Tuy nhiên mình đã kịp tải file và làm theo file đó cho bạn nhưng do bài của bạn bị xóa nên không trả lời được.
Để đạt yêu cầu của bạn rất phức tạp, dù muốn hay không cũng có thể có cây thừa trên 20cm. Muốn tối ưu nhất phải làm bằng thủ công thôi.
File này còn được áp dụng cho việc cắt thép, cắt ống nước trong việc thi công xây dựng.
(Đúng ra bài này phải nằm trong chuyên mục Excel và Kỹ thuật)
bác có thể giải thích cặn kẽ các code của thuật toán này đc ko ^^
 
bác có thể giải thích cặn kẽ các code của thuật toán này đc ko ^^
Lười lắm, Nguyên do:
1. Dài
2. Gần hết thứ 7
3. Không biết đúng ý Bạn không?
Nói vậy chớ bạn thắc mắc câu nào thì hỏi câu đó, còn thuật toán thì mình giải thích cho bạn vào tuần sau.
Trong code có mấy câu lệnh mình ghi tự động, chưa rút gọn nên hơi dài.
Bạn cố gắng tìm hiểu trước!, mình (hoặc người khác) sẽ giải thích sau.
 
đúng là thuật toán mình cần rồi, nhưng bác có thể rút gọn thành 1 hàm không, vì sẽ có rất nhiều loại thanh nhôm khác nhau, em muốn đặt nó chung vào cùng một sheet và em chỉ cần tính ra tổng số cây thôi, phần thừa ko cần thiết phải tính
 
Lần chỉnh sửa cuối:
đúng là thuật toán mình cần rồi, nhưng bác có thể rút gọn thành 1 hàm không, vì sẽ có rất nhiều loại thanh nhôm khác nhau, em muốn đặt nó chung vào cùng một sheet và em chỉ cần tính ra tổng số cây thôi, phần thừa ko cần thiết phải tính
Bạn hãy đưa file ví dụ lên cho dễ hiểu
Mình sẽ tiếp tục hoàn thiện
Còn phải bổ sung nhiều, ví dụ khi cắt số lượng lớn thì phải dồn các cây cắt giống nhau lại.
Việc bạn giới hạn chiều dài thanh thừa là không thể, ví dụ có một loại là 0,8m cắt số lượng lớn, chẳng hạn 100 thanh, ta tận dụng các đầu thừa cắt được 20 thanh, còn lại 80 thanh phải lấy cây mới ra cắt, mỗi cây 6m cắt được 7 thanh = 5,6m còn lại 0,4 m chẳng cắt được cái gì cả, vậy là dư hơn 10 thanh 0,4m cắt vụn ra chơi, hà hà.... Dù tính bằng thủ công cũng không thể nói chi đến máy.
 
Bạn hãy đưa file ví dụ lên cho dễ hiểu
Mình sẽ tiếp tục hoàn thiện
Còn phải bổ sung nhiều, ví dụ khi cắt số lượng lớn thì phải dồn các cây cắt giống nhau lại.
Việc bạn giới hạn chiều dài thanh thừa là không thể, ví dụ có một loại là 0,8m cắt số lượng lớn, chẳng hạn 100 thanh, ta tận dụng các đầu thừa cắt được 20 thanh, còn lại 80 thanh phải lấy cây mới ra cắt, mỗi cây 6m cắt được 7 thanh = 5,6m còn lại 0,4 m chẳng cắt được cái gì cả, vậy là dư hơn 10 thanh 0,4m cắt vụn ra chơi, hà hà.... Dù tính bằng thủ công cũng không thể nói chi đến máy.
híc, bác nói đúng, việc giới hạn chiều dài thanh thừa là không thể, chỉ có thể tối ưu hóa số cây cần dùng thôi. Ví dụ của e như sau: kích thước của các thanh cần phải cắt như bảng sau
 

File đính kèm

bác thanhlanh kiểm tra hộ em xem tại sao với bảng sau, thì chỉ tính ra có 62 cây là sao nhỉ, ít nhất cũng phải 142 cây mà
 

File đính kèm

bác thanhlanh kiểm tra hộ em xem tại sao với bảng sau, thì chỉ tính ra có 62 cây là sao nhỉ, ít nhất cũng phải 142 cây mà
Dữ liệu nhiều mới "lòi" khiếm khuyết ra, đã sửa lại.
Khi nào rãnh nâng cấp nữa (dồn cột lại), dạo này bận quá.
 

File đính kèm

Lần chỉnh sửa cuối:
Dữ liệu nhiều mới "lòi" khiếm khuyết ra, đã sửa lại.
Khi nào rãnh nâng cấp nữa (dồn cột lại), dạo này bận quá.
thanks bác , bác có thể thêm một đoạn code xử lý nếu cột số thanh và chiều dài có các ô trống thì cho giá trị các ô trống = 0 đc ko
^^
 
thanks bác , bác có thể thêm một đoạn code xử lý nếu cột số thanh và chiều dài có các ô trống thì cho giá trị các ô trống = 0 đc ko
^^
Nhiều luc không kiểm soát được dữ liệu vào, có phải là bạn muốn khi dữ liệu không liên tục thì vẫn chạy bình thường? Nếu đúng vậy thì để mình sửa lại và gởi cho bạn sau. Cái đó không khó mà dồn cột lại mới đau đầu đó.
 
đúng rồi bác à ^^ dồn cột lại tốn thời gian cực
 
Bac Thanhlanh ơi, lại nhờ bác tý chút, bây giờ em muốn chuyển nó thành một hàm tự tạo thì làm thế nào vậy -0-/.
 
em làm được rồi bác à ^^
Chế biến lại tí xíu ch[s cần gì vòng lặp
Bac Thanhlanh ơi, lại nhờ bác tý chút, bây giờ em muốn chuyển nó thành một hàm tự tạo thì làm thế nào vậy -0-/.
Tí chút của bạn mình phải làm mấy ngày đêm, với bài này không thể lập hàm được, nhưng vẫn tìm được cách làm khác, bạn kiểm tra lại xem. Mình đang tìm giải pháp sao cho cắt nhôm tiết kiệm hơn nữa.
 

File đính kèm

Lần chỉnh sửa cuối:
Bác ơi, nếu như rVung mình chọn mà có một cột không có giá trị gì hoặc tất cả các giá trị = 0 thì bị lỗi '1004' bác kiểm tra giúp em nhé
 
Em xử lý đc rồi hjhj
 
Lần chỉnh sửa cuối:
chả có gì đâu bác à,em thêm đoạn
" if TongKTcancat =0 then go to Tongcong
end if"
trước vòng lặp, thế là đc ^^
 
À bác ơi, bác xử lý giúp em chỗ này với: Khi bấm vào nút, hiện lên bảng để chọn vùng dữ liệu, bấm cancel thì nó bị lỗi.
 
À bác ơi, bác xử lý giúp em chỗ này với: Khi bấm vào nút, hiện lên bảng để chọn vùng dữ liệu, bấm cancel thì nó bị lỗi.
Không riêng gì nut Cancel mà có thể là:
- Dấu X
- Bấm OK nhưng không có gì
- Chiều dài thanh cần cắt lớn hơn chiều dài một cây
...
Bạn phải thêm điều kiện vào
Ví dụ câu:

Set rVung = Application.InputBox(Prompt:="Chon vung", Title:="GPE", Type:=8)

Bạn thay bằng đoạn:

On Error Resume Next
Application.DisplayAlerts = False
Set rVung = Application.InputBox(Prompt:="Chon vung", Title:="GPE", Type:=8)
On Error GoTo 0
Application.DisplayAlerts = True
If rVung Is Nothing Then Exit Sub
If rVung.Columns.Count <> 2 Then Exit Sub
 

File đính kèm

các bác xem lại nếu như vượt quá số lượng cột thì nó hiện ra lỗi "1004"
Nhờ chỉnh lại giúp
 
bác thanhlanh ơi, bây giờ e có bài toán ngược lại, biết trong kho mình có một số lượng các thanh với kích thước có sẵn, cần cắt 1 số lượng thanh với kích thước theo đơn hàng. đầu tiên là phải kiểm tra xem trong kho có đủ thanh để cắt ko, nếu đủ thì tiến hành cắt và lưu lại các phần thừa vào kho.
 
bác thanhlanh ơi cho em hỏi chút. Bây giờ em có kích thước các thanh nhôm cần cắt, em muốn mua cây nhôm về cắt sao cho chiều dài các thanh nhôm mua về khác nhau là it nhất và cắt ra lượng nhôm bỏ đi là nhỏ nhất. Bác lập giúp em bảng ghép nhôm với.( vì có nhiều profile nhôm khác nhau nếu mua tất cả cùng chiều dài khi cắt phần bỏ đi sẽ rất lớn,mà mình để nhiều chiều dài khác nhau quá thì cũng không được nó ảnh hưởng đến nhiều thứ lắm).
 
Nhiều luc không kiểm soát được dữ liệu vào, có phải là bạn muốn khi dữ liệu không liên tục thì vẫn chạy bình thường? Nếu đúng vậy thì để mình sửa lại và gởi cho bạn sau. Cái đó không khó mà dồn cột lại mới đau đầu đó.
Trong trường hợp số liệu đầu vào là các thanh có chiều dài chuẩn khác nhau thì xử lý ntn bác ?
Cám ơn !
 
thanks bác , bác có thể thêm một đoạn code xử lý nếu cột số thanh và chiều dài có các ô trống thì cho giá trị các ô trống = 0 đc ko
^^
Em thấy các bác lập trình hay quá, Ngưỡng mộ muốn học mà không biết làm thế nào. Bác có thể chỉ cho em cách học hoặc cách tìm được tài liệu để học và làm được như các bác được không ạ?
 
Lần chỉnh sửa cuối:
Cai này có thể áp dụng cho cắt kính và tôn tấm dc ko các bác .

Bác nào biết giúp em với !
 
căng.e mở excel ra nh chưa tìm dk cách làm của các bác.
e cũng cần bài toán để chạy ra số thanh nhôm cần cắt cho trước để tối ưu việc cắt nhôm
 
căng.e mở excel ra nh chưa tìm dk cách làm của các bác.
e cũng cần bài toán để chạy ra số thanh nhôm cần cắt cho trước để tối ưu việc cắt nhôm
Chưa "căng" bằng việc mình viết đúng chính tả nhé. (Đầu câu viết hoa, không viết tắt).

Thứ nữa, mình muốn tiếp chuyện ai thì trích dẫn bài viết của người đó... chứ viết bâng quơ thế chịu, không ai dám tiếp lời bạn.

Cuối cùng, mình mới vô diễn đàn thì mình đọc nội quy đã nhé. http://www.giaiphapexcel.com/diendan/threads/76052
 
Không riêng gì nut Cancel mà có thể là:
- Dấu X
- Bấm OK nhưng không có gì
- Chiều dài thanh cần cắt lớn hơn chiều dài một cây
...
Bạn phải thêm điều kiện vào
Ví dụ câu:

Set rVung = Application.InputBox(Prompt:="Chon vung", Title:="GPE", Type:=8)

Bạn thay bằng đoạn:

On Error Resume Next
Application.DisplayAlerts = False
Set rVung = Application.InputBox(Prompt:="Chon vung", Title:="GPE", Type:=8)
On Error GoTo 0
Application.DisplayAlerts = True
If rVung Is Nothing Then Exit Sub
If rVung.Columns.Count <> 2 Then Exit Sub
Bạn hoàn thiện file này cho mọi người ứng dụng được không? Mình tải về thử dùng nhưng số liệu chạy loạn lên. Nếu có vài dòng hướng dẫn nữa thì tốt. Cám ơn Bạn nhiều
 
Xin lỗi đã làm phiền mọi người, em lại "đào mộ" mọi người giúp em tối ưu hóa việc cắt thanh có tận dụng tồn kho và những thanh dư đưa vào tồn kho để những lần cắt sau có thể tận dụng
 

File đính kèm

bạn dùng chương trình gì để xuất ra được như vậy; mình đang kiểm tra lại file của bạn
Mình muốn kết quả xuất ra để một bên giông file mình đã gửi
bạn dùng chương trình gì để xuất ra được như vậy; mình đang kiểm tra lại file của bạn
Mình muốn kết quả xuất ra để một bên giông file mình đã gửi
Bạn xem #25
 
Mình cũng nghĩ vậy nhưng khi chưa có giải pháp thì pm đó là tối ưu
 
Bạn hãy đưa file ví dụ lên cho dễ hiểu
Mình sẽ tiếp tục hoàn thiện
Còn phải bổ sung nhiều, ví dụ khi cắt số lượng lớn thì phải dồn các cây cắt giống nhau lại.
Việc bạn giới hạn chiều dài thanh thừa là không thể, ví dụ có một loại là 0,8m cắt số lượng lớn, chẳng hạn 100 thanh, ta tận dụng các đầu thừa cắt được 20 thanh, còn lại 80 thanh phải lấy cây mới ra cắt, mỗi cây 6m cắt được 7 thanh = 5,6m còn lại 0,4 m chẳng cắt được cái gì cả, vậy là dư hơn 10 thanh 0,4m cắt vụn ra chơi, hà hà.... Dù tính bằng thủ công cũng không thể nói chi đến máy.
anh ơi. anh có thể cho em số điện thoại của anh không. 0971133202 đó là số của em. em rất cần sự giúp đỡ của anh. mong anh hồi đáp lại tin này của em sớm nhất.
 
Chào bạn, sao mình ko xem được nhỉ
Bài đã được tự động gộp:

BÁC NÀO CÓ FILE CẮT CỤ THỂ HƯỚNG DẪN CHO E CÁI.
mình cũng k xem được, ai có thể gửi qua zalo giúp mình được k. 038335368
Bài đã được tự động gộp:

Không riêng gì nut Cancel mà có thể là:
- Dấu X
- Bấm OK nhưng không có gì
- Chiều dài thanh cần cắt lớn hơn chiều dài một cây
...
Bạn phải thêm điều kiện vào
Ví dụ câu:

Set rVung = Application.InputBox(Prompt:="Chon vung", Title:="GPE", Type:=8)

Bạn thay bằng đoạn:

On Error Resume Next
Application.DisplayAlerts = False
Set rVung = Application.InputBox(Prompt:="Chon vung", Title:="GPE", Type:=8)
On Error GoTo 0
Application.DisplayAlerts = True
If rVung Is Nothing Then Exit Sub
If rVung.Columns.Count <> 2 Then Exit Sub
mình k xem được, ai có thể gửi qua zalo giup mình dc k. 0383352368. thanks m.n
 
Bác nào có thể đổi hàng cho em số thanh và chiều dài với ạ. em cảm ơn
 

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

Back
Top Bottom