Bài Toán ghép gỗ... (help)

Liên hệ QC

tanhung112003

Thành viên mới
Tham gia
12/5/09
Bài viết
8
Được thích
0
Hiện tại mình đang tính toán để lấy liệu thô từ kích thành phẩm . Các kích thước bị liệu của mỗi loại gỗ là khác nhau và thành phẩm cũng có rất nhiều kích thước khác nhâu.Mình cần tính toán và chọn ĐỘ DÀY liệu thô thích hợp.
Mình có file đính kèm trình bày cụ thể bài toán,mong mọi người giúp mình công thức,hoặc hàm tính cho Cell D6 được không ạ?
 

File đính kèm

  • BaiToanghepGo.xlsx
    10.3 KB · Đọc: 31
Đặt 2 names
DL=INDEX(Sheet2!$B$11:$H$17,MATCH(Sheet2!$D$4,Sheet2!$A$11:$A$17,0),0)
N=ROW(Sheet2!$1:$10)
Mã:
D6=INDEX(DL,MATCH(1,MMULT(--TRANSPOSE(IF(MAX(DL)>=$D$3+6,IF(DL>=$D$3*N+(N-1)*5+6,DL-($D$3*N+(N-1)*5+6)),IF(DL*N>=$D$3+6,DL*N-($D$3+6)))=MIN(IF(MAX(DL)>=$D$3+6,IF(DL>=$D$3*N+(N-1)*5+6,DL-($D$3*N+(N-1)*5+6)),IF(DL*N>=$D$3+6,DL*N-($D$3+6))))),--(N>0)),0))
ctrl+shift+enter--=--
 
Hiện tại mình đang tính toán để lấy liệu thô từ kích thành phẩm . Các kích thước bị liệu của mỗi loại gỗ là khác nhau và thành phẩm cũng có rất nhiều kích thước khác nhâu.Mình cần tính toán và chọn ĐỘ DÀY liệu thô thích hợp.
Mình có file đính kèm trình bày cụ thể bài toán,mong mọi người giúp mình công thức,hoặc hàm tính cho Cell D6 được không ạ?
Chào tanhung112003,

Điều chỉnh công thức tính "Bị liệu"
Mã:
=ROUND((SLTP*(TPDay+5)+1)/SLGhep,0)
Công thức tính "Độ dày liệu thô"
Mã:
(CT mảng) =MIN(IF(((BiLieu<=$B$11:$H$17)*($A34=$A$11:$A$17)*$B$11:$H$17)=0,"",(BiLieu<=$B$11:$H$17)*($A34=$A$11:$A$17)*$B$11:$H$17))
nhấn Ctrl+Shift+Enter, rồi fill xuống

Bạn xem thêm file đính kèm để biết chi tiết.

Chúc bạn ngày vui
 

File đính kèm

  • GPE_BaiToanghepGo.xlsx
    16.5 KB · Đọc: 5
Chào tanhung112003,

Điều chỉnh công thức tính "Bị liệu"
Mã:
=ROUND((SLTP*(TPDay+5)+1)/SLGhep,0)
Công thức tính "Độ dày liệu thô"
Mã:
(CT mảng) =MIN(IF(((BiLieu<=$B$11:$H$17)*($A34=$A$11:$A$17)*$B$11:$H$17)=0,"",(BiLieu<=$B$11:$H$17)*($A34=$A$11:$A$17)*$B$11:$H$17))
nhấn Ctrl+Shift+Enter, rồi fill xuống

Bạn xem thêm file đính kèm để biết chi tiết.

Chúc bạn ngày vui
cảm ơn quocgiacan , chỉ lấy được vật liệu có độ dày thấp hơn bảng,thực tế có nhiều chi tiết lớn hơn nhiều buộc mình phải ghép liệu thô lại để bào ra .Xem tiếp file thực tế mình nhập tay rồi giúp mình nhé.thanks
 

File đính kèm

  • BaiToanghepGo.xlsx
    26.9 KB · Đọc: 5
cảm ơn quocgiacan , chỉ lấy được vật liệu có độ dày thấp hơn bảng,thực tế có nhiều chi tiết lớn hơn nhiều buộc mình phải ghép liệu thô lại để bào ra .Xem tiếp file thực tế mình nhập tay rồi giúp mình nhé.thanks
Chào tanhung112003,

Bạn phải đưa thêm thông số vào bảng "2DoorCase": Tên Gỗ, SL thành phẩm, SL Ghép

Sau đó dùng công thức mà tôi đã gửi bài trên là bạn có thể tính được mà không cần điền tay nữa rồi.

