Cần giúp đỡ viết hàm tự động tính tỷ lệ cắt cho sơ đồ ngành may

  • Thread starter Thread starter ninhhai
  • Ngày gửi Ngày gửi
Liên hệ QC

ninhhai

Thành viên chính thức
Tham gia
16/8/08
Bài viết
64
Được thích
3
Kính chào các anh chị trên diễn đàn.

Em có một file excel dùng để tính tỷ lệ cắt cho sơ đồ và muốn nó có thể tự tính toán tỷ lệ cho từng cỡ trong sơ đồ sao cho số lượng còn lại sau khi cắt sơ đồ đó là ít nhất và tỷ lệ đó phải thoả mãn những điều kiện nhất định như tổng số sản phẩm trong sơ đồ hay số lượng từng cỡ không lớn hơn quy định. Em đã thử dùng công thức và Solver nhưng không hiệu quả.
Em nghĩ là chỉ còn giải pháp là dùng VBA, nhưng tự học thì lâu quá mà em thì không có điều kiện đi học. Mong được các anh chị giúp đỡ.

tb: Em không biết diễn giải thế nào cho chính xác nên đã viết comment vào các ô cần thiết trong file đính kèm.

Em xin cảm ơn.
 

File đính kèm

Mình có biết ít về VBA nhưng không hiểu ý bạn
Bạn hãy nói cách tính B9:F9 như thế nào (ý mình hiểu thuật toán của bài). Bạn trình bày trình tự, chi tiết càng tốt
 
Upvote 0
Cám ơn anh đã quan tâm.
Thuật toán ở đây là: thay đổi các giá trị của các ô từ B9,C9,D9,E9,F9 bằng các số nguyên và không âm ( có thể là từ 0 tới 99) sao cho giá trị của ô H10=sum(B10:F10) là nhỏ nhất.
Điều kiện 1: B9,C9,D9,E9,F9 không lớn hơn giá trị quy định tại ô H4
Điều kiện 2: H9=sum(B9:F9) phải lớn hơn 1 và không lớn hơn giá trị quy định tại ô H3
 
Lần chỉnh sửa cuối:
Upvote 0
Sau mấy ngày lọ mọ em cũng viết được mấy dòng như sau:
Private Sub CommandButton11_Click()
Dim i As Integer
Dim a As Integer
a = 0
For i = 0 To 9 Step 1
a = i
Range("r9").Value = a
Range("E18").Select
ActiveCell.FormulaR1C1 = _
"=IF(OR(R[-1]C="""",(R[-1]C:R[-1]C[9])=0),"""",IF(R[-1]C/MIN(R[-1]C5:R[-1]C14)>=R13C18,R13C18,INT(R[-1]C/LARGE(R[-1]C5:R[-1]C14,COUNT(R[-1]C5:R[-1]C14)-R9C18))))"
Range("E18").Select
Selection.AutoFill Destination:=Range("E18:N18"), Type:=xlFillDefault
Range("E18:N18").Select
Range("R18").Select
ActiveCell.FormulaR1C1 = "=SUM(RC[-13]:RC[-4])"
If ("R18") < ("R12") Then Exit For
Next
End Sub

Nhưng chẳng hiểu tại sao khi nhấn F8 em đã thấy ("R18")<("R12") rồi mà nó lại chẳng chịu Exit For giùm.
Bác nào hảo tâm giúp em với.
Em đính kèm file ở đây, Code nằm trong nút màu xanh cho các bác tiện tham khảo.
 

File đính kèm

Upvote 0
Sau mấy ngày lọ mọ em cũng viết được mấy dòng như sau:


Nhưng chẳng hiểu tại sao khi nhấn F8 em đã thấy ("R18")<("R12") rồi mà nó lại chẳng chịu Exit For giùm.
Bác nào hảo tâm giúp em với.
Em đính kèm file ở đây, Code nằm trong nút màu xanh cho các bác tiện tham khảo.

Bạn kiểm tra lại dòng:
PHP:
If ("R18")<("R12") Then ExitFor
Bạn sửa thành:
PHP:
If Range("R18")< Range("R12") Then ExitFor
Tại file của bạn đưa lên lỗi nên mình không kiểm tra kỹ được.
 
Upvote 0
Được rồi, cảm ơn Tiktiktak rất nhiều. File bị lỗi chắc là do làm trên Excel 2007.
Nhân tiện cho em hỏi thêm, có cách nào bỏ qua bước trung gian, đưa thẳng giá trị i thay cho ô R9C18 trong công thức không?
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom