S
SA_DQ
Thành viên Cố vấn - Webketoan Mentors
Giả dụ chúng ta có 1 bảng dữ liệu & được trích ra phần nhỏ như hình kèm theo:

Nhiệm vụ được đề ra là số tiên ở cột cuối (6) sẽ được phân ra theo 1 trị cố định là 500 triệu cho mỗi dòng riêng biết
& dòng cuối là số dư dưới trị cố định theo qui ước trên (như hình dưới đây)

Để thực hiện việc này ta xài macro sau:

Nhiệm vụ được đề ra là số tiên ở cột cuối (6) sẽ được phân ra theo 1 trị cố định là 500 triệu cho mỗi dòng riêng biết
& dòng cuối là số dư dưới trị cố định theo qui ước trên (như hình dưới đây)

Để thực hiện việc này ta xài macro sau:
PHP:
Sub TaiPhanBo()
Const FB As LongLong = 500000000
Dim Rws As Long, DCK As LongLong, SoDu As LongLong, W As Long, SoDg As Integer, Col As Integer
Dim Dg As Integer 'DCK:= Du Cuôi Kì '
Dim Cls As Range
Sheets("131TK").Select
Rws = Sheets("131TK").UsedRange.Rows.Count
SoFB = Cells(Rws + 9, "H").End(xlUp).Value / FB + Rws
ReDim Arr(1 To SoFB, 1 To 4)
For Each Cls In Range([A5], [A5].End(xlDown))
W = W + 1: ' If W > 7 Then Exit For '
DCK = Cells(Cls.Row, "H").Value: SoDg = Int(DCK / FB)
SoDu = DCK - SoDg * FB
If SoDg < 1 Then
Arr(W, 1) = Cls.Value: Arr(W, 2) = Cls.Offset(, 1).Value
Dg = Cls.Row: Arr(W, 3) = Cells(Dg, "F").Value
Arr(W, 4) = DCK
Else
Arr(W, 1) = Cls.Value: Arr(W, 2) = Cls.Offset(, 1).Value
Dg = Cls.Row: Arr(W, 3) = Cells(Dg, "F").Value
For hg = 1 To SoDg
Arr(W, 4) = FB: W = W + 1
Next hg
If SoDu > 0 Then
Arr(W, 4) = SoDu
Else
W = W - 1
End If
End If
Next Cls
[K5].Resize(W, 4).Value = Arr()
End Sub