Bạn xem file đính kèm coi đúng như ý bạn chưa nghe! hoặc chưa được chỗ nào thì bạn cũng cứ tự nhiên nêu ra cho anh em GPE xem và giúp bạn tiếp.

Chúc bạn ngày thiệt vui.
 

File đính kèm

  • GPE_GhepGo.xlsx
    80.2 KB · Đọc: 13
Chào tanhung112003,

Bạn phải đưa thêm thông số vào bảng "2DoorCase": Tên Gỗ, SL thành phẩm, SL Ghép

Sau đó dùng công thức mà tôi đã gửi bài trên là bạn có thể tính được mà không cần điền tay nữa rồi.

Bạn xem file đính kèm coi đúng như ý bạn chưa nghe! hoặc chưa được chỗ nào thì bạn cũng cứ tự nhiên nêu ra cho anh em GPE xem và giúp bạn tiếp.

Chúc bạn ngày thiệt vui.
Form nhập của bên mình chỉ có thế,tên gỗ mình dựa vào cột F,số lượng thành phẩm ở cột K,số lượng ghép (sau khi tính toán hợp lý) sẽ nhập ở cột O.
Cấu trúc ví như :
'----------------------
Sub BiLieu()
Dim i
Dim A As Variant


For i = 7 To 100
If Range("F" & i) <> "" Then
TenGo = Range("F" & i).Value
Range("N" & i).Value = kho(Range("F" & i).Value, Range("J" & i).Value)
End If
Next
End Sub
'------------------------------------
Function kho(TenGo As String, Doday As Long)
Dim Acacia, Poplar, Rubber, RubberC, Pini, Pine, Oak As Variant
Acacia = Array(16, 25, 30, 35, 40, 45)
Poplar = Array(25, 32, 38, 51)
Rubber = Array(26, 33, 38, 45, 50, 55)
RubberC = Array(25, 33, 35, 38, 45)
Pini = Array(22, 24, 25, 32, 37, 40, 50)
Pine = Array(25, 32, 38, 40, 45)
Oak = Array(25, 32)
'tiep theo 1: Xac dinh Lieu
'tiep theo 2: Khi chong duoc lieu tinh toan lay do day


End Function
'----------------------
 
Lần chỉnh sửa cuối:
Form nhập của bên mình chỉ có thế,tên gỗ mình dựa vào cột F,số lượng thành phẩm ở cột K,số lượng ghép (sau khi tính toán hợp lý) sẽ nhập ở cột O.
Chào tanhung112003,

Đồng ý với tất cả những gì bạn nêu ra, vì "form chính" là bảng để bạn theo dõi, in ra để báo cáo nữa. :)

Ở đây tôi gợi ý bạn thêm các cột phụ, để cụ thể:

1. Thay vì bạn đánh "Tên Gỗ" vào cột F (vừa có tên vừa có kích thước), thì bạn chỉ đánh mỗi cái tên vào cột phụ V, sau quá trình tính toán bị liệu và độ dày cần thiết thì nó sẽ trả kết quả vào cột F tự động gồm "tên gỗ+kích thước" giống ý bạn mà!

2. Cột K là số lương Thành phẩm bạn thực sự sản xuất, còn cột phụ W như tôi gợi ý, tôi không biết theo bạn thì gọi là cột gì nhưng nó là nơi để bạn "định lượng" như ghi chú của bạn tại ô N19: "sẽ cho ra nhiều nhất 3 cây thành phẩm", ĐÓ! thay vì bạn ghi chú bạn đánh số 3 vào ô W19, chỉ vậy thôi!

3. Cột X cũng tương tự như cột W, nhưng là số lượng ghép như ghi chú của bạn tại ô N20: "cần 5 cây ghép lại", bạn đánh số 5 vào X20.

Ba cột phụ này, nếu khi bạn muốn in mà không cho thể hiện trên báo cáo, thì hoặc là bạn "hide" nó đi, hoặc bạn thiết lập vùng in (Printing Area) loại nó ra là xong.

Chúc bạn ngày vui
p/s: Bạn đã xem file kèm tôi gửi chưa??
 
Lần chỉnh sửa cuối:
Chào tanhung112003,

Đồng ý với tất cả những gì bạn nêu ra, vì "form chính" là bảng để bạn theo dõi, in ra để báo cáo nữa. :)

Ở đây tôi gợi ý bạn thêm các cột phụ, để cụ thể:

1. Thay vì bạn đánh "Tên Gỗ" vào cột F (vừa có tên vừa có kích thước), thì bạn chỉ đánh mỗi cái tên vào cột phụ V, sau quá trình tính toán bị liệu và độ dày cần thiết thì nó sẽ trả kết quả vào cột F tự động gồm "tên gỗ+kích thước" giống ý bạn mà!

