Tính kế hoạch sản xuất dựa theo thứ tự ưu tiên (1 người xem)

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

nguyen_ba_qua

Thành viên mới
Tham gia
25/2/14
Bài viết
14
Được thích
5
Kính gửi các bác,

Bên em cần tính sản xuất theo thứ tự ưu tiên.

Cụ thể là sản phẩm này ưu tiên thứ 1 thì sản xuất hết công suất / ngày cho nó,
Khi sản xuất xong thì tới sản phẩm thứ 2.
Khi xong sản phẩn mà chưa hết ngày thì tính % thời gian của ngày đó còn trống là bao nhiêu * khả năng sản xuất / ngày.

Em có gửi file đính kèm, trong file có sẵn nội dung mong muốn nó sẽ hiển thị ra thế nào.

Em có làm thử bằng các hàm rank/ max, nhưng vẫn chưa ra được.

Mong nhận được giúp đỡ của các bác.
Em cảm ơn các bác nhiều.


(chủ đề này em đã hỏi tại post này trong chuyên đề hỏi đáp rồi, mà chưa thấy bác nào trả lời hết, nên đành tạo chủ đề mới vậy.
)
 

File đính kèm

bài này rất khó, có quá nhiều điều kiện, tôi dùng rất nhiều cái if mà vẫn chưa bao quát hết các đk,,,,,,,,,,,haiz............................
trường hợp trùng ưu tiên (trong vi du của bạn có tới 2 cái ưu tiên 3) thì làm sao?
bạn chỉ có 9 cái ưu tiên hay còn nhiêu hơn nữa?
 
Sau khi xem lại đơn vị tính của bạn, mình sửa 1 dòng lệnh trong nớ, như sau:
PHP:
Option Explicit
Sub KeHoachSXThang()
 Dim Rws As Long, NLNg As Long, TgDH As Long, J As Integer, TL As Double
 Dim Cls As Range, Rng As Range
 
 Rws = [B2].CurrentRegion.Rows.Count
 [A1].Resize(Rws, 5).Sort Key1:=Range("E2"), Order1:=xlAscending, _
    Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
 [f2].Resize(Rws, 35).ClearContents
 For Each Cls In Range([E2], [E2].End(xlDown))
    NLNg = Cls.Offset(, -1).Value
    If Cls = [E2] Then
        TgDH = Cls.Offset(, -2).Value
    Else
        TgDH = Cls.Offset(, -2).Value - Cls.End(xlToRight).Value
    End If
    On Error Resume Next
    Do
        J = J + 1
        If TgDH > NLNg Then
            Cls.Offset(, J).Value = NLNg:   TgDH = TgDH - NLNg
        Else
            Cls.Offset(, J) = TgDH:         TL = TgDH / NLNg
            If Cls.Offset(1).Value <> "" Then _
                Cls.Offset(1, J).Value = Int(Cls.Offset(1, -1) * (1 - TL))  '<=|'
            Exit Do
        End If
    Loop
    If Err > 0 Then
        MsgBox Err:                         Err = 0
    End If
 Next Cls
End Sub
 
Em đã thử copy module VBA của bác vào file của em, mà em sửa xong nó vẫn không chạy bác ạ.
Em có gửi tin nhắn riêng cho bác file của em đó, bác giúp em với nhé.
Cảm ơn bác.
 
Mình chỉ có E2003 thôi; Mở file bạn lên bị báo lỗi nhiều ô do trong E2003 không có những hàm đó.

Tựu chung cột 'Ưu tiên SX" sẽ được sort trước tiên, rồi sau đó muốn làm gì tiếp thì làm.
Thay vì file mẫu trước đây, dữ liệu này ở cột [E] giờ trong file mới nó được dịch chuyển sang cột [P]

. . . . .
 
Mình chỉ có E2003 thôi; Mở file bạn lên bị báo lỗi nhiều ô do trong E2003 không có những hàm đó.

Tựu chung cột 'Ưu tiên SX" sẽ được sort trước tiên, rồi sau đó muốn làm gì tiếp thì làm.
Thay vì file mẫu trước đây, dữ liệu này ở cột [E] giờ trong file mới nó được dịch chuyển sang cột [P]

. . . . .

Xét về file gốc mà bác chia sẻ,
Mình thấy file này chưa đúng lắm.

Khi cần làm 3 sản phẩm cùng lúc, (nhập 3 thứ tự ưu tiên như nhau), thì nó ko chạy cùng lúc, mà vẫn chạy tuần tự.
Bác HYen17 có cao kiến gì không ạ?
 
[thongbao]Mình thấy file này chưa đúng lắm.
Khi cần làm 3 sản phẩm cùng lúc, (nhập 3 thứ tự ưu tiên như nhau), thì nó ko chạy cùng lúc, mà vẫn chạy tuần tự.
[/thongbao]

(/ấn đề chạy cùng 1 lúc này bạn nói ở bài nào vậy?
 
[thongbao]Mình thấy file này chưa đúng lắm.
Khi cần làm 3 sản phẩm cùng lúc, (nhập 3 thứ tự ưu tiên như nhau), thì nó ko chạy cùng lúc, mà vẫn chạy tuần tự.
[/thongbao]

(/ấn đề chạy cùng 1 lúc này bạn nói ở bài nào vậy?
Hic, trong file đầu tiên, dữ liệu ví dụ em có đó bác.
Khi ưu tiên thứ 3 có 3 loại thì nó sẽ làm cả 3.
Đưa công thức vô file em thì em làm được rồi,
Mà giờ còn bị cái này.
Bác giúp em nốt với nhé.

Rất cảm ơn bác.
 
Ở file đầu của bạn, macro đã sắp xếp nhóm ưu tiên 3 thuộc 2 dòng 4 & 5;
Khi đó macro đã fân bổ 2 ngàn ổ cắm C2M vào các ngày L4:N4
& fân bố 1 ngàn ổ cắm C5M vô các ô N5:O5
Như vậy chắc chưa đúng với iêu cầu mới của bạn?
Nếu khác thì bạn dự định sao?
 
Ở file đầu của bạn, macro đã sắp xếp nhóm ưu tiên 3 thuộc 2 dòng 4 & 5;
Khi đó macro đã fân bổ 2 ngàn ổ cắm C2M vào các ngày L4:N4
& fân bố 1 ngàn ổ cắm C5M vô các ô N5:O5
Như vậy chắc chưa đúng với iêu cầu mới của bạn?
Nếu khác thì bạn dự định sao?

Dạ như vậy chưa đúng với yêu cầu ạ.
Chỗ này đúng phải là: Do ưu tiên 2 hết, còn (năng lực / lượng đặt hàng còn lại = ) 50% thời gian của ngày.
Như vậy phải phân bổ 50% thời gian này cho mã ưu tiên tiếp theo.
Mà mã ưu tiên tiếp theo có 2 mã. Nên phân bổ 50% thời gian này cho cả 2 mã luôn.
Khi chạy hết 2 mã này thì đến mã ưu tiên thứ 4.
Nếu hết 1 mã trong 2 mã (có thứ tự ưu tiên như nhau), thì dùng hết khả năng sản xuất để sản xuất hết đơn hàng cho mã ưu tiên còn lại. Rồi mới qua mã ưu tiên thứ 4.
 
Với iêu cầu như vậy, thì chưa thấy điểm sáng nào trong đường hầm hết!

Bạn chờ thêm người khác giúp vậy!
 
Nghe đau lòng quá bác.
Cho em up lên để cao nhân vào giúp đỡ em với nhé.
 

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

Back
Top Bottom