Xin code gán số lượng theo điều kiện

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

xuannam1911

Thành viên mới
Tham gia
30/9/22
Bài viết
9
Được thích
7
Mình cần code cho việc nhập hàng theo điều kiện cho từng công việc với ưu tiên (* Sequence) theo thứ tự 1,2,3,4,...mình có liệt kê các trường hợp như bên dưới, nhờ mọi người giúp đỡ ạ !
TH1: ở cột số lượng (column "O" ): tổng sl nhập theo mã hàng (column "N") là 2000 , thì code có thể gán theo điều kiện tương ứng mã và thứ tự (*Sequence) theo số lượng không vượt quá số lượng cần nhận ở column "F" -> gán số lượng vào column "H"

TH2: ở cột số lượng (column "O" ): tổng sl nhập theo mã hàng (column "N") là 1200 , thì code có thể gán theo điều kiện tương ứng mã và thứ tự ở (*Sequence) ở column "I" theo số lượng không vượt quá số lượng cần nhận ở column "F", nếu như số lượng nhập không đủ thì chỉ nhập số lượng còn lại và các dòng còn lại = 0 ->gán số lượng vào column "H"

TH3: thứ tự ở column "I" thay đổi không liên tiếp : tổng sl nhập theo mã hàng (column "N") là 800 , thì code có thể gán theo điều kiện tương ứng mã và thứ tự (*Sequence) theo số lượng không vượt quá số lượng cần nhận ở column "F", nếu như số lượng nhập không đủ thì chỉ nhập số lượng còn lại và các dòng còn lại = 0 -> gán số lượng vào column H

1718152178221.png
 

File đính kèm

  • test2.xlsm
    26.7 KB · Đọc: 4
Lần chỉnh sửa cuối:

Chào mọi người, nhờ mọi người hỗ trợ giúp mình cần code gán số lượng theo điều kiện

Mình cần code cho việc nhập hàng theo điều kiện cho từng công việc với ưu tiên (* Sequence)
Tiêu đề bạn chỉ cần ngắn gọn thế này: "Giúp code gán số lượng theo điều kiện"
Còn chào hỏi và cảm ơn nên để vào trong bài viết thì hơn.
 
Lần chỉnh sửa cuối:
Upvote 0
Mất vài ngày mày mò cũng có dc đoạn code, mình gởi lên cho mn cùng xem , có chỗ nào k hay thì mn góp ý thêm cho mình nhé, thanks.


Sub UpdateQuantities()
Dim wsPhieu As Worksheet
Dim wsTheoDoi As Worksheet
Dim lastRowPhieu As Long
Dim lastRowTheoDoi As Long
Dim i As Long, j As Long, y As Long
Dim chain As String
Dim productCode As String
Dim quantity As Double
Dim totalQuantity As Double
Dim remainingQuantity As Double
Dim key As String
Dim dict As Object
Dim priorities As Range
Dim cell As Range
Dim lineValue As String
Dim codeValue As String

' Create a dictionary to store total quantities
Set dict = CreateObject("Scripting.Dictionary")

' Set worksheets
Set wsPhieu = ThisWorkbook.Sheets("PhieuGiaoHang")
Set wsTheoDoi = ThisWorkbook.Sheets("TheoDoiCongViec")

' Find the last rows
lastRowPhieu = wsPhieu.Cells(wsPhieu.Rows.Count, "A").End(xlUp).Row
lastRowTheoDoi = wsTheoDoi.Cells(wsTheoDoi.Rows.Count, "A").End(xlUp).Row

' Loop through each row in PhieuGiaoHang to calculate total quantities
For i = 2 To lastRowPhieu
chain = wsPhieu.Cells(i, 1).Value ' Dây chuy?n ? c?t A
productCode = wsPhieu.Cells(i, 2).Value ' Mã hàng ? c?t B
quantity = wsPhieu.Cells(i, 3).Value ' S? lu?ng giao ? c?t C
key = chain & "|" & productCode ' Create a unique key for dictionary

If dict.exists(key) Then
dict(key) = dict(key) + quantity
Else
dict.Add key, quantity
End If
Next i

' Sort the range by priority
Set priorities = wsTheoDoi.Range("A2:H" & lastRowTheoDoi)
priorities.Sort Key1:=wsTheoDoi.Range("H2"), Order1:=xlAscending, Header:=xlNo

' Loop through each row in TheoDoiCongViec to update quantities by priority
For j = 2 To lastRowTheoDoi
lineValue = wsTheoDoi.Cells(j, 1).Value ' Dây chuy?n
codeValue = wsTheoDoi.Cells(j, 3).Value ' Mã hàng
chain = wsTheoDoi.Cells(j, 1).Value ' Dây chuy?n ? c?t A
productCode = wsTheoDoi.Cells(j, 3).Value ' Mã hàng ? c?t C
remainingQuantity = wsTheoDoi.Cells(j, 6).Value ' S? lu?ng còn l?i ? c?t F
key = chain & "|" & productCode ' Create a unique key for dictionary

If dict.exists(key) Then
totalQuantity = dict(key)

If totalQuantity <= 0 Then
wsTheoDoi.Cells(j, 7).Value = 0
ElseIf remainingQuantity <= totalQuantity Then
wsTheoDoi.Cells(j, 7).Value = remainingQuantity ' S? lu?ng c?n nh?p thêm ? c?t G
dict(key) = totalQuantity - remainingQuantity
Else
wsTheoDoi.Cells(j, 7).Value = totalQuantity ' S? lu?ng c?n nh?p thêm ? c?t G
dict(key) = 0
End If
If Application.WorksheetFunction.CountIfs(wsTheoDoi.Range("A1" & ":" & "A" & j) _
, lineValue, wsTheoDoi.Range("C1" & ":" & "C" & j), codeValue) _
= Application.WorksheetFunction.CountIfs(wsTheoDoi.Range("A:A") _
, lineValue, wsTheoDoi.Range("C:C"), codeValue) Then
wsTheoDoi.Cells(j, 9).Value = totalQuantity - wsTheoDoi.Cells(j, 7)
Else
wsTheoDoi.Cells(j, 9).Value = 0
End If
End If
Next j
End Sub
 

File đính kèm

  • test2.xlsm
    44.9 KB · Đọc: 4
Upvote 0
Web KT
Back
Top Bottom