Bạn nên cho kết quả mẫu cho tường trường hợp và giải thích cách tính ra kết quả.Vâng mấu chốt bài toán là thay đổi dữ liệu theo yêu cầu tỉ lệ % giống như thăng chức trong nhà nước dù làm tốt như nhau thì chỉ được chọn số lượng phần trăm nhất định. Bài toán của em đặt ra cũng vậy. Giả sử tại một trường hợp ta đang xét nếu tổng số lượng các giá trị thỏa mãn điều kiện xét đó lớn hơn tỉ lệ đặt ra thì phần chênh lệch sẽ phải thay đổi. Em nói vậy có dễ hiểu hơn không ?
Em đang liên tưởng đến một hướng đi đó là giả sử xét 100 trường hợp. Sử dụng code để mỗi lần xét giá trị thỏa mãn thì sẽ cộng thêm 1 (mục đích đếm số lượng trường hợp đạt yêu cầu) sau đó đến một giá trị nhất định vượt qua mục tiêu thì tất cả các dữ liệu còn lại phải thay đổi.
With Sheets("Reporst all")
K = 0
sArr = .Range("AE21", .Range("AE21").End(xlDown)).Resize(, 6).Value
For I = 1 To UBound(sArr)
For J = 1 To 6
If sArr(I, J) > 72 Then
dArr(I, J) = 55
ElseIf sArr(I, J) > 60 Then
K = K + 1
dArr(I, J) = sArr(I, J)
...
Option Explicit
Public Sub MA()
Dim sArr(), dArr(1 To 10000, 1 To 10), I As Long, J As Long
Dim K As Long, L As Long
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
With Sheets("Reporst all")
K = 0
L = 0
sArr = .Range("AE21", .Range("AE21").End(xlDown)).Resize(, 6).Value
For I = 1 To UBound(sArr)
For J = 1 To 6
If sArr(I, J) > 72 Then
dArr(I, J) = 55
ElseIf sArr(I, J) > 60 Then
K = K + 1
dArr(I, J) = sArr(I, J)
If K > [J13] Then
dArr(I, J) = 55
End If
ElseIf sArr(I, J) > 55 Then
L = L + 1
dArr(I, J) = sArr(I, J)
If L > [J14] Then
dArr(I, J) = 55
End If
Else: dArr(I, J) = sArr(I, J)
End If
Next J
Next I
End With
[AQ21].Resize(I, 6) = dArr
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
Bạn nên cho kết quả mẫu cho tường trường hợp và giải thích cách tính ra kết quả.