Viết hàm tự tạo để cắt thép

Liên hệ QC

vitbau86

Thành viên chính thức
Tham gia
9/7/11
Bài viết
58
Được thích
5
Chào các anh chị! em muốn viết một hàm tự tạo như sau: cần tính khẩu độ và số lượng thanh thép để cắt ra một kích thước cho trước với số thanh cho trước sao cho không thừa . Chú ý: Khẩu độ thanh thép không đc vượt quá 7m. Cách tính của em là: lấy phần nguyên của phép chia 7000 cho kích thước cần cắt. Tạo vòng lặp lùi , bắt đầu từ phần nguyên đến 1. Khẩu độ cần sẽ = Kích thước cắt x i. Nếu tổng chiều dài cần cắt chia hết cho khẩu độ, thì kết thúc vòng lặp. Nhưng không biết sai ở đâu mà kết quả là 550 mà ko phải là 4950? ai giúp em với?
 

File đính kèm

  • Tinh khau do.xls
    29.5 KB · Đọc: 20
Chào các anh chị! em muốn viết một hàm tự tạo như sau: cần tính khẩu độ và số lượng thanh thép để cắt ra một kích thước cho trước với số thanh cho trước sao cho không thừa . Chú ý: Khẩu độ thanh thép không đc vượt quá 7m. Cách tính của em là: lấy phần nguyên của phép chia 7000 cho kích thước cần cắt. Tạo vòng lặp lùi , bắt đầu từ phần nguyên đến 1. Khẩu độ cần sẽ = Kích thước cắt x i. Nếu tổng chiều dài cần cắt chia hết cho khẩu độ, thì kết thúc vòng lặp. Nhưng không biết sai ở đâu mà kết quả là 550 mà ko phải là 4950? ai giúp em với?
"Rắc rối rắm" quá, hình như là thế này:
Mã:
Function Khaudo(ST, KTcat)
    Dim I As Integer
    Dim J As Long
    Dim K As Long
    Dim L As Long
    Dim M As Long
        J = Int(7000 / KTcat)
        K = ST * KTcat
            For I = J To 1 Step -1
                L = KTcat * I
                M = K Mod L
                If M = 0 Then Khaudo = L: Exit Function
            Next
    Khaudo = "Coc biet cai gi luon,. Hic"
End Function
Có khi nào:
..........Nếu tổng chiều dài cần cắt chia hết cho khẩu độ, thì kết thúc vòng lặp...........
chuyện này hổng xảy ra hông ??????
Thân
 
Upvote 0
mình ko hiiểu cái đoạn
k=m mod l
hàm mod ở đây hình như không giống hàm mod ở worksheet thì phải.
mình làm lại như sau, bạn xem được ko.

Function Khaudo(ST, KTcat As Range)


Dim i As Integer
Khaudo = ST * KTcat
i = 1
Do
Khaudo = ST * KTcat / i
i = i + 1
Loop Until Khaudo < 7000


End Function

mà hình như cái này dùng solver giải được đó, để mình thử mò coi được ko....hì hì
 

File đính kèm

  • Tinh khau do.xls
    31 KB · Đọc: 14
Upvote 0
mình ko hiiểu cái đoạn
k=m mod l
hàm mod ở đây hình như không giống hàm mod ở worksheet thì phải.
mình làm lại như sau, bạn xem được ko.

Function Khaudo(ST, KTcat As Range)


Dim i As Integer
Khaudo = ST * KTcat
i = 1
Do
Khaudo = ST * KTcat / i
i = i + 1
Loop Until Khaudo < 7000


End Function

mà hình như cái này dùng solver giải được đó, để mình thử mò coi được ko....hì hì

cám ơn bác nhé, em chuyển vòng lặp For sang Do và xử lý đc rồi
 
Upvote 0
Web KT
Back
Top Bottom