nejisanta
Thành viên mới
- Tham gia
- 27/2/20
- Bài viết
- 4
- Được thích
- 0
Dear All cho mình hỏi 1 chút với mình có 1 file như này:
Hiện tại mình đang cần là khi chạy code thì phần màu cam sẽ chạy theo điều kiện
+ Khi chạy dòng thứ 1 phần màu xanh
- Cột Q sẽ tính số lượg đóng theo từng pack, cột R sẽ là số pack tăng dần từ 1 đến roundup của cột F chia cho cột H ( Ví dụ như hình cột F là 102 cột H là 20 thì cột R sẽ là có 6 pack từ 1 đến 5 là 20, còn pack cuối cùng sẽ là 102-(5 pack * 20)= 2, pack thứ 6 sẽ là 2)
- Khi chạy xong dòng 1 thì dòng 2 sẽ chạy tiếp ở phần cột màu xanh
mình có viết code như sau, nhưng sai mong mọi người chỉ giúp mình với:
Sub tinhpack()
Dim i, k, lr, lrD, j, pack, p As Long
Dim arr(), arrD(), kq(), c As Integer
With Sheet4
lr = .Range("A" & Rows.Count).End(xlUp).Row
arr = .Range("A6:G" & lr).Value
End With
With Sheet5
lrD = .Range("A" & Rows.Count).End(xlUp).Row
arrD = .Range("A2:F" & lrD).Value
End With
ReDim kq(1 To 10000, 1 To 9)
For i = 1 To UBound(arrD, 1)
For j = 1 To UBound(arr, 1)
If arrD(i, 1) = arr(j, 2) Then
pack = WorksheetFunction.RoundUp(arr(j, 6) / arrD(i, 6), 0)
k = k + 1
For c = 1 To UBound(arr, 2)
'kq(k, c) = arr(j, c)
For d = 1 To WorksheetFunction.RoundUp(arr(j, 6) / arrD(i, 6), 0)
'p = p + 1
If pack > 0 Then
kq(d, 9) = d
kq(d, 8) = arrD(i, 6)
kq(d, c) = arr(j, c)
End If
Next d
Next c
End If
Next j
Next i
Sheet4.Range("J6:R3000").ClearContents
Sheet4.Range("J6").Resize(k, 9) = kq
End Sub
Hiện tại mình đang cần là khi chạy code thì phần màu cam sẽ chạy theo điều kiện
+ Khi chạy dòng thứ 1 phần màu xanh
- Cột Q sẽ tính số lượg đóng theo từng pack, cột R sẽ là số pack tăng dần từ 1 đến roundup của cột F chia cho cột H ( Ví dụ như hình cột F là 102 cột H là 20 thì cột R sẽ là có 6 pack từ 1 đến 5 là 20, còn pack cuối cùng sẽ là 102-(5 pack * 20)= 2, pack thứ 6 sẽ là 2)
- Khi chạy xong dòng 1 thì dòng 2 sẽ chạy tiếp ở phần cột màu xanh
mình có viết code như sau, nhưng sai mong mọi người chỉ giúp mình với:
Sub tinhpack()
Dim i, k, lr, lrD, j, pack, p As Long
Dim arr(), arrD(), kq(), c As Integer
With Sheet4
lr = .Range("A" & Rows.Count).End(xlUp).Row
arr = .Range("A6:G" & lr).Value
End With
With Sheet5
lrD = .Range("A" & Rows.Count).End(xlUp).Row
arrD = .Range("A2:F" & lrD).Value
End With
ReDim kq(1 To 10000, 1 To 9)
For i = 1 To UBound(arrD, 1)
For j = 1 To UBound(arr, 1)
If arrD(i, 1) = arr(j, 2) Then
pack = WorksheetFunction.RoundUp(arr(j, 6) / arrD(i, 6), 0)
k = k + 1
For c = 1 To UBound(arr, 2)
'kq(k, c) = arr(j, c)
For d = 1 To WorksheetFunction.RoundUp(arr(j, 6) / arrD(i, 6), 0)
'p = p + 1
If pack > 0 Then
kq(d, 9) = d
kq(d, 8) = arrD(i, 6)
kq(d, c) = arr(j, c)
End If
Next d
Next c
End If
Next j
Next i
Sheet4.Range("J6:R3000").ClearContents
Sheet4.Range("J6").Resize(k, 9) = kq
End Sub