2. Cột K là số lương Thành phẩm bạn thực sự sản xuất, còn cột phụ W như tôi gợi ý, tôi không biết theo bạn thì gọi là cột gì nhưng nó là nơi để bạn "định lượng" như ghi chú của bạn tại ô N19: "sẽ cho ra nhiều nhất 3 cây thành phẩm", ĐÓ! thay vì bạn ghi chú bạn đánh số 3 vào ô W19, chỉ vậy thôi!

3. Cột X cũng tương tự như cột W, nhưng là số lượng ghép như ghi chú của bạn tại ô N20: "cần 5 cây ghép lại", bạn đánh số 5 vào X20.

Ba cột phụ này, nếu khi bạn muốn in mà không cho thể hiện trên báo cáo, thì hoặc là bạn "hide" nó đi, hoặc bạn thiết lập vùng in (Printing Area) loại nó ra là xong.

Chúc bạn ngày vui
p/s: Bạn đã xem file kèm tôi gửi chưa??
Thanks quocgiacan ,Minh đã xem file bạn gửi .Có cách nào ko cần 3 cột phụ đó không?Một dạng dung sub để tự động điền chẳng hạn.
Cấu trúc ví như :
'----------------------
Sub BiLieu()
Dim i
Dim A As Variant


For i = 7 To 100
If Range("F" & i) <> "" Then
TenGo = Range("F" & i).Value
Range("N" & i).Value = kho(Range("F" & i).Value, Range("J" & i).Value)
End If
Next
End Sub
'------------------------------------
Function kho(TenGo As String, Doday As Long)
Dim Acacia, Poplar, Rubber, RubberC, Pini, Pine, Oak As Variant
Acacia = Array(16, 25, 30, 35, 40, 45)
Poplar = Array(25, 32, 38, 51)
Rubber = Array(26, 33, 38, 45, 50, 55)
RubberC = Array(25, 33, 35, 38, 45)
Pini = Array(22, 24, 25, 32, 37, 40, 50)
Pine = Array(25, 32, 38, 40, 45)
Oak = Array(25, 32)
'tiep theo 1: Xác Định loại gỗ (chọn mãng)
'tiep theo 2: Tính toán lấy độ dày (xác định Vị trí mãng)
'-Dựa vào cột J + 6 được Bị liệu tính toán .
'-Dựa vào cột F ta chọn được mãng (loại gỗ).
'>>>>hàm tính đảm bảo bị liệu lấy có HAO HỤT LÀ ÍT NHẤT ,cách tính để lấy liệu thì có ở sheet2. :).


End Function
'----------------------
 
Lần chỉnh sửa cuối:
Thanks quocgiacan ,Minh đã xem file bạn gửi .Có cách nào ko cần 3 cột phụ đó không?Một dạng dung sub để tự động điền chẳng hạn.
Cấu trúc ví như :
'----------------------
Sub BiLieu()
Dim i
Dim A As Variant


For i = 7 To 100
If Range("F" & i) <> "" Then
TenGo = Range("F" & i).Value
Range("N" & i).Value = kho(Range("F" & i).Value, Range("J" & i).Value)
End If
Next
End Sub
'------------------------------------
Function kho(TenGo As String, Doday As Long)
Dim Acacia, Poplar, Rubber, RubberC, Pini, Pine, Oak As Variant
Acacia = Array(16, 25, 30, 35, 40, 45)
Poplar = Array(25, 32, 38, 51)
Rubber = Array(26, 33, 38, 45, 50, 55)
RubberC = Array(25, 33, 35, 38, 45)
Pini = Array(22, 24, 25, 32, 37, 40, 50)
Pine = Array(25, 32, 38, 40, 45)
Oak = Array(25, 32)
'tiep theo 1: Xac dinh Lieu
'tiep theo 2: Khi chong duoc lieu tinh toan lay do day
'-Dựa vào cột J + 6 được Bị liệu tính toán .
'-Dựa vào cột F ta chọn được mãng (loại gỗ).
'>>>>hàm tính phải đảm bảo bị liệu lấy có HAO HỤT LÀ ÍT NHẤT ,cách tính để lấy liệu thì có ở sheet2. :).


End Function
'----------------------
Chào tanhung112003,

Về VBA thì không phải sở trường của mình, cho nên bạn phải cầu viện đến anh em khác rồi.

Chúc bạn thành công.
 
Cái khó ở chổ là mình TÍNH TOÁN SAO CHO HAO HỤT KHI GHÉP LÀ NHỎ NHẤT,cụ thể ở bài này là tính toán ra được số 3 và 5 trong cột W và Y trong file GPE_GhepGo của quocgiacan đả gửi lên.
 
Web KT
Back
Top Bottom